@ic-reactor/react 3.3.0 → 3.4.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 +117 -4
- package/dist/createActorHooks.d.ts +1 -1
- package/dist/createActorHooks.d.ts.map +1 -1
- package/dist/createActorHooks.js +10 -25
- package/dist/createActorHooks.js.map +1 -1
- package/dist/createAuthHooks.d.ts +13 -5
- package/dist/createAuthHooks.d.ts.map +1 -1
- package/dist/createAuthHooks.js +51 -1
- package/dist/createAuthHooks.js.map +1 -1
- package/dist/createInfiniteQuery.d.ts.map +1 -1
- package/dist/createInfiniteQuery.js +2 -12
- package/dist/createInfiniteQuery.js.map +1 -1
- package/dist/createMutation.d.ts.map +1 -1
- package/dist/createMutation.js +39 -56
- package/dist/createMutation.js.map +1 -1
- package/dist/createQuery.d.ts.map +1 -1
- package/dist/createQuery.js +31 -39
- package/dist/createQuery.js.map +1 -1
- package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/createSuspenseInfiniteQuery.js +1 -14
- package/dist/createSuspenseInfiniteQuery.js.map +1 -1
- package/dist/createSuspenseQuery.d.ts.map +1 -1
- package/dist/createSuspenseQuery.js +30 -39
- package/dist/createSuspenseQuery.js.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.js +4 -5
- package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorMutation.d.ts +9 -2
- package/dist/hooks/useActorMutation.d.ts.map +1 -1
- package/dist/hooks/useActorMutation.js +15 -15
- package/dist/hooks/useActorMutation.js.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js +4 -5
- package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +26 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +41 -0
- package/dist/utils.js.map +1 -0
- package/package.json +17 -11
- package/src/createActorHooks.ts +32 -31
- package/src/createAuthHooks.ts +93 -6
- package/src/createInfiniteQuery.ts +2 -19
- package/src/createMutation.ts +52 -69
- package/src/createQuery.ts +41 -52
- package/src/createSuspenseInfiniteQuery.ts +1 -22
- package/src/createSuspenseQuery.ts +42 -56
- package/src/hooks/useActorInfiniteQuery.ts +4 -9
- package/src/hooks/useActorMutation.ts +40 -14
- package/src/hooks/useActorSuspenseInfiniteQuery.ts +4 -9
- package/src/types.ts +32 -0
- package/src/utils.ts +52 -0
package/README.md
CHANGED
|
@@ -81,8 +81,8 @@ export function App() {
|
|
|
81
81
|
|
|
82
82
|
- `createActorHooks(reactor)` for per-canister hooks like `useActorQuery` and
|
|
83
83
|
`useActorMutation`
|
|
84
|
-
- `createAuthHooks(clientManager)` for `useAuth`, `
|
|
85
|
-
`
|
|
84
|
+
- `createAuthHooks(clientManager)` for `useAuth`, `useAgentState`,
|
|
85
|
+
`useUserPrincipal`, and identity attribute hooks
|
|
86
86
|
- direct reactor hooks like `useReactorQuery` when you want to pass the reactor
|
|
87
87
|
instance at call time
|
|
88
88
|
- factory helpers like `createQuery`, `createSuspenseQuery`,
|
|
@@ -93,8 +93,8 @@ export function App() {
|
|
|
93
93
|
|
|
94
94
|
- Use `createActorHooks` for the simplest component-first integration.
|
|
95
95
|
- Use query and mutation factories when you also need loader, action, service,
|
|
96
|
-
or test usage through `.fetch()`, `.execute()`, `.invalidate()`,
|
|
97
|
-
`.getCacheData()`.
|
|
96
|
+
or test usage through `.fetch()`, `.prefetch()`, `.execute()`, `.invalidate()`,
|
|
97
|
+
`.getCacheData()`, or `.setData()`.
|
|
98
98
|
- Use `DisplayReactor` when you want UI-friendly values such as strings instead
|
|
99
99
|
of `bigint` or `Principal`.
|
|
100
100
|
- Use generated hooks from `@ic-reactor/vite-plugin` or `@ic-reactor/cli` when
|
|
@@ -112,18 +112,131 @@ export const getProfile = createSuspenseQueryFactory(backend, {
|
|
|
112
112
|
|
|
113
113
|
export const updateProfile = createMutation(backend, {
|
|
114
114
|
functionName: "update_profile",
|
|
115
|
+
onCanisterError: (err) => console.error("Canister Err variant:", err.code),
|
|
115
116
|
})
|
|
116
117
|
```
|
|
117
118
|
|
|
118
119
|
```tsx
|
|
119
120
|
const profileQuery = getProfile(["alice"])
|
|
121
|
+
|
|
122
|
+
// React component
|
|
120
123
|
const { data } = profileQuery.useSuspenseQuery()
|
|
121
124
|
|
|
125
|
+
// Prefetch before navigating (fire-and-forget)
|
|
126
|
+
profileQuery.prefetch()
|
|
127
|
+
|
|
128
|
+
// Optimistic update
|
|
129
|
+
profileQuery.setData({ id: "alice", name: "Alice" })
|
|
130
|
+
|
|
131
|
+
// Mutation with cache invalidation
|
|
122
132
|
const mutation = updateProfile.useMutation({
|
|
123
133
|
invalidateQueries: [profileQuery.getQueryKey()],
|
|
124
134
|
})
|
|
125
135
|
```
|
|
126
136
|
|
|
137
|
+
## Identity Attributes / OpenID email and profile values
|
|
138
|
+
|
|
139
|
+
`createAuthHooks(clientManager)` exposes `useIdentityAttributes()` for signed
|
|
140
|
+
identity attributes from `@icp-sdk/auth` v6. Existing `useAuth()`, `login()`,
|
|
141
|
+
`logout()`, and `useUserPrincipal()` consumers keep the same IC Reactor API, but
|
|
142
|
+
the configured auth client must support the v6 constructor/sign-in API.
|
|
143
|
+
|
|
144
|
+
```tsx
|
|
145
|
+
import { createAuthHooks } from "@ic-reactor/react"
|
|
146
|
+
import { clientManager } from "./reactor"
|
|
147
|
+
|
|
148
|
+
const { useIdentityAttributes } = createAuthHooks(clientManager)
|
|
149
|
+
|
|
150
|
+
function RegisterWithOpenIdProvider() {
|
|
151
|
+
const {
|
|
152
|
+
requestOpenIdAttributes,
|
|
153
|
+
attributes,
|
|
154
|
+
isRequestingAttributes,
|
|
155
|
+
attributeError,
|
|
156
|
+
} = useIdentityAttributes()
|
|
157
|
+
|
|
158
|
+
async function handleProviderLogin() {
|
|
159
|
+
const nonce = await backend.registerBegin()
|
|
160
|
+
|
|
161
|
+
const result = await requestOpenIdAttributes({
|
|
162
|
+
nonce,
|
|
163
|
+
openIdProvider: "microsoft",
|
|
164
|
+
keys: ["email", "name"],
|
|
165
|
+
identityProvider: "https://beta.id.ai/authorize",
|
|
166
|
+
windowOpenerFeatures: popupCenter(),
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
console.log(result.decodedAttributes.email)
|
|
170
|
+
console.log(result.decodedAttributes.name)
|
|
171
|
+
|
|
172
|
+
await backend.registerFinish({
|
|
173
|
+
data: result.signedAttributes.data,
|
|
174
|
+
signature: result.signedAttributes.signature,
|
|
175
|
+
})
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<button disabled={isRequestingAttributes} onClick={handleProviderLogin}>
|
|
180
|
+
{attributes?.decodedAttributes.email ??
|
|
181
|
+
attributeError?.message ??
|
|
182
|
+
"Continue with provider"}
|
|
183
|
+
</button>
|
|
184
|
+
)
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Use a documented auth provider alias (`"google"`, `"apple"`, or `"microsoft"`)
|
|
189
|
+
or the provider issuer URL your app expects for `openIdProvider`.
|
|
190
|
+
|
|
191
|
+
Frontend decoded `email` and `name` values are for display only. Production flows
|
|
192
|
+
must send `signedAttributes.data` and `signedAttributes.signature` to the backend
|
|
193
|
+
or canister and verify the signature, nonce, origin, timestamp, and requested keys
|
|
194
|
+
before trusting or storing the attributes.
|
|
195
|
+
|
|
196
|
+
## Query Result Methods
|
|
197
|
+
|
|
198
|
+
Every object returned by `createQuery`, `createSuspenseQuery`, and their
|
|
199
|
+
factory variants exposes:
|
|
200
|
+
|
|
201
|
+
| Method | Description |
|
|
202
|
+
| ----------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
203
|
+
| `fetch()` | Cache-first fetch — returns data, populates cache. Use in route loaders. |
|
|
204
|
+
| `prefetch()` | Fire-and-forget cache warm-up. Use on hover or before navigation. |
|
|
205
|
+
| `invalidate()` | Invalidates the cache entry (triggers refetch if query is mounted). |
|
|
206
|
+
| `getQueryKey()` | Returns the TanStack Query key for this query. |
|
|
207
|
+
| `getCacheData(select?)` | Read directly from cache without fetching. Returns `undefined` if not cached. |
|
|
208
|
+
| `setData(updater)` | Write raw data into the cache. Accepts a value or updater function. Use for optimistic updates. |
|
|
209
|
+
| `useQuery()` / `useSuspenseQuery()` | React hook for the query. |
|
|
210
|
+
|
|
211
|
+
## Canister Error Handling
|
|
212
|
+
|
|
213
|
+
Canister methods can return `Result { Err: E }` variants. These are surfaced
|
|
214
|
+
as `CanisterError` and can be handled separately from network or agent errors
|
|
215
|
+
via `onCanisterError`. This callback is supported on both `createMutation` and
|
|
216
|
+
the direct `useActorMutation` hook:
|
|
217
|
+
|
|
218
|
+
```tsx
|
|
219
|
+
// Via createActorHooks
|
|
220
|
+
const { mutate } = useActorMutation({
|
|
221
|
+
functionName: "transfer",
|
|
222
|
+
onCanisterError: (err, vars) => {
|
|
223
|
+
// err.code — the Err variant key (e.g. "InsufficientFunds")
|
|
224
|
+
// err.err — the typed Err value
|
|
225
|
+
console.error(`Transfer failed: ${err.code}`, vars)
|
|
226
|
+
},
|
|
227
|
+
onError: (err) => {
|
|
228
|
+
// Fires for ALL errors: canister Err variants, network failures, etc.
|
|
229
|
+
console.error("Unexpected error", err)
|
|
230
|
+
},
|
|
231
|
+
})
|
|
232
|
+
|
|
233
|
+
// Via createMutation factory
|
|
234
|
+
const transferMutation = createMutation(backend, {
|
|
235
|
+
functionName: "transfer",
|
|
236
|
+
onCanisterError: (err) => toast.error(`${err.code}`),
|
|
237
|
+
})
|
|
238
|
+
```
|
|
239
|
+
|
|
127
240
|
## Re-exports
|
|
128
241
|
|
|
129
242
|
`@ic-reactor/react` re-exports the core runtime, so you can import these from a
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { Reactor, DisplayReactor, ReactorReturnErr, ReactorReturnOk, BaseActor, FunctionName, TransformKey } from "@ic-reactor/core";
|
|
20
20
|
import { UseQueryResult, UseSuspenseQueryResult, UseInfiniteQueryResult, UseSuspenseInfiniteQueryResult, UseMutationResult, InfiniteData } from "@tanstack/react-query";
|
|
21
|
+
import { useActorMethod, UseActorMethodParameters } from "./hooks/useActorMethod";
|
|
21
22
|
import { InfiniteQueryConfig } from "./createInfiniteQuery";
|
|
22
23
|
import { SuspenseInfiniteQueryConfig } from "./createSuspenseInfiniteQuery";
|
|
23
|
-
import { useActorMethod, UseActorMethodParameters } from "./hooks/useActorMethod";
|
|
24
24
|
import { QueryConfig, SuspenseQueryConfig, MutationConfig } from "./types";
|
|
25
25
|
export type ActorHooks<A, T extends TransformKey> = {
|
|
26
26
|
useActorQuery: {
|
|
@@ -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,SAAS,EACT,YAAY,EACZ,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,YAAY,EACb,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"createActorHooks.d.ts","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"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"}
|
package/dist/createActorHooks.js
CHANGED
|
@@ -1,31 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { useActorQuery } from "./hooks/useActorQuery";
|
|
2
|
+
import { useActorSuspenseQuery } from "./hooks/useActorSuspenseQuery";
|
|
3
|
+
import { useActorInfiniteQuery } from "./hooks/useActorInfiniteQuery";
|
|
4
|
+
import { useActorSuspenseInfiniteQuery } from "./hooks/useActorSuspenseInfiniteQuery";
|
|
5
|
+
import { useActorMutation } from "./hooks/useActorMutation";
|
|
6
6
|
import { useActorMethod, } from "./hooks/useActorMethod";
|
|
7
7
|
export function createActorHooks(reactor) {
|
|
8
8
|
return {
|
|
9
|
-
useActorQuery: ((config) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}),
|
|
13
|
-
|
|
14
|
-
const { select, ...options } = config;
|
|
15
|
-
return createSuspenseQuery(reactor, config).useSuspenseQuery(options);
|
|
16
|
-
}),
|
|
17
|
-
useActorInfiniteQuery: ((config) => {
|
|
18
|
-
const { select, ...options } = config;
|
|
19
|
-
return createInfiniteQuery(reactor, config).useInfiniteQuery(options);
|
|
20
|
-
}),
|
|
21
|
-
useActorSuspenseInfiniteQuery: ((config) => {
|
|
22
|
-
const { select, ...options } = config;
|
|
23
|
-
return createSuspenseInfiniteQuery(reactor, config).useSuspenseInfiniteQuery(options);
|
|
24
|
-
}),
|
|
25
|
-
useActorMutation: ((config) => {
|
|
26
|
-
const { onSuccess, invalidateQueries, ...options } = config;
|
|
27
|
-
return createMutation(reactor, config).useMutation(options);
|
|
28
|
-
}),
|
|
9
|
+
useActorQuery: ((config) => useActorQuery({ ...config, reactor })),
|
|
10
|
+
useActorSuspenseQuery: ((config) => useActorSuspenseQuery({ ...config, reactor })),
|
|
11
|
+
useActorInfiniteQuery: ((config) => useActorInfiniteQuery({ ...config, reactor })),
|
|
12
|
+
useActorSuspenseInfiniteQuery: ((config) => useActorSuspenseInfiniteQuery({ ...config, reactor })),
|
|
13
|
+
useActorMutation: ((config) => useActorMutation({ ...config, reactor })),
|
|
29
14
|
useActorMethod: (config) => useActorMethod({ ...config, reactor }),
|
|
30
15
|
};
|
|
31
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createActorHooks.js","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"createActorHooks.js","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EACL,cAAc,GAEf,MAAM,wBAAwB,CAAA;AA8D/B,MAAM,UAAU,gBAAgB,CAC9B,OAAsB;IAEtB,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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { ClientManager, AgentState } from "@ic-reactor/core";
|
|
2
|
-
import { Principal } from "@icp-sdk/core/principal";
|
|
3
|
-
import { Identity } from "@icp-sdk/core/agent";
|
|
4
|
-
import { AuthClientLoginOptions } from "@icp-sdk/auth/client";
|
|
1
|
+
import { ClientManager, AgentState, ClientManagerSignInOptions, IdentityAttributeResult, RequestIdentityAttributesParameters, RequestOpenIdIdentityAttributesParameters } from "@ic-reactor/core";
|
|
2
|
+
import type { Principal } from "@icp-sdk/core/principal";
|
|
3
|
+
import type { Identity } from "@icp-sdk/core/agent";
|
|
5
4
|
export interface UseAuthReturn {
|
|
6
5
|
authenticate: () => Promise<Identity | undefined>;
|
|
7
|
-
login: (options?:
|
|
6
|
+
login: (options?: ClientManagerSignInOptions) => Promise<void>;
|
|
8
7
|
logout: (options?: {
|
|
9
8
|
returnTo?: string;
|
|
10
9
|
}) => Promise<void>;
|
|
@@ -18,6 +17,15 @@ export interface CreateAuthHooksReturn {
|
|
|
18
17
|
useAgentState: () => AgentState;
|
|
19
18
|
useUserPrincipal: () => Principal | null;
|
|
20
19
|
useAuth: () => UseAuthReturn;
|
|
20
|
+
useIdentityAttributes: () => UseIdentityAttributesReturn;
|
|
21
|
+
}
|
|
22
|
+
export interface UseIdentityAttributesReturn {
|
|
23
|
+
requestAttributes: (params: RequestIdentityAttributesParameters) => Promise<IdentityAttributeResult>;
|
|
24
|
+
requestOpenIdAttributes: (params: RequestOpenIdIdentityAttributesParameters) => Promise<IdentityAttributeResult>;
|
|
25
|
+
attributes: IdentityAttributeResult | null;
|
|
26
|
+
isRequestingAttributes: boolean;
|
|
27
|
+
attributeError: Error | null;
|
|
28
|
+
clearAttributes: () => void;
|
|
21
29
|
}
|
|
22
30
|
/**
|
|
23
31
|
* Create authentication hooks for managing user sessions with Internet Identity.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAuthHooks.d.ts","sourceRoot":"","sources":["../src/createAuthHooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createAuthHooks.d.ts","sourceRoot":"","sources":["../src/createAuthHooks.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EACb,UAAU,EAEV,0BAA0B,EAC1B,uBAAuB,EACvB,mCAAmC,EACnC,yCAAyC,EAC1C,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IACjD,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,0BAA0B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,UAAU,CAAA;IAC/B,gBAAgB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;IACxC,OAAO,EAAE,MAAM,aAAa,CAAA;IAC5B,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;CACzD;AAED,MAAM,WAAW,2BAA2B;IAC1C,iBAAiB,EAAE,CACjB,MAAM,EAAE,mCAAmC,KACxC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,uBAAuB,EAAE,CACvB,MAAM,EAAE,yCAAyC,KAC9C,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAA;IAC1C,sBAAsB,EAAE,OAAO,CAAA;IAC/B,cAAc,EAAE,KAAK,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAA;CAC5B;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,eAAe,aAAa,KAC3B,qBA4JF,CAAA"}
|
package/dist/createAuthHooks.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useSyncExternalStore, useEffect, useRef, useMemo } from "react";
|
|
1
|
+
import { useSyncExternalStore, useEffect, useRef, useMemo, useState, useCallback, } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* Create authentication hooks for managing user sessions with Internet Identity.
|
|
4
4
|
*
|
|
@@ -85,10 +85,60 @@ export const createAuthHooks = (clientManager) => {
|
|
|
85
85
|
const { identity } = useAuthState();
|
|
86
86
|
return identity ? identity.getPrincipal() : null;
|
|
87
87
|
};
|
|
88
|
+
const useIdentityAttributes = () => {
|
|
89
|
+
const [attributes, setAttributes] = useState(null);
|
|
90
|
+
const [isRequestingAttributes, setIsRequestingAttributes] = useState(false);
|
|
91
|
+
const [attributeError, setAttributeError] = useState(null);
|
|
92
|
+
const requestAttributes = useCallback(async (params) => {
|
|
93
|
+
setIsRequestingAttributes(true);
|
|
94
|
+
setAttributeError(null);
|
|
95
|
+
try {
|
|
96
|
+
const result = await clientManager.requestIdentityAttributes(params);
|
|
97
|
+
setAttributes(result);
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
setAttributeError(error);
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
setIsRequestingAttributes(false);
|
|
106
|
+
}
|
|
107
|
+
}, []);
|
|
108
|
+
const requestOpenIdAttributes = useCallback(async (params) => {
|
|
109
|
+
setIsRequestingAttributes(true);
|
|
110
|
+
setAttributeError(null);
|
|
111
|
+
try {
|
|
112
|
+
const result = await clientManager.requestOpenIdIdentityAttributes(params);
|
|
113
|
+
setAttributes(result);
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
setAttributeError(error);
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
setIsRequestingAttributes(false);
|
|
122
|
+
}
|
|
123
|
+
}, []);
|
|
124
|
+
const clearAttributes = useCallback(() => {
|
|
125
|
+
setAttributes(null);
|
|
126
|
+
setAttributeError(null);
|
|
127
|
+
}, []);
|
|
128
|
+
return {
|
|
129
|
+
requestAttributes,
|
|
130
|
+
requestOpenIdAttributes,
|
|
131
|
+
attributes,
|
|
132
|
+
isRequestingAttributes,
|
|
133
|
+
attributeError,
|
|
134
|
+
clearAttributes,
|
|
135
|
+
};
|
|
136
|
+
};
|
|
88
137
|
return {
|
|
89
138
|
useAuth,
|
|
90
139
|
useAgentState,
|
|
91
140
|
useUserPrincipal,
|
|
141
|
+
useIdentityAttributes,
|
|
92
142
|
};
|
|
93
143
|
};
|
|
94
144
|
//# sourceMappingURL=createAuthHooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAuthHooks.js","sourceRoot":"","sources":["../src/createAuthHooks.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createAuthHooks.js","sourceRoot":"","sources":["../src/createAuthHooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,QAAQ,EAER,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EAGvB,4BAA4B,EAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,17 +22,7 @@
|
|
|
22
22
|
* postsQuery.invalidate()
|
|
23
23
|
*/
|
|
24
24
|
import { useInfiniteQuery, } from "@tanstack/react-query";
|
|
25
|
-
|
|
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
|
+
import { mergeFactoryQueryKey } from "./utils";
|
|
36
26
|
// ============================================================================
|
|
37
27
|
// Internal Implementation
|
|
38
28
|
// ============================================================================
|
|
@@ -169,7 +159,7 @@ export function createInfiniteQueryFactory(reactor, config) {
|
|
|
169
159
|
const factory = (getArgs) => {
|
|
170
160
|
const initialArgs = getArgs(config.initialPageParam);
|
|
171
161
|
const keyArgs = config.getKeyArgs?.(initialArgs) ?? initialArgs;
|
|
172
|
-
const queryKey = mergeFactoryQueryKey(config.queryKey, keyArgs);
|
|
162
|
+
const queryKey = mergeFactoryQueryKey(config.queryKey, undefined, keyArgs);
|
|
173
163
|
return createInfiniteQueryImpl(reactor, {
|
|
174
164
|
...(({ getKeyArgs: _getKeyArgs, ...rest }) => rest)(config),
|
|
175
165
|
queryKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInfiniteQuery.js","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,EAEL,gBAAgB,GAOjB,MAAM,uBAAuB,CAAA;
|
|
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;AAoHhB,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
|
@@ -16,91 +16,74 @@
|
|
|
16
16
|
import { useMutation } from "@tanstack/react-query";
|
|
17
17
|
import { isCanisterError } from "@ic-reactor/core";
|
|
18
18
|
// ============================================================================
|
|
19
|
+
// Internal helpers
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/** Invalidate a list of query keys in parallel, filtering out undefineds. */
|
|
22
|
+
async function invalidateAll(queryClient, keys) {
|
|
23
|
+
await Promise.all(keys.map((queryKey) => queryKey ? queryClient.invalidateQueries({ queryKey }) : Promise.resolve()));
|
|
24
|
+
}
|
|
25
|
+
// ============================================================================
|
|
19
26
|
// Internal Implementation
|
|
20
27
|
// ============================================================================
|
|
21
28
|
const createMutationImpl = (reactor, config) => {
|
|
22
29
|
const { functionName, callConfig, invalidateQueries: factoryInvalidateQueries, onSuccess: factoryOnSuccess, onCanisterError: factoryOnCanisterError, onError: factoryOnError, ...factoryOptions } = config;
|
|
23
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Raw call without any invalidation logic.
|
|
32
|
+
* Used as mutationFn so that onSuccess handles all post-mutation work
|
|
33
|
+
* and there is no double-invalidation.
|
|
34
|
+
*/
|
|
35
|
+
const callFn = (args) => reactor.callMethod({ functionName, args, callConfig });
|
|
36
|
+
/**
|
|
37
|
+
* Imperative execution for non-React usage.
|
|
38
|
+
* Calls the canister method and invalidates factory-level queries.
|
|
39
|
+
* Use this in route loaders, scripts, or server-side code.
|
|
40
|
+
*/
|
|
24
41
|
const execute = async (args) => {
|
|
25
|
-
const result = await
|
|
26
|
-
functionName,
|
|
27
|
-
args,
|
|
28
|
-
callConfig,
|
|
29
|
-
});
|
|
42
|
+
const result = await callFn(args);
|
|
30
43
|
if (factoryInvalidateQueries) {
|
|
31
|
-
await
|
|
32
|
-
return reactor.queryClient.invalidateQueries({ queryKey });
|
|
33
|
-
}));
|
|
44
|
+
await invalidateAll(reactor.queryClient, factoryInvalidateQueries);
|
|
34
45
|
}
|
|
35
46
|
return result;
|
|
36
47
|
};
|
|
37
48
|
// Hook implementation
|
|
38
49
|
const useMutationHook = (options) => {
|
|
39
|
-
const baseOptions = reactor.getQueryOptions({
|
|
40
|
-
|
|
41
|
-
});
|
|
42
|
-
// Extract our custom options
|
|
43
|
-
const { invalidateQueries: hookInvalidateQueries, onCanisterError: hookOnCanisterError, ...restOptions } = options || {};
|
|
50
|
+
const baseOptions = reactor.getQueryOptions({ functionName });
|
|
51
|
+
const { invalidateQueries: hookInvalidateQueries, onCanisterError: hookOnCanisterError, ...restOptions } = options ?? {};
|
|
44
52
|
return useMutation({
|
|
45
53
|
mutationKey: baseOptions.queryKey,
|
|
46
54
|
...factoryOptions,
|
|
47
55
|
...restOptions,
|
|
48
|
-
|
|
56
|
+
// Use callFn (not execute) to avoid double-invalidation:
|
|
57
|
+
// factoryInvalidateQueries are handled in onSuccess below.
|
|
58
|
+
mutationFn: callFn,
|
|
49
59
|
onSuccess: async (...args) => {
|
|
50
|
-
// 1.
|
|
60
|
+
// 1. Factory-level invalidation
|
|
51
61
|
if (factoryInvalidateQueries) {
|
|
52
|
-
await
|
|
53
|
-
return reactor.queryClient.invalidateQueries({ queryKey });
|
|
54
|
-
}));
|
|
62
|
+
await invalidateAll(reactor.queryClient, factoryInvalidateQueries);
|
|
55
63
|
}
|
|
56
|
-
// 2.
|
|
64
|
+
// 2. Hook-level invalidation
|
|
57
65
|
if (hookInvalidateQueries) {
|
|
58
|
-
await
|
|
59
|
-
if (queryKey) {
|
|
60
|
-
return reactor.queryClient.invalidateQueries({ queryKey });
|
|
61
|
-
}
|
|
62
|
-
return Promise.resolve();
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
// 3. Call factory onSuccess
|
|
66
|
-
if (factoryOnSuccess) {
|
|
67
|
-
await factoryOnSuccess(...args);
|
|
68
|
-
}
|
|
69
|
-
// 4. Call hook-local onSuccess
|
|
70
|
-
if (restOptions?.onSuccess) {
|
|
71
|
-
await restOptions.onSuccess(...args);
|
|
66
|
+
await invalidateAll(reactor.queryClient, hookInvalidateQueries);
|
|
72
67
|
}
|
|
68
|
+
// 3. Factory onSuccess
|
|
69
|
+
await factoryOnSuccess?.(...args);
|
|
70
|
+
// 4. Hook onSuccess
|
|
71
|
+
await restOptions.onSuccess?.(...args);
|
|
73
72
|
},
|
|
74
73
|
onError: (error, variables, context, mutation) => {
|
|
75
|
-
// Check if this is a CanisterError (from Result { Err: E })
|
|
76
74
|
if (isCanisterError(error)) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
factoryOnCanisterError(error, variables);
|
|
80
|
-
}
|
|
81
|
-
// 2. Call hook-level onCanisterError
|
|
82
|
-
if (hookOnCanisterError) {
|
|
83
|
-
hookOnCanisterError(error, variables);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// 3. Call factory-level onError (for all errors)
|
|
87
|
-
if (factoryOnError) {
|
|
88
|
-
factoryOnError(error, variables, context, mutation);
|
|
89
|
-
}
|
|
90
|
-
// 4. Call hook-level onError (for all errors)
|
|
91
|
-
if (restOptions?.onError) {
|
|
92
|
-
restOptions.onError(error, variables, context, mutation);
|
|
75
|
+
factoryOnCanisterError?.(error, variables);
|
|
76
|
+
hookOnCanisterError?.(error, variables);
|
|
93
77
|
}
|
|
78
|
+
factoryOnError?.(error, variables, context, mutation);
|
|
79
|
+
restOptions.onError?.(error, variables, context, mutation);
|
|
94
80
|
},
|
|
95
81
|
}, reactor.queryClient);
|
|
96
82
|
};
|
|
97
|
-
return {
|
|
98
|
-
useMutation: useMutationHook,
|
|
99
|
-
execute,
|
|
100
|
-
};
|
|
83
|
+
return { useMutation: useMutationHook, execute };
|
|
101
84
|
};
|
|
102
85
|
// ============================================================================
|
|
103
|
-
// Factory Function
|
|
86
|
+
// Public Factory Function
|
|
104
87
|
// ============================================================================
|
|
105
88
|
export function createMutation(reactor, config) {
|
|
106
89
|
return createMutationImpl(reactor, config);
|
|
@@ -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
|
|
1
|
+
{"version":3,"file":"createMutation.js","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQuery.d.ts","sourceRoot":"","sources":["../src/createQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EAEX,WAAW,EACX,kBAAkB,EAClB,OAAO,EACR,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"createQuery.d.ts","sourceRoot":"","sources":["../src/createQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EAEX,WAAW,EACX,kBAAkB,EAClB,OAAO,EACR,MAAM,SAAS,CAAA;AAyGhB,wBAAgB,WAAW,CACzB,CAAC,EACD,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAC3C,SAAS,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAEhC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,GAC/C,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAEnE;AAMD,wBAAgB,kBAAkB,CAChC,CAAC,EACD,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAC3C,SAAS,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAEhC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,GACtD,CACD,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACvB,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAuBrE"}
|