@ic-reactor/react 3.13.0 → 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.
Files changed (174) hide show
  1. package/README.md +234 -787
  2. package/dist/index.d.ts +259 -16
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +470 -23
  5. package/dist/index.js.map +1 -1
  6. package/llms.txt +80 -278
  7. package/package.json +11 -39
  8. package/src/index.tsx +611 -0
  9. package/dist/auth/auth-client-compat.d.ts +0 -122
  10. package/dist/auth/auth-client-compat.d.ts.map +0 -1
  11. package/dist/auth/auth-client-compat.js +0 -162
  12. package/dist/auth/auth-client-compat.js.map +0 -1
  13. package/dist/auth/authentication-manager.d.ts +0 -405
  14. package/dist/auth/authentication-manager.d.ts.map +0 -1
  15. package/dist/auth/authentication-manager.js +0 -1537
  16. package/dist/auth/authentication-manager.js.map +0 -1
  17. package/dist/auth/constants.d.ts +0 -24
  18. package/dist/auth/constants.d.ts.map +0 -1
  19. package/dist/auth/constants.js +0 -24
  20. package/dist/auth/constants.js.map +0 -1
  21. package/dist/auth/createIdentityAttributeHooks.d.ts +0 -14
  22. package/dist/auth/createIdentityAttributeHooks.d.ts.map +0 -1
  23. package/dist/auth/createIdentityAttributeHooks.js +0 -122
  24. package/dist/auth/createIdentityAttributeHooks.js.map +0 -1
  25. package/dist/auth/identity-attributes-manager.d.ts +0 -27
  26. package/dist/auth/identity-attributes-manager.d.ts.map +0 -1
  27. package/dist/auth/identity-attributes-manager.js +0 -191
  28. package/dist/auth/identity-attributes-manager.js.map +0 -1
  29. package/dist/auth/identity-attributes.d.ts +0 -19
  30. package/dist/auth/identity-attributes.d.ts.map +0 -1
  31. package/dist/auth/identity-attributes.js +0 -227
  32. package/dist/auth/identity-attributes.js.map +0 -1
  33. package/dist/auth/index.d.ts +0 -8
  34. package/dist/auth/index.d.ts.map +0 -1
  35. package/dist/auth/index.js +0 -8
  36. package/dist/auth/index.js.map +0 -1
  37. package/dist/auth/local-ii-probe.d.ts +0 -57
  38. package/dist/auth/local-ii-probe.d.ts.map +0 -1
  39. package/dist/auth/local-ii-probe.js +0 -121
  40. package/dist/auth/local-ii-probe.js.map +0 -1
  41. package/dist/auth/types.d.ts +0 -222
  42. package/dist/auth/types.d.ts.map +0 -1
  43. package/dist/auth/types.js +0 -2
  44. package/dist/auth/types.js.map +0 -1
  45. package/dist/createActorHooks.d.ts +0 -41
  46. package/dist/createActorHooks.d.ts.map +0 -1
  47. package/dist/createActorHooks.js +0 -17
  48. package/dist/createActorHooks.js.map +0 -1
  49. package/dist/createInfiniteQuery.d.ts +0 -185
  50. package/dist/createInfiniteQuery.d.ts.map +0 -1
  51. package/dist/createInfiniteQuery.js +0 -198
  52. package/dist/createInfiniteQuery.js.map +0 -1
  53. package/dist/createMutation.d.ts +0 -33
  54. package/dist/createMutation.d.ts.map +0 -1
  55. package/dist/createMutation.js +0 -199
  56. package/dist/createMutation.js.map +0 -1
  57. package/dist/createQuery.d.ts +0 -63
  58. package/dist/createQuery.d.ts.map +0 -1
  59. package/dist/createQuery.js +0 -204
  60. package/dist/createQuery.js.map +0 -1
  61. package/dist/createReactorProvider.d.ts +0 -158
  62. package/dist/createReactorProvider.d.ts.map +0 -1
  63. package/dist/createReactorProvider.js +0 -256
  64. package/dist/createReactorProvider.js.map +0 -1
  65. package/dist/createSuspenseInfiniteQuery.d.ts +0 -154
  66. package/dist/createSuspenseInfiniteQuery.d.ts.map +0 -1
  67. package/dist/createSuspenseInfiniteQuery.js +0 -209
  68. package/dist/createSuspenseInfiniteQuery.js.map +0 -1
  69. package/dist/createSuspenseQuery.d.ts +0 -46
  70. package/dist/createSuspenseQuery.d.ts.map +0 -1
  71. package/dist/createSuspenseQuery.js +0 -158
  72. package/dist/createSuspenseQuery.js.map +0 -1
  73. package/dist/defineDisplayReactor.d.ts +0 -43
  74. package/dist/defineDisplayReactor.d.ts.map +0 -1
  75. package/dist/defineDisplayReactor.js +0 -42
  76. package/dist/defineDisplayReactor.js.map +0 -1
  77. package/dist/defineReactor.d.ts +0 -99
  78. package/dist/defineReactor.d.ts.map +0 -1
  79. package/dist/defineReactor.js +0 -15
  80. package/dist/defineReactor.js.map +0 -1
  81. package/dist/defineReactorShared.d.ts +0 -84
  82. package/dist/defineReactorShared.d.ts.map +0 -1
  83. package/dist/defineReactorShared.js +0 -139
  84. package/dist/defineReactorShared.js.map +0 -1
  85. package/dist/hooks/createAuthHooks.d.ts +0 -50
  86. package/dist/hooks/createAuthHooks.d.ts.map +0 -1
  87. package/dist/hooks/createAuthHooks.js +0 -291
  88. package/dist/hooks/createAuthHooks.js.map +0 -1
  89. package/dist/hooks/index.d.ts +0 -21
  90. package/dist/hooks/index.d.ts.map +0 -1
  91. package/dist/hooks/index.js +0 -24
  92. package/dist/hooks/index.js.map +0 -1
  93. package/dist/hooks/useActorInfiniteQuery.d.ts +0 -67
  94. package/dist/hooks/useActorInfiniteQuery.d.ts.map +0 -1
  95. package/dist/hooks/useActorInfiniteQuery.js +0 -89
  96. package/dist/hooks/useActorInfiniteQuery.js.map +0 -1
  97. package/dist/hooks/useActorMethod.d.ts +0 -148
  98. package/dist/hooks/useActorMethod.d.ts.map +0 -1
  99. package/dist/hooks/useActorMethod.js +0 -394
  100. package/dist/hooks/useActorMethod.js.map +0 -1
  101. package/dist/hooks/useActorMutation.d.ts +0 -51
  102. package/dist/hooks/useActorMutation.d.ts.map +0 -1
  103. package/dist/hooks/useActorMutation.js +0 -70
  104. package/dist/hooks/useActorMutation.js.map +0 -1
  105. package/dist/hooks/useActorQuery.d.ts +0 -45
  106. package/dist/hooks/useActorQuery.d.ts.map +0 -1
  107. package/dist/hooks/useActorQuery.js +0 -67
  108. package/dist/hooks/useActorQuery.js.map +0 -1
  109. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +0 -51
  110. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +0 -1
  111. package/dist/hooks/useActorSuspenseInfiniteQuery.js +0 -76
  112. package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +0 -1
  113. package/dist/hooks/useActorSuspenseQuery.d.ts +0 -32
  114. package/dist/hooks/useActorSuspenseQuery.d.ts.map +0 -1
  115. package/dist/hooks/useActorSuspenseQuery.js +0 -58
  116. package/dist/hooks/useActorSuspenseQuery.js.map +0 -1
  117. package/dist/ownedAuthentication.d.ts +0 -52
  118. package/dist/ownedAuthentication.d.ts.map +0 -1
  119. package/dist/ownedAuthentication.js +0 -49
  120. package/dist/ownedAuthentication.js.map +0 -1
  121. package/dist/server.d.ts +0 -21
  122. package/dist/server.d.ts.map +0 -1
  123. package/dist/server.js +0 -23
  124. package/dist/server.js.map +0 -1
  125. package/dist/testing.d.ts +0 -19
  126. package/dist/testing.d.ts.map +0 -1
  127. package/dist/testing.js +0 -19
  128. package/dist/testing.js.map +0 -1
  129. package/dist/types.d.ts +0 -671
  130. package/dist/types.d.ts.map +0 -1
  131. package/dist/types.js +0 -5
  132. package/dist/types.js.map +0 -1
  133. package/dist/utils.d.ts +0 -207
  134. package/dist/utils.d.ts.map +0 -1
  135. package/dist/utils.js +0 -405
  136. package/dist/utils.js.map +0 -1
  137. package/dist/validation.d.ts +0 -136
  138. package/dist/validation.d.ts.map +0 -1
  139. package/dist/validation.js +0 -144
  140. package/dist/validation.js.map +0 -1
  141. package/src/auth/auth-client-compat.ts +0 -273
  142. package/src/auth/authentication-manager.ts +0 -1682
  143. package/src/auth/constants.ts +0 -32
  144. package/src/auth/createIdentityAttributeHooks.ts +0 -169
  145. package/src/auth/identity-attributes-manager.ts +0 -226
  146. package/src/auth/identity-attributes.ts +0 -345
  147. package/src/auth/index.ts +0 -7
  148. package/src/auth/local-ii-probe.ts +0 -173
  149. package/src/auth/types.ts +0 -243
  150. package/src/createActorHooks.ts +0 -208
  151. package/src/createInfiniteQuery.ts +0 -670
  152. package/src/createMutation.ts +0 -324
  153. package/src/createQuery.ts +0 -369
  154. package/src/createReactorProvider.ts +0 -365
  155. package/src/createSuspenseInfiniteQuery.ts +0 -651
  156. package/src/createSuspenseQuery.ts +0 -304
  157. package/src/defineDisplayReactor.ts +0 -62
  158. package/src/defineReactor.ts +0 -142
  159. package/src/defineReactorShared.ts +0 -268
  160. package/src/hooks/createAuthHooks.ts +0 -371
  161. package/src/hooks/index.ts +0 -103
  162. package/src/hooks/useActorInfiniteQuery.ts +0 -278
  163. package/src/hooks/useActorMethod.ts +0 -710
  164. package/src/hooks/useActorMutation.ts +0 -205
  165. package/src/hooks/useActorQuery.ts +0 -157
  166. package/src/hooks/useActorSuspenseInfiniteQuery.ts +0 -248
  167. package/src/hooks/useActorSuspenseQuery.ts +0 -147
  168. package/src/index.ts +0 -31
  169. package/src/ownedAuthentication.ts +0 -81
  170. package/src/server.ts +0 -23
  171. package/src/testing.ts +0 -18
  172. package/src/types.ts +0 -948
  173. package/src/utils.ts +0 -505
  174. package/src/validation.ts +0 -226
@@ -1,222 +0,0 @@
1
- import type { Identity, SignIdentity } from "@icp-sdk/core/agent";
2
- import type { PartialIdentity } from "@icp-sdk/core/identity";
3
- import type { Principal } from "@icp-sdk/core/principal";
4
- export interface SignedIdentityAttributes {
5
- data: Uint8Array;
6
- signature: Uint8Array;
7
- }
8
- /**
9
- * The 32-byte nonce issued by the relying-party canister.
10
- *
11
- * A function (or promise) lets the Internet Identity window open while the
12
- * nonce is still being fetched, so the popup is opened inside the user gesture
13
- * instead of after it. Every supported `@icp-sdk/auth` requires the function form, and
14
- * IC Reactor normalizes whichever of these you pass into that thunk.
15
- */
16
- export type IdentityAttributeNonce = Uint8Array | Promise<Uint8Array> | (() => Uint8Array | Promise<Uint8Array>);
17
- export interface IdentityAttributeRequest {
18
- keys: string[];
19
- nonce: IdentityAttributeNonce;
20
- }
21
- export interface IdentityAttributeValues {
22
- email?: string;
23
- name?: string;
24
- verified_email?: string;
25
- [key: string]: string | undefined;
26
- }
27
- export interface IdentityAttributeResult {
28
- principal: string;
29
- requestedKeys: string[];
30
- signedAttributes: SignedIdentityAttributes;
31
- decodedAttributes: IdentityAttributeValues;
32
- completedAt: string;
33
- }
34
- /**
35
- * The providers that Internet Identity supports for one-click sign-in. Only
36
- * these three reach the underlying auth client.
37
- */
38
- type IdentityAttributeOpenIdProviderAlias = "google" | "apple" | "microsoft";
39
- /**
40
- * An OpenID provider, either as a well-known alias or as a raw issuer URL.
41
- *
42
- * The two forms are **not** interchangeable, and what each one does depends on
43
- * where it is passed:
44
- *
45
- * - An alias (`"google" | "apple" | "microsoft"`) is forwarded to the auth
46
- * client, which adds an `openid` search param to the identity provider URL so
47
- * the user signs in through that provider directly.
48
- * - Any other string is treated as a raw issuer URL and is **never** forwarded
49
- * to the auth client, so it never affects how the user signs in. It is only
50
- * meaningful when passed to {@link IdentityAttributesManager.requestOpenId}
51
- * (or `identityAttributeKeys`), which scopes the requested keys to
52
- * `openid:<issuer>:<key>`. Passed anywhere else it has no effect at all.
53
- */
54
- export type IdentityAttributeOpenIdProvider = IdentityAttributeOpenIdProviderAlias | (string & {});
55
- /** Session key algorithm used for each sign-in. */
56
- export type AuthClientKeyType = "ECDSA" | "Ed25519";
57
- /** Structural shape of an `@icp-sdk/auth` `AuthClientStorage`. */
58
- export interface AuthClientStorageLike {
59
- get(key: string): Promise<string | CryptoKeyPair | null>;
60
- set(key: string, value: string | CryptoKeyPair): Promise<void>;
61
- remove(key: string): Promise<void>;
62
- }
63
- /**
64
- * Idle-session configuration forwarded to the underlying AuthClient.
65
- * `@icp-sdk/auth` v8 only; see {@link AuthenticationClientOptions.idleOptions}.
66
- */
67
- export interface AuthClientIdleOptions {
68
- /** Called once the user has been idle for `idleTimeout` ms. */
69
- onIdle?: () => unknown;
70
- /** Idle timeout in ms. @default 600_000 (10 minutes) */
71
- idleTimeout?: number;
72
- /** Treat scroll events as activity. @default false */
73
- captureScroll?: boolean;
74
- /** Scroll debounce in ms. @default 100 */
75
- scrollDebounce?: number;
76
- /** Disable idle detection entirely. @default false */
77
- disableIdle?: boolean;
78
- /**
79
- * Disable the built-in idle callback, which signs the user out and reloads
80
- * the page. @default false
81
- */
82
- disableDefaultIdleCallback?: boolean;
83
- }
84
- export interface AuthenticationClientOptions {
85
- /** Identity provider URL. @default "https://id.ai/authorize" */
86
- identityProvider?: string | URL;
87
- /** `window.open` features string for the identity provider popup. */
88
- windowOpenerFeatures?: string;
89
- /**
90
- * Provider for one-click sign-in.
91
- *
92
- * Only the `"google" | "apple" | "microsoft"` aliases reach the auth client.
93
- * Any other value is dropped here and has **no effect** — raw issuer URLs are
94
- * only meaningful on `requestOpenId`, where they scope the requested keys.
95
- * @see {@link IdentityAttributeOpenIdProvider}
96
- */
97
- openIdProvider?: IdentityAttributeOpenIdProvider;
98
- /**
99
- * Derivation origin for the identity provider.
100
- *
101
- * Required when the app is served from more than one origin (e.g. a custom
102
- * domain plus `<canisterId>.icp0.io`) and every origin must resolve to the
103
- * same principal.
104
- * @see https://github.com/dfinity/internet-identity/blob/main/docs/internet-identity-spec.adoc
105
- */
106
- derivationOrigin?: string | URL;
107
- /**
108
- * Persistent storage backend. `@icp-sdk/auth` v8 only: v10 drops it with a
109
- * one-time warning. @default IndexedDB
110
- */
111
- storage?: AuthClientStorageLike;
112
- /**
113
- * Session key algorithm. Use `"Ed25519"` when the storage backend cannot
114
- * hold a `CryptoKey`. `@icp-sdk/auth` v8 only: v10 drops it with a one-time
115
- * warning. @default "ECDSA"
116
- */
117
- keyType?: AuthClientKeyType;
118
- /**
119
- * Idle timeout configuration. Pass `{ disableIdle: true }` to opt out of the
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.
126
- */
127
- idleOptions?: AuthClientIdleOptions;
128
- /**
129
- * An existing identity to authenticate via delegation. `@icp-sdk/auth` v8
130
- * only: v10 drops it with a one-time warning.
131
- */
132
- identity?: SignIdentity | PartialIdentity;
133
- /**
134
- * How the client talks to the identity provider. `"redirect"` requires
135
- * `@icp-sdk/auth` v8 or later and is ignored by older versions.
136
- * @default "window"
137
- */
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;
148
- }
149
- export interface AuthClientSignInOptions {
150
- /** The longest the delegation may last, in nanoseconds. */
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
- */
164
- targets?: Principal[];
165
- }
166
- export interface AuthenticationSignInOptions extends AuthClientSignInOptions, AuthenticationClientOptions {
167
- onSuccess?: () => void | Promise<void>;
168
- onError?: (error?: string) => void | Promise<void>;
169
- }
170
- export interface RequestIdentityAttributesParameters extends AuthenticationClientOptions {
171
- keys: string[];
172
- nonce: IdentityAttributeNonce;
173
- /**
174
- * Sign in as part of the same identity-provider interaction.
175
- * @default true
176
- */
177
- signIn?: boolean;
178
- maxTimeToLive?: bigint;
179
- maxTimeToIdle?: bigint;
180
- targets?: Principal[];
181
- }
182
- export interface RequestOpenIdIdentityAttributesParameters extends Omit<RequestIdentityAttributesParameters, "openIdProvider"> {
183
- /**
184
- * Provider the requested `keys` are scoped to, producing
185
- * `openid:<issuer>:<key>`.
186
- *
187
- * Passing one of the `"google" | "apple" | "microsoft"` aliases additionally
188
- * routes sign-in through that provider, so the user grants attribute access
189
- * in the same step. A raw issuer URL only scopes the keys.
190
- * @see {@link IdentityAttributeOpenIdProvider}
191
- */
192
- openIdProvider: IdentityAttributeOpenIdProvider;
193
- }
194
- /**
195
- * Structural subset of `@icp-sdk/auth`'s `AuthClient` that IC Reactor relies
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.
202
- */
203
- export interface AuthClientLike {
204
- getIdentity(): Promise<Identity> | Identity;
205
- isAuthenticated(): Promise<boolean> | boolean;
206
- signIn(options?: AuthClientSignInOptions): Promise<Identity>;
207
- signOut(options?: {
208
- returnTo?: string;
209
- }): Promise<void>;
210
- requestAttributes(params: {
211
- keys: string[];
212
- nonce: () => Promise<Uint8Array>;
213
- }): Promise<SignedIdentityAttributes>;
214
- }
215
- export interface AuthState {
216
- identity: Identity | null;
217
- isAuthenticating: boolean;
218
- isAuthenticated: boolean;
219
- error: Error | undefined;
220
- }
221
- export {};
222
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":""}
@@ -1,41 +0,0 @@
1
- /**
2
- * Actor Hooks Factory - Creates a full set of React hooks for a reactor instance.
3
- *
4
- * This is the primary entry point for using the library in React applications.
5
- * It generates type-safe hooks for:
6
- * - Queries (useActorQuery)
7
- * - Suspense Queries (useActorSuspenseQuery)
8
- * - Infinite Queries (useActorInfiniteQuery)
9
- * - Suspense Infinite Queries (useActorSuspenseInfiniteQuery)
10
- * - Mutations (useActorMutation)
11
- *
12
- * @example
13
- * const { useActorQuery, useActorMutation } = createActorHooks(reactor)
14
- *
15
- * // In component
16
- * const { data } = useActorQuery({ functionName: 'get_user' })
17
- * const { mutate } = useActorMutation({ functionName: 'update_user' })
18
- */
19
- import { Reactor, DisplayReactor, ReactorReturnErr, ReactorReturnOk, ReactorQueryData, BaseActor, FunctionName, ReactorArgs, TransformKey } from "@ic-reactor/core";
20
- import { UseQueryResult, UseSuspenseQueryResult, UseInfiniteQueryResult, UseSuspenseInfiniteQueryResult, UseMutationResult, InfiniteData } from "@tanstack/react-query";
21
- import { useActorMethod, UseActorMethodParameters } from "./hooks/useActorMethod.js";
22
- import { SkippableInfiniteQueryConfig } from "./createInfiniteQuery.js";
23
- import { SuspenseInfiniteQueryConfig } from "./createSuspenseInfiniteQuery.js";
24
- import { SkippableQueryConfig, SuspenseQueryConfig, MutationConfig } from "./types.js";
25
- export type ActorHooks<Service, Transform extends TransformKey> = {
26
- useActorQuery: {
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>>;
29
- };
30
- useActorSuspenseQuery: {
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>>;
33
- };
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>;
37
- useActorMethod: <Method extends FunctionName<Service>>(config: Omit<UseActorMethodParameters<Service, Method, Transform>, "reactor">) => ReturnType<typeof useActorMethod<Service, Method, Transform>>;
38
- };
39
- export declare function createActorHooks<Service>(reactor: DisplayReactor<Service>): ActorHooks<Service, "display">;
40
- export declare function createActorHooks<Service = BaseActor, Transform extends TransformKey = "candid">(reactor: Reactor<Service, Transform>): ActorHooks<Service, Transform>;
41
- //# sourceMappingURL=createActorHooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createActorHooks.d.ts","sourceRoot":"","sources":["../src/createActorHooks.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { useActorQuery } from "./hooks/useActorQuery.js";
2
- import { useActorSuspenseQuery } from "./hooks/useActorSuspenseQuery.js";
3
- import { useActorInfiniteQuery } from "./hooks/useActorInfiniteQuery.js";
4
- import { useActorSuspenseInfiniteQuery } from "./hooks/useActorSuspenseInfiniteQuery.js";
5
- import { useActorMutation } from "./hooks/useActorMutation.js";
6
- import { useActorMethod, } from "./hooks/useActorMethod.js";
7
- export function createActorHooks(reactor) {
8
- return {
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 })),
14
- useActorMethod: (config) => useActorMethod({ ...config, reactor }),
15
- };
16
- }
17
- //# sourceMappingURL=createActorHooks.js.map
@@ -1 +0,0 @@
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"}
@@ -1,185 +0,0 @@
1
- /**
2
- * Infinite Query Factory - Generic wrapper for React Query paginated canister data
3
- *
4
- * Creates unified fetch/hook/invalidate functions for any paginated canister method.
5
- * Works with any Reactor instance.
6
- *
7
- * @example
8
- * const postsQuery = createInfiniteQuery(reactor, {
9
- * functionName: "get_posts",
10
- * initialPageParam: 0,
11
- * getArgs: (cursor) => [{ cursor, limit: 10 }] as const,
12
- * getNextPageParam: (lastPage) => lastPage.nextCursor,
13
- * })
14
- *
15
- * // In component
16
- * const { data, fetchNextPage, hasNextPage } = postsQuery.useInfiniteQuery()
17
- *
18
- * // Flatten all pages
19
- * const allPosts = data?.pages.flatMap(page => page.posts)
20
- *
21
- * // Invalidate cache
22
- * postsQuery.invalidate()
23
- */
24
- import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, ReactorReturnOk, ReactorQueryData, ReactorReturnErr } from "@ic-reactor/core";
25
- import { QueryKey, InfiniteData, UseInfiniteQueryResult, UseInfiniteQueryOptions, InfiniteQueryObserverOptions, SkipToken } from "@tanstack/react-query";
26
- import { CallConfig } from "@icp-sdk/core/agent";
27
- import type { NoInfer, QueryCacheControls, QueryFactoryMethods } from "./types.js";
28
- type InfiniteQueryFactoryFn<Service, Method extends FunctionName<Service>, Transform extends TransformKey, TPageParam, Selected> = QueryFactoryMethods & {
29
- (getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>): InfiniteQueryResult<InfiniteQueryPageData<Service, Method, Transform>, TPageParam, Selected, InfiniteQueryError<Service, Method, Transform>>;
30
- };
31
- /** The raw page data type returned by the query function */
32
- export type InfiniteQueryPageData<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>;
33
- /** The error type for infinite queries */
34
- export type InfiniteQueryError<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorReturnErr<Service, Method, Transform>;
35
- /**
36
- * Configuration for createInfiniteQuery.
37
- * Extends InfiniteQueryObserverOptions to accept standard TanStack Query
38
- * infinite-query options at the create level (e.g. refetchInterval,
39
- * refetchOnMount, refetchOnWindowFocus, retry, gcTime, networkMode).
40
- *
41
- * @template Service - The actor interface type
42
- * @template Method - The method name on the actor
43
- * @template Transform - The transformation key (identity, display, etc.)
44
- * @template TPageParam - The type of the page parameter
45
- * @template Selected - The type returned after select transformation
46
- */
47
- export interface InfiniteQueryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<InfiniteQueryPageData<Service, Method, Transform>, TPageParam>> extends Omit<InfiniteQueryObserverOptions<InfiniteQueryPageData<Service, Method, Transform>, InfiniteQueryError<Service, Method, Transform>, Selected, QueryKey, TPageParam>, "queryKey" | "queryFn"> {
48
- /** The method to call on the canister */
49
- functionName: Method;
50
- /** Call configuration for the actor method */
51
- callConfig?: CallConfig;
52
- /** Custom query key (optional, auto-generated if not provided) */
53
- queryKey?: QueryKey;
54
- /** Initial page parameter */
55
- initialPageParam: TPageParam;
56
- /** Function to get args from page parameter */
57
- getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>;
58
- /**
59
- * Narrows what the cache key derives from the call arguments.
60
- *
61
- * By default the key is scoped by `getArgs(initialPageParam)`, so two
62
- * infinite queries on the same method with different arguments stay in
63
- * separate cache entries. Supply this when those args embed the cursor and
64
- * only part of them identifies the query — return the stable, serializable
65
- * portion (typically everything except the pagination field).
66
- */
67
- getKeyArgs?: (args: ReactorArgs<Service, Method, Transform>) => unknown;
68
- /** Function to determine next page parameter */
69
- getNextPageParam: (lastPage: InfiniteQueryPageData<Service, Method, Transform>, allPages: InfiniteQueryPageData<Service, Method, Transform>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
70
- /** Function to determine previous page parameter (for bi-directional) */
71
- getPreviousPageParam?: (firstPage: InfiniteQueryPageData<Service, Method, Transform>, allPages: InfiniteQueryPageData<Service, Method, Transform>[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
72
- }
73
- /**
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).
109
- */
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">;
111
- /**
112
- * useInfiniteQuery hook with chained select support.
113
- */
114
- export interface UseInfiniteQueryWithSelect<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> {
115
- (options?: Omit<UseInfiniteQueryOptions<TPageData, TError, Selected, QueryKey, TPageParam>, "select" | "queryKey" | "queryFn" | "initialPageParam" | "getNextPageParam" | "getPreviousPageParam">): UseInfiniteQueryResult<Selected, TError>;
116
- <TFinal = Selected>(options: Omit<UseInfiniteQueryOptions<TPageData, TError, TFinal, QueryKey, TPageParam>, "queryKey" | "queryFn" | "select" | "initialPageParam" | "getNextPageParam" | "getPreviousPageParam"> & {
117
- select: (data: Selected) => TFinal;
118
- }): UseInfiniteQueryResult<TFinal, TError>;
119
- }
120
- /**
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 }`.
126
- *
127
- * @template TPageData - The raw page data type
128
- * @template TPageParam - The page parameter type
129
- * @template Selected - The type after select transformation
130
- * @template TError - The error type
131
- */
132
- export interface InfiniteQueryResult<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> extends QueryCacheControls<InfiniteData<TPageData, TPageParam>> {
133
- /** Fetch first page in loader (uses ensureQueryData for cache-first) */
134
- fetch: () => Promise<Selected>;
135
- /** React hook for components - supports pagination */
136
- useInfiniteQuery: UseInfiniteQueryWithSelect<TPageData, TPageParam, Selected, TError>;
137
- /** Invalidate the cache (refetches if query is active) */
138
- invalidate: () => Promise<void>;
139
- /** Get query key (for advanced React Query usage) */
140
- getQueryKey: () => QueryKey;
141
- /**
142
- * Read data directly from cache without fetching.
143
- * Returns undefined if data is not in cache.
144
- */
145
- getCacheData: {
146
- (): Selected | undefined;
147
- <TFinal>(select: (data: Selected) => TFinal): TFinal | undefined;
148
- };
149
- }
150
- export declare function createInfiniteQuery<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, TPageParam = unknown, Selected = InfiniteData<InfiniteQueryPageData<Service, Method, Transform>, TPageParam>>(reactor: Reactor<Service, Transform>, config: InfiniteQueryConfig<NoInfer<Service>, Method, Transform, TPageParam, Selected>): InfiniteQueryResult<InfiniteQueryPageData<Service, Method, Transform>, TPageParam, Selected, InfiniteQueryError<Service, Method, Transform>>;
151
- /**
152
- * Create an infinite query factory that accepts getArgs at call time.
153
- * Useful when pagination logic varies by context.
154
- *
155
- * @template Service - The actor interface type
156
- * @template Method - The method name on the actor
157
- * @template Transform - The transformation key (identity, display, etc.)
158
- * @template TPageParam - The page parameter type
159
- * @template Selected - The type returned after select transformation
160
- *
161
- * @param reactor - The Reactor instance
162
- * @param config - Infinite query configuration (without getArgs)
163
- * @returns A function that accepts getArgs and returns an InfiniteQueryResult
164
- *
165
- * @example
166
- * const getPostsQuery = createInfiniteQueryFactory(reactor, {
167
- * functionName: "get_posts",
168
- * initialPageParam: 0,
169
- * getKeyArgs: (args) => {
170
- * const [{ userId }] = args
171
- * return [{ userId }]
172
- * },
173
- * getNextPageParam: (lastPage) => lastPage.nextCursor,
174
- * })
175
- *
176
- * // Create query with specific args builder
177
- * const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
178
- * const { data, fetchNextPage } = userPostsQuery.useInfiniteQuery()
179
- *
180
- * // Every list this factory made, whatever its args and pages
181
- * await getPostsQuery.invalidate()
182
- */
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>;
184
- export {};
185
- //# sourceMappingURL=createInfiniteQuery.d.ts.map
@@ -1 +0,0 @@
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,EAC5B,SAAS,EACV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EACV,OAAO,EACP,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AAanB,KAAK,sBAAsB,CACzB,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,EAC9B,UAAU,EACV,QAAQ,IACN,mBAAmB,GAAG;IACxB,CACE,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,GAC1E,mBAAmB,CACpB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,UAAU,EACV,QAAQ,EACR,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC/C,CAAA;CACF,CAAA;AAMD,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,CAC/B,OAAO,GAAG,SAAS,EACnB,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,SAAS,SAAS,YAAY,GAAG,QAAQ,IACvC,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAEjE,0CAA0C;AAC1C,MAAM,MAAM,kBAAkB,CAC5B,OAAO,GAAG,SAAS,EACnB,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,SAAS,SAAS,YAAY,GAAG,QAAQ,IACvC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAMhD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB,CAClC,OAAO,GAAG,SAAS,EACnB,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,YAAY,CACrB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,UAAU,CACX,CACD,SAAQ,IAAI,CACZ,4BAA4B,CAC1B,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC9C,QAAQ,EACR,QAAQ,EACR,UAAU,CACX,EACD,UAAU,GAAG,SAAS,CACvB;IACC,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,6BAA6B;IAC7B,gBAAgB,EAAE,UAAU,CAAA;IAC5B,+CAA+C;IAC/C,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IAC3E;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,OAAO,CAAA;IACvE,gDAAgD;IAChD,gBAAgB,EAAE,CAChB,QAAQ,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC3D,QAAQ,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAC7D,aAAa,EAAE,UAAU,EACzB,aAAa,EAAE,UAAU,EAAE,KACxB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAA;IAClC,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,CACrB,SAAS,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC5D,QAAQ,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAC7D,cAAc,EAAE,UAAU,EAC1B,aAAa,EAAE,UAAU,EAAE,KACxB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAA;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,4BAA4B,CAC3C,OAAO,GAAG,SAAS,EACnB,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,YAAY,CACrB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,UAAU,CACX,CACD,SAAQ,IAAI,CACZ,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,EACrE,SAAS,CACV;IACC;;;OAGG;IACH,OAAO,EACH,CAAC,CAAC,SAAS,EAAE,UAAU,KAAK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,GACpE,SAAS,CAAA;CACd;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,CACpC,OAAO,GAAG,SAAS,EACnB,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,YAAY,CACrB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,UAAU,CACX,IACC,IAAI,CAIN,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,EACrE,SAAS,CACV,CAAA;AAMD;;GAEG;AACH,MAAM,WAAW,0BAA0B,CACzC,SAAS,EACT,UAAU,EACV,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAC9C,MAAM,GAAG,KAAK;IAGd,CACE,OAAO,CAAC,EAAE,IAAI,CACZ,uBAAuB,CACrB,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,CACX,EACC,QAAQ,GACR,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,CACzB,GACA,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAG3C,CAAC,MAAM,GAAG,QAAQ,EAChB,OAAO,EAAE,IAAI,CACX,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EACtE,UAAU,GACV,SAAS,GACT,QAAQ,GACR,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,CACzB,GAAG;QACF,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAA;KACnC,GACA,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB,CAClC,SAAS,EACT,UAAU,EACV,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAC9C,MAAM,GAAG,KAAK,CACd,SAAQ,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC/D,wEAAwE;IACxE,KAAK,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;IAE9B,sDAAsD;IACtD,gBAAgB,EAAE,0BAA0B,CAC1C,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,CACP,CAAA;IAED,0DAA0D;IAC1D,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/B,qDAAqD;IACrD,WAAW,EAAE,MAAM,QAAQ,CAAA;IAE3B;;;OAGG;IACH,YAAY,EAAE;QACZ,IAAI,QAAQ,GAAG,SAAS,CAAA;QACxB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KACjE,CAAA;CACF;AAiND,wBAAgB,mBAAmB,CACjC,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,YAAY,CACrB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,UAAU,CACX,EAED,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,MAAM,EAAE,mBAAmB,CACzB,OAAO,CAAC,OAAO,CAAC,EAChB,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,CACT,GACA,mBAAmB,CACpB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,UAAU,EACV,QAAQ,EACR,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC/C,CAWA;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,wBAAgB,0BAA0B,CACxC,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,YAAY,CACrB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACjD,UAAU,CACX,EAED,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,MAAM,EAAE,0BAA0B,CAChC,OAAO,CAAC,OAAO,CAAC,EAChB,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,CACT,GACA,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAmC1E"}