@ic-reactor/react 3.12.4 → 3.13.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 +410 -44
- package/dist/auth/auth-client-compat.d.ts +122 -0
- package/dist/auth/auth-client-compat.d.ts.map +1 -0
- package/dist/auth/auth-client-compat.js +162 -0
- package/dist/auth/auth-client-compat.js.map +1 -0
- package/dist/auth/authentication-manager.d.ts +287 -5
- package/dist/auth/authentication-manager.d.ts.map +1 -1
- package/dist/auth/authentication-manager.js +920 -150
- package/dist/auth/authentication-manager.js.map +1 -1
- package/dist/auth/createIdentityAttributeHooks.d.ts.map +1 -1
- package/dist/auth/createIdentityAttributeHooks.js +36 -20
- package/dist/auth/createIdentityAttributeHooks.js.map +1 -1
- package/dist/auth/identity-attributes-manager.d.ts +2 -1
- package/dist/auth/identity-attributes-manager.d.ts.map +1 -1
- package/dist/auth/identity-attributes-manager.js +90 -6
- package/dist/auth/identity-attributes-manager.js.map +1 -1
- package/dist/auth/identity-attributes.d.ts.map +1 -1
- package/dist/auth/identity-attributes.js +57 -0
- package/dist/auth/identity-attributes.js.map +1 -1
- package/dist/auth/local-ii-probe.d.ts +12 -1
- package/dist/auth/local-ii-probe.d.ts.map +1 -1
- package/dist/auth/local-ii-probe.js +22 -3
- package/dist/auth/local-ii-probe.js.map +1 -1
- package/dist/auth/types.d.ts +48 -5
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/createActorHooks.d.ts +9 -20
- package/dist/createActorHooks.d.ts.map +1 -1
- package/dist/createActorHooks.js.map +1 -1
- package/dist/createInfiniteQuery.d.ts +51 -10
- package/dist/createInfiniteQuery.d.ts.map +1 -1
- package/dist/createInfiniteQuery.js +39 -15
- package/dist/createInfiniteQuery.js.map +1 -1
- package/dist/createMutation.d.ts +4 -1
- package/dist/createMutation.d.ts.map +1 -1
- package/dist/createMutation.js +121 -84
- package/dist/createMutation.js.map +1 -1
- package/dist/createQuery.d.ts +35 -2
- package/dist/createQuery.d.ts.map +1 -1
- package/dist/createQuery.js +104 -17
- package/dist/createQuery.js.map +1 -1
- package/dist/createReactorProvider.d.ts +158 -0
- package/dist/createReactorProvider.d.ts.map +1 -0
- package/dist/createReactorProvider.js +256 -0
- package/dist/createReactorProvider.js.map +1 -0
- package/dist/createSuspenseInfiniteQuery.d.ts +16 -9
- package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/createSuspenseInfiniteQuery.js +59 -27
- package/dist/createSuspenseInfiniteQuery.js.map +1 -1
- package/dist/createSuspenseQuery.d.ts +23 -2
- package/dist/createSuspenseQuery.d.ts.map +1 -1
- package/dist/createSuspenseQuery.js +68 -21
- package/dist/createSuspenseQuery.js.map +1 -1
- package/dist/defineDisplayReactor.d.ts +43 -0
- package/dist/defineDisplayReactor.d.ts.map +1 -0
- package/dist/defineDisplayReactor.js +42 -0
- package/dist/defineDisplayReactor.js.map +1 -0
- package/dist/defineReactor.d.ts +46 -72
- package/dist/defineReactor.d.ts.map +1 -1
- package/dist/defineReactor.js +11 -176
- package/dist/defineReactor.js.map +1 -1
- package/dist/defineReactorShared.d.ts +84 -0
- package/dist/defineReactorShared.d.ts.map +1 -0
- package/dist/defineReactorShared.js +139 -0
- package/dist/defineReactorShared.js.map +1 -0
- package/dist/hooks/createAuthHooks.d.ts +9 -2
- package/dist/hooks/createAuthHooks.d.ts.map +1 -1
- package/dist/hooks/createAuthHooks.js +184 -24
- package/dist/hooks/createAuthHooks.js.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.d.ts +36 -8
- package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.js +54 -21
- package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorMethod.d.ts +37 -4
- package/dist/hooks/useActorMethod.d.ts.map +1 -1
- package/dist/hooks/useActorMethod.js +201 -57
- package/dist/hooks/useActorMethod.js.map +1 -1
- package/dist/hooks/useActorMutation.d.ts +15 -12
- package/dist/hooks/useActorMutation.d.ts.map +1 -1
- package/dist/hooks/useActorMutation.js +14 -13
- package/dist/hooks/useActorMutation.js.map +1 -1
- package/dist/hooks/useActorQuery.d.ts +17 -4
- package/dist/hooks/useActorQuery.d.ts.map +1 -1
- package/dist/hooks/useActorQuery.js +30 -9
- package/dist/hooks/useActorQuery.js.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +17 -5
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js +37 -17
- package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorSuspenseQuery.d.ts +2 -2
- package/dist/hooks/useActorSuspenseQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseQuery.js +20 -9
- package/dist/hooks/useActorSuspenseQuery.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/ownedAuthentication.d.ts +52 -0
- package/dist/ownedAuthentication.d.ts.map +1 -0
- package/dist/ownedAuthentication.js +49 -0
- package/dist/ownedAuthentication.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +23 -0
- package/dist/server.js.map +1 -0
- package/dist/testing.d.ts +19 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +19 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +428 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/utils.d.ts +159 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +301 -1
- package/dist/utils.js.map +1 -1
- package/dist/validation.d.ts +12 -7
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +34 -15
- package/dist/validation.js.map +1 -1
- package/llms.txt +259 -33
- package/package.json +17 -5
- package/src/auth/auth-client-compat.ts +273 -0
- package/src/auth/authentication-manager.ts +918 -96
- package/src/auth/createIdentityAttributeHooks.ts +47 -21
- package/src/auth/identity-attributes-manager.ts +100 -5
- package/src/auth/identity-attributes.ts +75 -0
- package/src/auth/local-ii-probe.ts +29 -3
- package/src/auth/types.ts +49 -6
- package/src/createActorHooks.ts +50 -42
- package/src/createInfiniteQuery.ts +120 -28
- package/src/createMutation.ts +213 -132
- package/src/createQuery.ts +164 -32
- package/src/createReactorProvider.ts +365 -0
- package/src/createSuspenseInfiniteQuery.ts +93 -43
- package/src/createSuspenseQuery.ts +102 -32
- package/src/defineDisplayReactor.ts +62 -0
- package/src/defineReactor.ts +81 -263
- package/src/defineReactorShared.ts +268 -0
- package/src/hooks/createAuthHooks.ts +210 -28
- package/src/hooks/useActorInfiniteQuery.ts +156 -55
- package/src/hooks/useActorMethod.ts +295 -92
- package/src/hooks/useActorMutation.ts +42 -30
- package/src/hooks/useActorQuery.ts +43 -10
- package/src/hooks/useActorSuspenseInfiniteQuery.ts +110 -54
- package/src/hooks/useActorSuspenseQuery.ts +30 -15
- package/src/index.ts +8 -0
- package/src/ownedAuthentication.ts +81 -0
- package/src/server.ts +23 -0
- package/src/testing.ts +18 -0
- package/src/types.ts +492 -22
- package/src/utils.ts +387 -3
- package/src/validation.ts +43 -19
package/dist/auth/types.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface SignedIdentityAttributes {
|
|
|
10
10
|
*
|
|
11
11
|
* A function (or promise) lets the Internet Identity window open while the
|
|
12
12
|
* nonce is still being fetched, so the popup is opened inside the user gesture
|
|
13
|
-
* instead of after it. `@icp-sdk/auth`
|
|
13
|
+
* instead of after it. Every supported `@icp-sdk/auth` requires the function form, and
|
|
14
14
|
* IC Reactor normalizes whichever of these you pass into that thunk.
|
|
15
15
|
*/
|
|
16
16
|
export type IdentityAttributeNonce = Uint8Array | Promise<Uint8Array> | (() => Uint8Array | Promise<Uint8Array>);
|
|
@@ -60,7 +60,10 @@ export interface AuthClientStorageLike {
|
|
|
60
60
|
set(key: string, value: string | CryptoKeyPair): Promise<void>;
|
|
61
61
|
remove(key: string): Promise<void>;
|
|
62
62
|
}
|
|
63
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Idle-session configuration forwarded to the underlying AuthClient.
|
|
65
|
+
* `@icp-sdk/auth` v8 only; see {@link AuthenticationClientOptions.idleOptions}.
|
|
66
|
+
*/
|
|
64
67
|
export interface AuthClientIdleOptions {
|
|
65
68
|
/** Called once the user has been idle for `idleTimeout` ms. */
|
|
66
69
|
onIdle?: () => unknown;
|
|
@@ -101,19 +104,31 @@ export interface AuthenticationClientOptions {
|
|
|
101
104
|
* @see https://github.com/dfinity/internet-identity/blob/main/docs/internet-identity-spec.adoc
|
|
102
105
|
*/
|
|
103
106
|
derivationOrigin?: string | URL;
|
|
104
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Persistent storage backend. `@icp-sdk/auth` v8 only: v10 drops it with a
|
|
109
|
+
* one-time warning. @default IndexedDB
|
|
110
|
+
*/
|
|
105
111
|
storage?: AuthClientStorageLike;
|
|
106
112
|
/**
|
|
107
113
|
* Session key algorithm. Use `"Ed25519"` when the storage backend cannot
|
|
108
|
-
* hold a `CryptoKey`.
|
|
114
|
+
* hold a `CryptoKey`. `@icp-sdk/auth` v8 only: v10 drops it with a one-time
|
|
115
|
+
* warning. @default "ECDSA"
|
|
109
116
|
*/
|
|
110
117
|
keyType?: AuthClientKeyType;
|
|
111
118
|
/**
|
|
112
119
|
* Idle timeout configuration. Pass `{ disableIdle: true }` to opt out of the
|
|
113
120
|
* default behaviour, which signs the user out and reloads after 10 minutes.
|
|
121
|
+
*
|
|
122
|
+
* `@icp-sdk/auth` v8 only. v10 has no equivalent, so IC Reactor drops it
|
|
123
|
+
* there with a one-time warning: on v10 the identity provider enforces the
|
|
124
|
+
* idle limit, so pass `maxTimeToIdle` to `login()` and set
|
|
125
|
+
* `disableBrowserActivity` instead.
|
|
114
126
|
*/
|
|
115
127
|
idleOptions?: AuthClientIdleOptions;
|
|
116
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* An existing identity to authenticate via delegation. `@icp-sdk/auth` v8
|
|
130
|
+
* only: v10 drops it with a one-time warning.
|
|
131
|
+
*/
|
|
117
132
|
identity?: SignIdentity | PartialIdentity;
|
|
118
133
|
/**
|
|
119
134
|
* How the client talks to the identity provider. `"redirect"` requires
|
|
@@ -121,9 +136,31 @@ export interface AuthenticationClientOptions {
|
|
|
121
136
|
* @default "window"
|
|
122
137
|
*/
|
|
123
138
|
transport?: "window" | "redirect";
|
|
139
|
+
/**
|
|
140
|
+
* Stops a v10 client from watching the page for signs of activity, so only
|
|
141
|
+
* requests keep the session in use.
|
|
142
|
+
*
|
|
143
|
+
* `@icp-sdk/auth` v10 only. v8 has no equivalent, so IC Reactor drops it
|
|
144
|
+
* there with a one-time warning. On v8, `idleOptions` controls idle handling.
|
|
145
|
+
* @default false
|
|
146
|
+
*/
|
|
147
|
+
disableBrowserActivity?: boolean;
|
|
124
148
|
}
|
|
125
149
|
export interface AuthClientSignInOptions {
|
|
150
|
+
/** The longest the delegation may last, in nanoseconds. */
|
|
126
151
|
maxTimeToLive?: bigint;
|
|
152
|
+
/**
|
|
153
|
+
* How long a signed-in user may be idle before the sign-in ends, in
|
|
154
|
+
* nanoseconds.
|
|
155
|
+
*
|
|
156
|
+
* `@icp-sdk/auth` v10 only. v8's sign-in has no idle limit, so IC Reactor
|
|
157
|
+
* drops it there with a one-time warning. On v8, set `idleOptions` instead.
|
|
158
|
+
*/
|
|
159
|
+
maxTimeToIdle?: bigint;
|
|
160
|
+
/**
|
|
161
|
+
* Canisters the delegation is restricted to. `@icp-sdk/auth` v8 only: v10
|
|
162
|
+
* ignores it, and IC Reactor warns when it is set for a v10 client.
|
|
163
|
+
*/
|
|
127
164
|
targets?: Principal[];
|
|
128
165
|
}
|
|
129
166
|
export interface AuthenticationSignInOptions extends AuthClientSignInOptions, AuthenticationClientOptions {
|
|
@@ -139,6 +176,7 @@ export interface RequestIdentityAttributesParameters extends AuthenticationClien
|
|
|
139
176
|
*/
|
|
140
177
|
signIn?: boolean;
|
|
141
178
|
maxTimeToLive?: bigint;
|
|
179
|
+
maxTimeToIdle?: bigint;
|
|
142
180
|
targets?: Principal[];
|
|
143
181
|
}
|
|
144
182
|
export interface RequestOpenIdIdentityAttributesParameters extends Omit<RequestIdentityAttributesParameters, "openIdProvider"> {
|
|
@@ -156,6 +194,11 @@ export interface RequestOpenIdIdentityAttributesParameters extends Omit<RequestI
|
|
|
156
194
|
/**
|
|
157
195
|
* Structural subset of `@icp-sdk/auth`'s `AuthClient` that IC Reactor relies
|
|
158
196
|
* on. Declared locally so `@icp-sdk/auth` stays an optional peer dependency.
|
|
197
|
+
*
|
|
198
|
+
* Every method here is identical across the supported majors (v8 and v10) --
|
|
199
|
+
* only the option objects handed to the constructor and to `signIn` diverge,
|
|
200
|
+
* and `auth-client-compat.ts` translates those. That is what lets one interface
|
|
201
|
+
* describe both.
|
|
159
202
|
*/
|
|
160
203
|
export interface AuthClientLike {
|
|
161
204
|
getIdentity(): Promise<Identity> | Identity;
|
package/dist/auth/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,UAAU,CAAA;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAChC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAE7E,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,EAAE,sBAAsB,CAAA;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,gBAAgB,EAAE,wBAAwB,CAAA;IAC1C,iBAAiB,EAAE,uBAAuB,CAAA;IAC1C,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,KAAK,oCAAoC,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAA;AAE5E;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,+BAA+B,GACzC,oCAAoC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEtD,mDAAmD;AACnD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAAA;AAEnD,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,CAAA;IACxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,34 +19,23 @@
|
|
|
19
19
|
import { Reactor, DisplayReactor, ReactorReturnErr, ReactorReturnOk, ReactorQueryData, BaseActor, FunctionName, ReactorArgs, TransformKey } from "@ic-reactor/core";
|
|
20
20
|
import { UseQueryResult, UseSuspenseQueryResult, UseInfiniteQueryResult, UseSuspenseInfiniteQueryResult, UseMutationResult, InfiniteData } from "@tanstack/react-query";
|
|
21
21
|
import { useActorMethod, UseActorMethodParameters } from "./hooks/useActorMethod.js";
|
|
22
|
-
import
|
|
23
|
-
import { InfiniteQueryConfig } from "./createInfiniteQuery.js";
|
|
22
|
+
import { SkippableInfiniteQueryConfig } from "./createInfiniteQuery.js";
|
|
24
23
|
import { SuspenseInfiniteQueryConfig } from "./createSuspenseInfiniteQuery.js";
|
|
25
|
-
import {
|
|
26
|
-
/**
|
|
27
|
-
* The bound query hooks forward their config to `useActorQuery` and
|
|
28
|
-
* `useActorSuspenseQuery`, which take `callConfig`. `QueryConfig` is shared with
|
|
29
|
-
* `createQuery`, which does not use it, so it is added here and not there.
|
|
30
|
-
*/
|
|
31
|
-
type WithCallConfig<Config> = Config & {
|
|
32
|
-
/** Agent call configuration (canisterId override, effectiveCanisterId, etc.) */
|
|
33
|
-
callConfig?: CallConfig;
|
|
34
|
-
};
|
|
24
|
+
import { SkippableQueryConfig, SuspenseQueryConfig, MutationConfig } from "./types.js";
|
|
35
25
|
export type ActorHooks<Service, Transform extends TransformKey> = {
|
|
36
26
|
useActorQuery: {
|
|
37
|
-
<Method extends FunctionName<Service>>(config:
|
|
38
|
-
<Method extends FunctionName<Service>, TData>(config:
|
|
27
|
+
<Method extends FunctionName<Service>>(config: SkippableQueryConfig<Service, Method, Transform, ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>>): UseQueryResult<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, ReactorReturnErr<Service, Method, Transform>>;
|
|
28
|
+
<Method extends FunctionName<Service>, TData>(config: SkippableQueryConfig<Service, Method, Transform, TData>): UseQueryResult<TData, ReactorReturnErr<Service, Method, Transform>>;
|
|
39
29
|
};
|
|
40
30
|
useActorSuspenseQuery: {
|
|
41
|
-
<Method extends FunctionName<Service>>(config:
|
|
42
|
-
<Method extends FunctionName<Service>, TData>(config:
|
|
31
|
+
<Method extends FunctionName<Service>>(config: SuspenseQueryConfig<Service, Method, Transform, ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>>): UseSuspenseQueryResult<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, ReactorReturnErr<Service, Method, Transform>>;
|
|
32
|
+
<Method extends FunctionName<Service>, TData>(config: SuspenseQueryConfig<Service, Method, Transform, TData>): UseSuspenseQueryResult<TData, ReactorReturnErr<Service, Method, Transform>>;
|
|
43
33
|
};
|
|
44
|
-
useActorInfiniteQuery: <Method extends FunctionName<Service>, TPageParam = unknown
|
|
45
|
-
useActorSuspenseInfiniteQuery: <Method extends FunctionName<Service>, TPageParam = unknown
|
|
46
|
-
useActorMutation: <Method extends FunctionName<Service
|
|
34
|
+
useActorInfiniteQuery: <Method extends FunctionName<Service>, TPageParam = unknown, Selected = InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>>(config: SkippableInfiniteQueryConfig<Service, Method, Transform, TPageParam, Selected>) => UseInfiniteQueryResult<Selected, ReactorReturnErr<Service, Method, Transform>>;
|
|
35
|
+
useActorSuspenseInfiniteQuery: <Method extends FunctionName<Service>, TPageParam = unknown, Selected = InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>>(config: SuspenseInfiniteQueryConfig<Service, Method, Transform, TPageParam, Selected>) => UseSuspenseInfiniteQueryResult<Selected, ReactorReturnErr<Service, Method, Transform>>;
|
|
36
|
+
useActorMutation: <Method extends FunctionName<Service>, TOnMutateResult = unknown>(config: MutationConfig<Service, Method, Transform, TOnMutateResult>) => UseMutationResult<ReactorReturnOk<Service, Method, Transform>, ReactorReturnErr<Service, Method, Transform>, ReactorArgs<Service, Method, Transform>, TOnMutateResult>;
|
|
47
37
|
useActorMethod: <Method extends FunctionName<Service>>(config: Omit<UseActorMethodParameters<Service, Method, Transform>, "reactor">) => ReturnType<typeof useActorMethod<Service, Method, Transform>>;
|
|
48
38
|
};
|
|
49
39
|
export declare function createActorHooks<Service>(reactor: DisplayReactor<Service>): ActorHooks<Service, "display">;
|
|
50
40
|
export declare function createActorHooks<Service = BaseActor, Transform extends TransformKey = "candid">(reactor: Reactor<Service, Transform>): ActorHooks<Service, Transform>;
|
|
51
|
-
export {};
|
|
52
41
|
//# sourceMappingURL=createActorHooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createActorHooks.d.ts","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAM9B,OAAO,EACL,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"createActorHooks.d.ts","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAM9B,OAAO,EACL,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,UAAU,CAAC,OAAO,EAAE,SAAS,SAAS,YAAY,IAAI;IAEhE,aAAa,EAAE;QACb,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACnC,MAAM,EAAE,oBAAoB,CAC1B,OAAO,EACP,MAAM,EACN,SAAS,EACT,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAC9D,GACA,cAAc,CACf,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAC7D,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC7C,CAAA;QACD,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,EAC1C,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,GAC9D,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;KACvE,CAAA;IAED,qBAAqB,EAAE;QACrB,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACnC,MAAM,EAAE,mBAAmB,CACzB,OAAO,EACP,MAAM,EACN,SAAS,EACT,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAC9D,GACA,sBAAsB,CACvB,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAC7D,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC7C,CAAA;QACD,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,EAC1C,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,GAC7D,sBAAsB,CACvB,KAAK,EACL,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC7C,CAAA;KACF,CAAA;IAID,qBAAqB,EAAE,CACrB,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,YAAY,CACrB,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAC7D,UAAU,CACX,EAED,MAAM,EAAE,4BAA4B,CAClC,OAAO,EACP,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,CACT,KACE,sBAAsB,CACzB,QAAQ,EACR,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC7C,CAAA;IAED,6BAA6B,EAAE,CAC7B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,YAAY,CACrB,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAC7D,UAAU,CACX,EAED,MAAM,EAAE,2BAA2B,CACjC,OAAO,EACP,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,CACT,KACE,8BAA8B,CACjC,QAAQ,EACR,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC7C,CAAA;IAED,gBAAgB,EAAE,CAChB,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,eAAe,GAAG,OAAO,EAEzB,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,KAChE,iBAAiB,CACpB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC3C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAG5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACvC,eAAe,CAChB,CAAA;IAED,cAAc,EAAE,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACnD,MAAM,EAAE,IAAI,CACV,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACpD,SAAS,CACV,KACE,UAAU,CAAC,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;CACnE,CAAA;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EACtC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,GAC/B,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAEjC,wBAAgB,gBAAgB,CAC9B,OAAO,GAAG,SAAS,EACnB,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createActorHooks.js","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAA;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EACL,cAAc,GAEf,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"createActorHooks.js","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAA;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EACL,cAAc,GAEf,MAAM,2BAA2B,CAAA;AAyHlC,MAAM,UAAU,gBAAgB,CAC9B,OAAoC;IAEpC,OAAO;QACL,aAAa,EAAE,CAAC,CAAC,MAAW,EAAE,EAAE,CAC9B,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAGrB;QAElB,qBAAqB,EAAE,CAAC,CAAC,MAAW,EAAE,EAAE,CACtC,qBAAqB,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAGrB;QAE1B,qBAAqB,EAAE,CAAC,CAAC,MAAW,EAAE,EAAE,CACtC,qBAAqB,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAGrB;QAE1B,6BAA6B,EAAE,CAAC,CAAC,MAAW,EAAE,EAAE,CAC9C,6BAA6B,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAGrB;QAElC,gBAAgB,EAAE,CAAC,CAAC,MAAW,EAAE,EAAE,CACjC,gBAAgB,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAGrB;QAErB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CACzB,cAAc,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAIlC,CAAC;KACL,CAAA;AACH,CAAC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* const postsQuery = createInfiniteQuery(reactor, {
|
|
9
9
|
* functionName: "get_posts",
|
|
10
10
|
* initialPageParam: 0,
|
|
11
|
-
* getArgs: (cursor) => [{ cursor, limit: 10 }],
|
|
11
|
+
* getArgs: (cursor) => [{ cursor, limit: 10 }] as const,
|
|
12
12
|
* getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
13
13
|
* })
|
|
14
14
|
*
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
* postsQuery.invalidate()
|
|
23
23
|
*/
|
|
24
24
|
import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, ReactorReturnOk, ReactorQueryData, ReactorReturnErr } from "@ic-reactor/core";
|
|
25
|
-
import { QueryKey, InfiniteData, UseInfiniteQueryResult, UseInfiniteQueryOptions, InfiniteQueryObserverOptions } from "@tanstack/react-query";
|
|
25
|
+
import { QueryKey, InfiniteData, UseInfiniteQueryResult, UseInfiniteQueryOptions, InfiniteQueryObserverOptions, SkipToken } from "@tanstack/react-query";
|
|
26
26
|
import { CallConfig } from "@icp-sdk/core/agent";
|
|
27
|
-
import { NoInfer } from "./types.js";
|
|
28
|
-
type InfiniteQueryFactoryFn<Service, Method extends FunctionName<Service>, Transform extends TransformKey, TPageParam, Selected> = {
|
|
27
|
+
import type { NoInfer, QueryCacheControls, QueryFactoryMethods } from "./types.js";
|
|
28
|
+
type InfiniteQueryFactoryFn<Service, Method extends FunctionName<Service>, Transform extends TransformKey, TPageParam, Selected> = QueryFactoryMethods & {
|
|
29
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 */
|
|
@@ -33,7 +33,7 @@ export type InfiniteQueryPageData<Service = BaseActor, Method extends FunctionNa
|
|
|
33
33
|
/** The error type for infinite queries */
|
|
34
34
|
export type InfiniteQueryError<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorReturnErr<Service, Method, Transform>;
|
|
35
35
|
/**
|
|
36
|
-
* Configuration for
|
|
36
|
+
* Configuration for createInfiniteQuery.
|
|
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).
|
|
@@ -71,7 +71,41 @@ export interface InfiniteQueryConfig<Service = BaseActor, Method extends Functio
|
|
|
71
71
|
getPreviousPageParam?: (firstPage: InfiniteQueryPageData<Service, Method, Transform>, allPages: InfiniteQueryPageData<Service, Method, Transform>[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
* Configuration for
|
|
74
|
+
* Configuration for the non-suspense infinite query hook of
|
|
75
|
+
* `createActorHooks` and `defineReactor` (`useActorInfiniteQuery`): an
|
|
76
|
+
* {@link InfiniteQueryConfig} whose `getArgs` may also be TanStack Query's
|
|
77
|
+
* `skipToken`, for a list whose arguments are not known yet.
|
|
78
|
+
*
|
|
79
|
+
* A skipped list does not fetch. It has an entry of its own under its method
|
|
80
|
+
* and config `queryKey` (at the canister and agent `callConfig` names), which
|
|
81
|
+
* no call's key shares, so it shows no data until the arguments arrive. Once
|
|
82
|
+
* `getArgs` is a function, the list is keyed and fetched as usual. Its
|
|
83
|
+
* `refetch()` has nothing to run: TanStack Query answers it with a "Missing
|
|
84
|
+
* queryFn" error. `useActorSuspenseInfiniteQuery` does not take `skipToken`.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* import { skipToken } from "@ic-reactor/react"
|
|
89
|
+
*
|
|
90
|
+
* const { data } = useActorInfiniteQuery({
|
|
91
|
+
* functionName: "get_transactions",
|
|
92
|
+
* getArgs: account
|
|
93
|
+
* ? (start: bigint) => [{ account, start, length: 20n }]
|
|
94
|
+
* : skipToken,
|
|
95
|
+
* initialPageParam: 0n,
|
|
96
|
+
* getNextPageParam: (lastPage) => lastPage.next[0],
|
|
97
|
+
* })
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export interface SkippableInfiniteQueryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<InfiniteQueryPageData<Service, Method, Transform>, TPageParam>> extends Omit<InfiniteQueryConfig<Service, Method, Transform, TPageParam, Selected>, "getArgs"> {
|
|
101
|
+
/**
|
|
102
|
+
* Function to get args from page parameter, or `skipToken` while the args
|
|
103
|
+
* are not known: the list then waits without fetching.
|
|
104
|
+
*/
|
|
105
|
+
getArgs: ((pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>) | SkipToken;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Configuration for createInfiniteQueryFactory (without getArgs; provided at call time).
|
|
75
109
|
*/
|
|
76
110
|
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">;
|
|
77
111
|
/**
|
|
@@ -84,14 +118,18 @@ export interface UseInfiniteQueryWithSelect<TPageData, TPageParam, Selected = In
|
|
|
84
118
|
}): UseInfiniteQueryResult<TFinal, TError>;
|
|
85
119
|
}
|
|
86
120
|
/**
|
|
87
|
-
* Result from
|
|
121
|
+
* Result from createInfiniteQuery
|
|
122
|
+
*
|
|
123
|
+
* `cancel()`, `reset()` and `optimisticUpdate()` act on the whole page set:
|
|
124
|
+
* `optimisticUpdate` gets and returns the raw `InfiniteData`, `{ pages,
|
|
125
|
+
* pageParams }`.
|
|
88
126
|
*
|
|
89
127
|
* @template TPageData - The raw page data type
|
|
90
128
|
* @template TPageParam - The page parameter type
|
|
91
129
|
* @template Selected - The type after select transformation
|
|
92
130
|
* @template TError - The error type
|
|
93
131
|
*/
|
|
94
|
-
export interface InfiniteQueryResult<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> {
|
|
132
|
+
export interface InfiniteQueryResult<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> extends QueryCacheControls<InfiniteData<TPageData, TPageParam>> {
|
|
95
133
|
/** Fetch first page in loader (uses ensureQueryData for cache-first) */
|
|
96
134
|
fetch: () => Promise<Selected>;
|
|
97
135
|
/** React hook for components - supports pagination */
|
|
@@ -122,10 +160,10 @@ export declare function createInfiniteQuery<Service, Transform extends Transform
|
|
|
122
160
|
*
|
|
123
161
|
* @param reactor - The Reactor instance
|
|
124
162
|
* @param config - Infinite query configuration (without getArgs)
|
|
125
|
-
* @returns A function that accepts getArgs and returns an
|
|
163
|
+
* @returns A function that accepts getArgs and returns an InfiniteQueryResult
|
|
126
164
|
*
|
|
127
165
|
* @example
|
|
128
|
-
* const getPostsQuery =
|
|
166
|
+
* const getPostsQuery = createInfiniteQueryFactory(reactor, {
|
|
129
167
|
* functionName: "get_posts",
|
|
130
168
|
* initialPageParam: 0,
|
|
131
169
|
* getKeyArgs: (args) => {
|
|
@@ -138,6 +176,9 @@ export declare function createInfiniteQuery<Service, Transform extends Transform
|
|
|
138
176
|
* // Create query with specific args builder
|
|
139
177
|
* const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
|
|
140
178
|
* const { data, fetchNextPage } = userPostsQuery.useInfiniteQuery()
|
|
179
|
+
*
|
|
180
|
+
* // Every list this factory made, whatever its args and pages
|
|
181
|
+
* await getPostsQuery.invalidate()
|
|
141
182
|
*/
|
|
142
183
|
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>;
|
|
143
184
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,QAAQ,EAER,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EAGvB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* const postsQuery = createInfiniteQuery(reactor, {
|
|
9
9
|
* functionName: "get_posts",
|
|
10
10
|
* initialPageParam: 0,
|
|
11
|
-
* getArgs: (cursor) => [{ cursor, limit: 10 }],
|
|
11
|
+
* getArgs: (cursor) => [{ cursor, limit: 10 }] as const,
|
|
12
12
|
* getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
13
13
|
* })
|
|
14
14
|
*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { useMemo } from "react";
|
|
25
25
|
import { useInfiniteQuery, } from "@tanstack/react-query";
|
|
26
|
-
import { buildChainedSelect, mergeFactoryQueryKey, normalizeQueryData, } from "./utils.js";
|
|
26
|
+
import { buildChainedSelect, callConfigForKey, mergeFactoryQueryKey, normalizeQueryData, pickFetchOptions, queryCacheControls, retryOption, useMountQueryClient, withQueryFactoryMethods, } from "./utils.js";
|
|
27
27
|
// ============================================================================
|
|
28
28
|
// Internal Implementation
|
|
29
29
|
// ============================================================================
|
|
@@ -53,17 +53,25 @@ const createInfiniteQueryImpl = (reactor, config) => {
|
|
|
53
53
|
const result = await reactor.callMethod({
|
|
54
54
|
functionName,
|
|
55
55
|
args,
|
|
56
|
-
callConfig,
|
|
56
|
+
callConfig: callConfigForKey(context.queryKey, callConfig),
|
|
57
57
|
});
|
|
58
58
|
return normalizeQueryData(result);
|
|
59
59
|
};
|
|
60
60
|
// Get infinite query options for fetchInfiniteQuery
|
|
61
|
-
const getInfiniteQueryOptions = () =>
|
|
62
|
-
queryKey
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
const getInfiniteQueryOptions = () => {
|
|
62
|
+
const queryKey = getQueryKey();
|
|
63
|
+
return {
|
|
64
|
+
// How the query function runs, shared with the hook; see
|
|
65
|
+
// pickFetchOptions. An update method's `retry` defaults as
|
|
66
|
+
// `Reactor.getQueryRetry` says.
|
|
67
|
+
...pickFetchOptions(rest),
|
|
68
|
+
...retryOption(rest.retry, reactor.getQueryRetry(functionName, queryKey)),
|
|
69
|
+
queryKey,
|
|
70
|
+
queryFn,
|
|
71
|
+
initialPageParam,
|
|
72
|
+
getNextPageParam,
|
|
73
|
+
};
|
|
74
|
+
};
|
|
67
75
|
// Fetch function for loaders (cache-first, fetches first page)
|
|
68
76
|
const fetch = async () => {
|
|
69
77
|
// Check cache first
|
|
@@ -71,18 +79,22 @@ const createInfiniteQueryImpl = (reactor, config) => {
|
|
|
71
79
|
if (cachedData !== undefined) {
|
|
72
80
|
return select ? select(cachedData) : cachedData;
|
|
73
81
|
}
|
|
74
|
-
// Fetch if not in cache
|
|
75
|
-
|
|
82
|
+
// Fetch if not in cache. A sign-in or sign-out while it is in flight
|
|
83
|
+
// cancels it; it then runs again for the new identity rather than
|
|
84
|
+
// rejecting with TanStack's CancelledError, as `reactor.fetchQuery` does.
|
|
85
|
+
const result = await reactor.clientManager.fetchAcrossIdentitySwitch(() => reactor.queryClient.fetchInfiniteQuery(getInfiniteQueryOptions()));
|
|
76
86
|
// Result is already InfiniteData format
|
|
77
87
|
return select ? select(result) : result;
|
|
78
88
|
};
|
|
79
89
|
// Implementation
|
|
80
90
|
const useInfiniteQueryHook = (options) => {
|
|
91
|
+
useMountQueryClient(reactor.queryClient);
|
|
81
92
|
// Memoized and identity-preserving; see buildChainedSelect for why the
|
|
82
93
|
// function identity matters to the observer's select-result cache.
|
|
83
94
|
const chainedSelect = useMemo(() => buildChainedSelect(select, options?.select), [options?.select]);
|
|
95
|
+
const queryKey = getQueryKey();
|
|
84
96
|
return useInfiniteQuery({
|
|
85
|
-
queryKey
|
|
97
|
+
queryKey,
|
|
86
98
|
queryFn,
|
|
87
99
|
initialPageParam,
|
|
88
100
|
getNextPageParam,
|
|
@@ -92,6 +104,9 @@ const createInfiniteQueryImpl = (reactor, config) => {
|
|
|
92
104
|
...rest,
|
|
93
105
|
...options,
|
|
94
106
|
select: chainedSelect,
|
|
107
|
+
// The hook's `retry`, else the config's, else an update method's
|
|
108
|
+
// default; see `Reactor.getQueryRetry`.
|
|
109
|
+
...retryOption(options?.retry ?? rest.retry, reactor.getQueryRetry(functionName, queryKey)),
|
|
95
110
|
}, reactor.queryClient);
|
|
96
111
|
};
|
|
97
112
|
// Invalidate function
|
|
@@ -120,6 +135,7 @@ const createInfiniteQueryImpl = (reactor, config) => {
|
|
|
120
135
|
invalidate,
|
|
121
136
|
getQueryKey,
|
|
122
137
|
getCacheData,
|
|
138
|
+
...queryCacheControls(reactor, getQueryKey),
|
|
123
139
|
};
|
|
124
140
|
};
|
|
125
141
|
// ============================================================================
|
|
@@ -143,10 +159,10 @@ export function createInfiniteQuery(reactor, config) {
|
|
|
143
159
|
*
|
|
144
160
|
* @param reactor - The Reactor instance
|
|
145
161
|
* @param config - Infinite query configuration (without getArgs)
|
|
146
|
-
* @returns A function that accepts getArgs and returns an
|
|
162
|
+
* @returns A function that accepts getArgs and returns an InfiniteQueryResult
|
|
147
163
|
*
|
|
148
164
|
* @example
|
|
149
|
-
* const getPostsQuery =
|
|
165
|
+
* const getPostsQuery = createInfiniteQueryFactory(reactor, {
|
|
150
166
|
* functionName: "get_posts",
|
|
151
167
|
* initialPageParam: 0,
|
|
152
168
|
* getKeyArgs: (args) => {
|
|
@@ -159,6 +175,9 @@ export function createInfiniteQuery(reactor, config) {
|
|
|
159
175
|
* // Create query with specific args builder
|
|
160
176
|
* const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
|
|
161
177
|
* const { data, fetchNextPage } = userPostsQuery.useInfiniteQuery()
|
|
178
|
+
*
|
|
179
|
+
* // Every list this factory made, whatever its args and pages
|
|
180
|
+
* await getPostsQuery.invalidate()
|
|
162
181
|
*/
|
|
163
182
|
export function createInfiniteQueryFactory(reactor, config) {
|
|
164
183
|
const factory = (getArgs) => {
|
|
@@ -169,6 +188,11 @@ export function createInfiniteQueryFactory(reactor, config) {
|
|
|
169
188
|
getArgs,
|
|
170
189
|
});
|
|
171
190
|
};
|
|
172
|
-
|
|
191
|
+
// What every instance's key starts with: the method, the `callConfig`
|
|
192
|
+
// segments and the config `queryKey`. The args segment comes after them.
|
|
193
|
+
return withQueryFactoryMethods(factory, reactor, () => reactor.generateQueryKey({
|
|
194
|
+
functionName: config.functionName,
|
|
195
|
+
queryKey: config.queryKey,
|
|
196
|
+
}, config.callConfig));
|
|
173
197
|
}
|
|
174
198
|
//# sourceMappingURL=createInfiniteQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInfiniteQuery.js","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAW/B,OAAO,EAEL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"createInfiniteQuery.js","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
package/dist/createMutation.d.ts
CHANGED
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* @example
|
|
10
10
|
* const transferMutation = createMutation(reactor, {
|
|
11
11
|
* functionName: "transfer",
|
|
12
|
+
* // Refetched before onSuccess runs: a query factory covers every args
|
|
13
|
+
* // instance, a `{ functionName }` every query of that method
|
|
14
|
+
* invalidateQueries: [getBalance, { functionName: "get_history" }],
|
|
12
15
|
* onSuccess: () => console.log("Success!"),
|
|
13
16
|
* })
|
|
14
17
|
*
|
|
@@ -26,5 +29,5 @@
|
|
|
26
29
|
*/
|
|
27
30
|
import type { Reactor, FunctionName, TransformKey } from "@ic-reactor/core";
|
|
28
31
|
import type { MutationConfig, MutationResult, NoInfer } from "./types.js";
|
|
29
|
-
export declare function createMutation<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service
|
|
32
|
+
export declare function createMutation<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, TOnMutateResult = unknown>(reactor: Reactor<Service, Transform>, config: MutationConfig<NoInfer<Service>, Method, Transform, TOnMutateResult | undefined>): MutationResult<Service, Method, Transform>;
|
|
30
33
|
//# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EAEZ,YAAY,EAGb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAEd,OAAO,EACR,MAAM,YAAY,CAAA;AAuPnB,wBAAgB,cAAc,CAC5B,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,eAAe,GAAG,OAAO,EAEzB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EAKpC,MAAM,EAAE,cAAc,CACpB,OAAO,CAAC,OAAO,CAAC,EAChB,MAAM,EACN,SAAS,EACT,eAAe,GAAG,SAAS,CAC5B,GACA,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAU5C"}
|