@ic-reactor/react 3.5.1 → 3.7.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 +28 -9
- package/dist/auth/authentication-manager.d.ts +66 -0
- package/dist/auth/authentication-manager.d.ts.map +1 -0
- package/dist/auth/authentication-manager.js +458 -0
- package/dist/auth/authentication-manager.js.map +1 -0
- package/dist/auth/constants.d.ts +18 -0
- package/dist/auth/constants.d.ts.map +1 -0
- package/dist/auth/constants.js +18 -0
- package/dist/auth/constants.js.map +1 -0
- package/dist/auth/createIdentityAttributeHooks.d.ts +14 -0
- package/dist/auth/createIdentityAttributeHooks.d.ts.map +1 -0
- package/dist/auth/createIdentityAttributeHooks.js +54 -0
- package/dist/auth/createIdentityAttributeHooks.js.map +1 -0
- package/dist/auth/identity-attributes-manager.d.ts +19 -0
- package/dist/auth/identity-attributes-manager.d.ts.map +1 -0
- package/dist/auth/identity-attributes-manager.js +94 -0
- package/dist/auth/identity-attributes-manager.js.map +1 -0
- package/dist/auth/identity-attributes.d.ts +19 -0
- package/dist/auth/identity-attributes.d.ts.map +1 -0
- package/dist/auth/identity-attributes.js +170 -0
- package/dist/auth/identity-attributes.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/types.d.ts +75 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/createActorHooks.d.ts +12 -12
- package/dist/createActorHooks.d.ts.map +1 -1
- package/dist/createActorHooks.js.map +1 -1
- package/dist/createInfiniteQuery.d.ts +32 -32
- package/dist/createInfiniteQuery.d.ts.map +1 -1
- package/dist/createInfiniteQuery.js +6 -6
- package/dist/createInfiniteQuery.js.map +1 -1
- package/dist/createMutation.d.ts +12 -1
- package/dist/createMutation.d.ts.map +1 -1
- package/dist/createMutation.js +11 -0
- package/dist/createMutation.js.map +1 -1
- package/dist/createQuery.d.ts +12 -2
- package/dist/createQuery.d.ts.map +1 -1
- package/dist/createQuery.js +15 -5
- package/dist/createQuery.js.map +1 -1
- package/dist/createSuspenseInfiniteQuery.d.ts +31 -31
- package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/createSuspenseInfiniteQuery.js +6 -6
- package/dist/createSuspenseInfiniteQuery.js.map +1 -1
- package/dist/createSuspenseQuery.d.ts +2 -2
- package/dist/createSuspenseQuery.d.ts.map +1 -1
- package/dist/createSuspenseQuery.js.map +1 -1
- package/dist/defineReactor.d.ts +74 -0
- package/dist/defineReactor.d.ts.map +1 -0
- package/dist/defineReactor.js +75 -0
- package/dist/defineReactor.js.map +1 -0
- package/dist/{createAuthHooks.d.ts → hooks/createAuthHooks.d.ts} +6 -13
- package/dist/hooks/createAuthHooks.d.ts.map +1 -0
- package/dist/{createAuthHooks.js → hooks/createAuthHooks.js} +12 -57
- package/dist/hooks/createAuthHooks.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.d.ts +9 -9
- package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.js +3 -1
- package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorMethod.d.ts +17 -17
- package/dist/hooks/useActorMethod.d.ts.map +1 -1
- package/dist/hooks/useActorMethod.js.map +1 -1
- package/dist/hooks/useActorMutation.d.ts +18 -7
- package/dist/hooks/useActorMutation.d.ts.map +1 -1
- package/dist/hooks/useActorMutation.js +11 -0
- package/dist/hooks/useActorMutation.js.map +1 -1
- package/dist/hooks/useActorQuery.d.ts +8 -8
- package/dist/hooks/useActorQuery.d.ts.map +1 -1
- package/dist/hooks/useActorQuery.js.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +9 -9
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js +3 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorSuspenseQuery.d.ts +8 -8
- package/dist/hooks/useActorSuspenseQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseQuery.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +24 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +10 -2
- package/dist/utils.js.map +1 -1
- package/llms.txt +48 -0
- package/package.json +28 -22
- package/src/auth/authentication-manager.ts +519 -0
- package/src/auth/constants.ts +25 -0
- package/src/auth/createIdentityAttributeHooks.ts +83 -0
- package/src/auth/identity-attributes-manager.ts +127 -0
- package/src/auth/identity-attributes.ts +270 -0
- package/src/auth/index.ts +7 -0
- package/src/auth/types.ts +88 -0
- package/src/createActorHooks.ts +81 -49
- package/src/createInfiniteQuery.ts +153 -97
- package/src/createMutation.ts +34 -18
- package/src/createQuery.ts +92 -48
- package/src/createSuspenseInfiniteQuery.ts +165 -114
- package/src/createSuspenseQuery.ts +67 -41
- package/src/defineReactor.test.ts +70 -0
- package/src/defineReactor.ts +150 -0
- package/src/{createAuthHooks.ts → hooks/createAuthHooks.ts} +17 -98
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useActorInfiniteQuery.ts +44 -30
- package/src/hooks/useActorMethod.ts +62 -53
- package/src/hooks/useActorMutation.ts +47 -30
- package/src/hooks/useActorQuery.ts +36 -32
- package/src/hooks/useActorSuspenseInfiniteQuery.ts +56 -30
- package/src/hooks/useActorSuspenseQuery.ts +42 -32
- package/src/index.ts +3 -1
- package/src/types.ts +76 -71
- package/src/utils.test.ts +14 -0
- package/src/utils.ts +15 -2
- package/dist/createAuthHooks.d.ts.map +0 -1
- package/dist/createAuthHooks.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,QAAQ,EAER,YAAY,EACZ,8BAA8B,EAC9B,+BAA+B,EAG/B,4BAA4B,EAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC,KAAK,kCAAkC,GAAG;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAA;AAED,KAAK,8BAA8B,CACjC,
|
|
1
|
+
{"version":3,"file":"createSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* const allPosts = data.pages.flatMap(page => page.posts)
|
|
25
25
|
*/
|
|
26
26
|
import { useSuspenseInfiniteQuery, } from "@tanstack/react-query";
|
|
27
|
-
import { mergeFactoryQueryKey } from "./utils";
|
|
27
|
+
import { mergeFactoryQueryKey, normalizeQueryData } from "./utils";
|
|
28
28
|
// ============================================================================
|
|
29
29
|
// Internal Implementation
|
|
30
30
|
// ============================================================================
|
|
@@ -47,7 +47,7 @@ const createSuspenseInfiniteQueryImpl = (reactor, config) => {
|
|
|
47
47
|
args,
|
|
48
48
|
callConfig,
|
|
49
49
|
});
|
|
50
|
-
return result;
|
|
50
|
+
return normalizeQueryData(result);
|
|
51
51
|
};
|
|
52
52
|
// Get infinite query options for fetchInfiniteQuery
|
|
53
53
|
const getInfiniteQueryOptions = () => ({
|
|
@@ -128,11 +128,11 @@ export function createSuspenseInfiniteQuery(reactor, config) {
|
|
|
128
128
|
* Create a suspense infinite query factory that accepts getArgs at call time.
|
|
129
129
|
* Useful when pagination logic varies by context.
|
|
130
130
|
*
|
|
131
|
-
* @template
|
|
132
|
-
* @template
|
|
133
|
-
* @template
|
|
131
|
+
* @template Service - The actor interface type
|
|
132
|
+
* @template Method - The method name on the actor
|
|
133
|
+
* @template Transform - The transformation key (identity, display, etc.)
|
|
134
134
|
* @template TPageParam - The page parameter type
|
|
135
|
-
* @template
|
|
135
|
+
* @template Selected - The type returned after select transformation
|
|
136
136
|
*
|
|
137
137
|
* @param reactor - The Reactor instance
|
|
138
138
|
* @param config - Suspense infinite query configuration (without getArgs)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"createSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,6 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import type { Reactor, FunctionName, ReactorArgs, TransformKey } from "@ic-reactor/core";
|
|
22
22
|
import type { QueryFnData, QueryError, SuspenseQueryConfig, SuspenseQueryResult, SuspenseQueryFactoryConfig, NoInfer } from "./types";
|
|
23
|
-
export declare function createSuspenseQuery<
|
|
24
|
-
export declare function createSuspenseQueryFactory<
|
|
23
|
+
export declare function createSuspenseQuery<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, Selected = QueryFnData<Service, Method, Transform>>(reactor: Reactor<Service, Transform>, config: SuspenseQueryConfig<NoInfer<Service>, Method, Transform, Selected>): SuspenseQueryResult<QueryFnData<Service, Method, Transform>, Selected, QueryError<Service, Method, Transform>>;
|
|
24
|
+
export declare function createSuspenseQueryFactory<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, Selected = QueryFnData<Service, Method, Transform>>(reactor: Reactor<Service, Transform>, config: SuspenseQueryFactoryConfig<NoInfer<Service>, Method, Transform, Selected>): (args: ReactorArgs<Service, Method, Transform>) => SuspenseQueryResult<QueryFnData<Service, Method, Transform>, Selected, QueryError<Service, Method, Transform>>;
|
|
25
25
|
//# sourceMappingURL=createSuspenseQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSuspenseQuery.d.ts","sourceRoot":"","sources":["../src/createSuspenseQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,mBAAmB,EAEnB,mBAAmB,EACnB,0BAA0B,EAC1B,OAAO,EACR,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"createSuspenseQuery.d.ts","sourceRoot":"","sources":["../src/createSuspenseQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,mBAAmB,EAEnB,mBAAmB,EACnB,0BAA0B,EAC1B,OAAO,EACR,MAAM,SAAS,CAAA;AA+GhB,wBAAgB,mBAAmB,CACjC,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAElD,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,GACzE,mBAAmB,CACpB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACvC,QAAQ,EACR,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CACvC,CAKA;AAMD,wBAAgB,0BAA0B,CACxC,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAElD,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,MAAM,EAAE,0BAA0B,CAChC,OAAO,CAAC,OAAO,CAAC,EAChB,MAAM,EACN,SAAS,EACT,QAAQ,CACT,GACA,CACD,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,KAC1C,mBAAmB,CACtB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACvC,QAAQ,EACR,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CACvC,CAqCA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSuspenseQuery.js","sourceRoot":"","sources":["../src/createSuspenseQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAUxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE5C,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,uBAAuB,GAAG,CAM9B,
|
|
1
|
+
{"version":3,"file":"createSuspenseQuery.js","sourceRoot":"","sources":["../src/createSuspenseQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAUxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE5C,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,uBAAuB,GAAG,CAM9B,OAAoC,EACpC,MAAiE,EAKjE,EAAE;IAIF,MAAM,EACJ,YAAY,EACZ,IAAI,EACJ,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EACzB,MAAM,EACN,QAAQ,EAAE,cAAc,EACxB,GAAG,IAAI,EACR,GAAG,MAAM,CAAA;IAEV,MAAM,MAAM,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;IAE/D,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAE1D,MAAM,WAAW,GAAG,CAAC,GAAU,EAAY,EAAE,CAC3C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAA2B,CAAA;IAErD,+DAA+D;IAC/D,MAAM,KAAK,GAAG,KAAK,IAAuB,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC/C,OAAO,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC,CAAA;IAED,mEAAmE;IACnE,MAAM,QAAQ,GAAG,GAAkB,EAAE;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC;YACvC,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,SAAS;SACV,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,oBAAoB,GAItB,CAAC,OAAY,EAAO,EAAE;QACxB,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,gBAAgB,CACrB;YACE,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,SAAS;YACT,GAAG,IAAI;YACP,GAAG,OAAO;YACV,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;SACpD,EACD,OAAO,CAAC,WAAW,CACpB,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;IAC1E,CAAC,CAAA;IAED,MAAM,YAAY,GAIE,CAAC,QAAsC,EAAO,EAAE;QAClE,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IACjD,CAAC,CAAA;IAED,MAAM,OAAO,GAA4D,CACvE,OAAO,EACP,EAAE;QACF,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,OAAc,CAClD,CAAA;IACrB,CAAC,CAAA;IAED,OAAO;QACL,KAAK;QACL,QAAQ;QACR,gBAAgB,EAAE,oBAAoB;QACtC,UAAU;QACV,WAAW;QACX,YAAY;QACZ,OAAO;KACR,CAAA;AACH,CAAC,CAAA;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,UAAU,mBAAmB,CAMjC,OAAoC,EACpC,MAA0E;IAM1E,OAAO,uBAAuB,CAC5B,OAAO,EACP,MAAmE,CACpE,CAAA;AACH,CAAC;AAED,+EAA+E;AAC/E,uDAAuD;AACvD,+EAA+E;AAE/E,MAAM,UAAU,0BAA0B,CAMxC,OAAoC,EACpC,MAKC;IAQD,MAAM,KAAK,GAAG,IAAI,GAAG,EAOlB,CAAA;IAEH,OAAO,CAAC,IAA6C,EAAE,EAAE;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;YACnC,YAAY,EAAE,MAAM,CAAC,YAAsB;YAC3C,IAAI;SACL,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAEpC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACpC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAE7B,MAAM,MAAM,GAAG,uBAAuB,CAKpC,OAAO,EAAE;YACT,GAAI,MAKF;YACF,IAAI;SACL,CAAC,CAAA;QACF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* defineReactor - One-call bootstrap for a canister reactor + its React hooks.
|
|
3
|
+
*
|
|
4
|
+
* Collapses the four manual steps (QueryClient → ClientManager → Reactor →
|
|
5
|
+
* createActorHooks) into a single call, and turns the Reactor / DisplayReactor
|
|
6
|
+
* choice into a `display` flag.
|
|
7
|
+
* Use this when one-call bootstrap is enough. If you need reusable
|
|
8
|
+
* method-specific operations outside React, compose with query/mutation
|
|
9
|
+
* factories after setup.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { defineReactor } from "@ic-reactor/react"
|
|
14
|
+
* import { idlFactory, type _SERVICE } from "./declarations/backend"
|
|
15
|
+
*
|
|
16
|
+
* const { reactor, useActorQuery, useActorMutation } = defineReactor<_SERVICE>({
|
|
17
|
+
* name: "backend",
|
|
18
|
+
* idlFactory,
|
|
19
|
+
* canisterId: "rrkah-fqaaa-aaaaa-aaaaq-cai",
|
|
20
|
+
* display: true, // ⇒ DisplayReactor (string principals/bigints)
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* function Profile() {
|
|
24
|
+
* const { data } = useActorQuery({ functionName: "get_profile" })
|
|
25
|
+
* return <div>{data?.name}</div>
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example Reuse an existing ClientManager (multiple canisters share one agent)
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const ledger = defineReactor<_LEDGER>({ name: "ledger", idlFactory: ledgerIdl })
|
|
32
|
+
* const index = defineReactor<_INDEX>({
|
|
33
|
+
* name: "index",
|
|
34
|
+
* idlFactory: indexIdl,
|
|
35
|
+
* clientManager: ledger.clientManager,
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
import { ClientManager, Reactor, DisplayReactor } from "@ic-reactor/core";
|
|
40
|
+
import type { BaseActor, TransformKey, ReactorParameters, ClientManagerParameters, DisplayReactorParameters } from "@ic-reactor/core";
|
|
41
|
+
import { QueryClient } from "@tanstack/react-query";
|
|
42
|
+
import { ActorHooks } from "./createActorHooks";
|
|
43
|
+
/** Options shared by both the standard and display variants of defineReactor. */
|
|
44
|
+
export interface DefineReactorSharedParameters extends Omit<ReactorParameters, "clientManager">, Omit<ClientManagerParameters, "queryClient"> {
|
|
45
|
+
/**
|
|
46
|
+
* Reuse an existing ClientManager (e.g. to share one agent across canisters).
|
|
47
|
+
* When omitted, a ClientManager is created from the agent options below.
|
|
48
|
+
*/
|
|
49
|
+
clientManager?: ClientManager;
|
|
50
|
+
/**
|
|
51
|
+
* Reuse an existing QueryClient. When omitted, the provided ClientManager's
|
|
52
|
+
* QueryClient is reused, or a new one is created.
|
|
53
|
+
*/
|
|
54
|
+
queryClient?: QueryClient;
|
|
55
|
+
}
|
|
56
|
+
/** Parameters for a standard (raw Candid types) reactor. */
|
|
57
|
+
export interface DefineReactorParameters extends DefineReactorSharedParameters {
|
|
58
|
+
display?: false;
|
|
59
|
+
}
|
|
60
|
+
/** Parameters for a DisplayReactor (UI-friendly string principals/bigints). */
|
|
61
|
+
export interface DefineDisplayReactorParameters<Service> extends DefineReactorSharedParameters {
|
|
62
|
+
display: true;
|
|
63
|
+
/** Optional initial argument validators (receive display types). */
|
|
64
|
+
validators?: DisplayReactorParameters<Service>["validators"];
|
|
65
|
+
}
|
|
66
|
+
/** The reactor instance plus its bound hooks and shared infrastructure. */
|
|
67
|
+
export type DefineReactorResult<Service, Transform extends TransformKey, R extends Reactor<Service, Transform>> = ActorHooks<Service, Transform> & {
|
|
68
|
+
reactor: R;
|
|
69
|
+
clientManager: ClientManager;
|
|
70
|
+
queryClient: QueryClient;
|
|
71
|
+
};
|
|
72
|
+
export declare function defineReactor<Service = BaseActor>(params: DefineDisplayReactorParameters<Service>): DefineReactorResult<Service, "display", DisplayReactor<Service>>;
|
|
73
|
+
export declare function defineReactor<Service = BaseActor>(params: DefineReactorParameters): DefineReactorResult<Service, "candid", Reactor<Service, "candid">>;
|
|
74
|
+
//# sourceMappingURL=defineReactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineReactor.d.ts","sourceRoot":"","sources":["../src/defineReactor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAoB,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEjE,iFAAiF;AACjF,MAAM,WAAW,6BACf,SACE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,EACxC,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC;IAC9C;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,4DAA4D;AAC5D,MAAM,WAAW,uBAAwB,SAAQ,6BAA6B;IAC5E,OAAO,CAAC,EAAE,KAAK,CAAA;CAChB;AAED,+EAA+E;AAC/E,MAAM,WAAW,8BAA8B,CAC7C,OAAO,CACP,SAAQ,6BAA6B;IACrC,OAAO,EAAE,IAAI,CAAA;IACb,oEAAoE;IACpE,UAAU,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CAC7D;AAED,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,CAC7B,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,CAAC,SAAS,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,IACnC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG;IACnC,OAAO,EAAE,CAAC,CAAA;IACV,aAAa,EAAE,aAAa,CAAA;IAC5B,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAG,SAAS,EAC/C,MAAM,EAAE,8BAA8B,CAAC,OAAO,CAAC,GAC9C,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;AAEnE,wBAAgB,aAAa,CAAC,OAAO,GAAG,SAAS,EAC/C,MAAM,EAAE,uBAAuB,GAC9B,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* defineReactor - One-call bootstrap for a canister reactor + its React hooks.
|
|
3
|
+
*
|
|
4
|
+
* Collapses the four manual steps (QueryClient → ClientManager → Reactor →
|
|
5
|
+
* createActorHooks) into a single call, and turns the Reactor / DisplayReactor
|
|
6
|
+
* choice into a `display` flag.
|
|
7
|
+
* Use this when one-call bootstrap is enough. If you need reusable
|
|
8
|
+
* method-specific operations outside React, compose with query/mutation
|
|
9
|
+
* factories after setup.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { defineReactor } from "@ic-reactor/react"
|
|
14
|
+
* import { idlFactory, type _SERVICE } from "./declarations/backend"
|
|
15
|
+
*
|
|
16
|
+
* const { reactor, useActorQuery, useActorMutation } = defineReactor<_SERVICE>({
|
|
17
|
+
* name: "backend",
|
|
18
|
+
* idlFactory,
|
|
19
|
+
* canisterId: "rrkah-fqaaa-aaaaa-aaaaq-cai",
|
|
20
|
+
* display: true, // ⇒ DisplayReactor (string principals/bigints)
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* function Profile() {
|
|
24
|
+
* const { data } = useActorQuery({ functionName: "get_profile" })
|
|
25
|
+
* return <div>{data?.name}</div>
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example Reuse an existing ClientManager (multiple canisters share one agent)
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const ledger = defineReactor<_LEDGER>({ name: "ledger", idlFactory: ledgerIdl })
|
|
32
|
+
* const index = defineReactor<_INDEX>({
|
|
33
|
+
* name: "index",
|
|
34
|
+
* idlFactory: indexIdl,
|
|
35
|
+
* clientManager: ledger.clientManager,
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
import { ClientManager, Reactor, DisplayReactor } from "@ic-reactor/core";
|
|
40
|
+
import { QueryClient } from "@tanstack/react-query";
|
|
41
|
+
import { createActorHooks } from "./createActorHooks";
|
|
42
|
+
export function defineReactor(params
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
) {
|
|
45
|
+
const { clientManager: providedClientManager, queryClient: providedQueryClient, display, agentOptions, name, idlFactory, canisterId, pollingOptions, } = params;
|
|
46
|
+
const queryClient = providedQueryClient ??
|
|
47
|
+
providedClientManager?.queryClient ??
|
|
48
|
+
new QueryClient();
|
|
49
|
+
const clientManager = providedClientManager ??
|
|
50
|
+
new ClientManager({
|
|
51
|
+
queryClient,
|
|
52
|
+
agentOptions,
|
|
53
|
+
});
|
|
54
|
+
const reactorConfig = {
|
|
55
|
+
clientManager,
|
|
56
|
+
name,
|
|
57
|
+
idlFactory,
|
|
58
|
+
canisterId,
|
|
59
|
+
pollingOptions,
|
|
60
|
+
};
|
|
61
|
+
// The Reactor / DisplayReactor union cannot be expressed through the shared
|
|
62
|
+
// implementation signature, so the body is intentionally untyped here; the
|
|
63
|
+
// public overloads above carry the precise types for callers.
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
|
+
const reactor = display
|
|
66
|
+
? new DisplayReactor({
|
|
67
|
+
...reactorConfig,
|
|
68
|
+
validators: params
|
|
69
|
+
.validators,
|
|
70
|
+
})
|
|
71
|
+
: new Reactor(reactorConfig);
|
|
72
|
+
const hooks = createActorHooks(reactor);
|
|
73
|
+
return { ...hooks, reactor, clientManager, queryClient };
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=defineReactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineReactor.js","sourceRoot":"","sources":["../src/defineReactor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAQzE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAc,MAAM,oBAAoB,CAAA;AAoDjE,MAAM,UAAU,aAAa,CAC3B,MAAyE;AACzE,8DAA8D;;IAE9D,MAAM,EACJ,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,mBAAmB,EAChC,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,cAAc,GACf,GAAG,MAAiD,CAAA;IAErD,MAAM,WAAW,GACf,mBAAmB;QACnB,qBAAqB,EAAE,WAAW;QAClC,IAAI,WAAW,EAAE,CAAA;IAEnB,MAAM,aAAa,GACjB,qBAAqB;QACrB,IAAI,aAAa,CAAC;YAChB,WAAW;YACX,YAAY;SACb,CAAC,CAAA;IAEJ,MAAM,aAAa,GAAG;QACpB,aAAa;QACb,IAAI;QACJ,UAAU;QACV,UAAU;QACV,cAAc;KACf,CAAA;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,8DAA8D;IAC9D,8DAA8D;IAC9D,MAAM,OAAO,GAAQ,OAAO;QAC1B,CAAC,CAAC,IAAI,cAAc,CAAU;YAC1B,GAAG,aAAa;YAChB,UAAU,EAAG,MAAkD;iBAC5D,UAAU;SACd,CAAC;QACJ,CAAC,CAAC,IAAI,OAAO,CAAU,aAAa,CAAC,CAAA;IAEvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEvC,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAC1D,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { AuthenticationManager } from "../auth/authentication-manager";
|
|
2
|
+
import type { AuthenticationSignInOptions } from "../auth/types";
|
|
3
|
+
import type { AgentState } from "@ic-reactor/core";
|
|
2
4
|
import type { Principal } from "@icp-sdk/core/principal";
|
|
3
5
|
import type { Identity } from "@icp-sdk/core/agent";
|
|
4
6
|
export interface UseAuthReturn {
|
|
5
7
|
authenticate: () => Promise<Identity | undefined>;
|
|
6
|
-
login: (options?:
|
|
8
|
+
login: (options?: AuthenticationSignInOptions) => Promise<void>;
|
|
7
9
|
logout: (options?: {
|
|
8
10
|
returnTo?: string;
|
|
9
11
|
}) => Promise<void>;
|
|
@@ -17,21 +19,12 @@ export interface CreateAuthHooksReturn {
|
|
|
17
19
|
useAgentState: () => AgentState;
|
|
18
20
|
useUserPrincipal: () => Principal | null;
|
|
19
21
|
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;
|
|
29
22
|
}
|
|
30
23
|
/**
|
|
31
24
|
* Create authentication hooks for managing user sessions with Internet Identity.
|
|
32
25
|
*
|
|
33
26
|
* @example
|
|
34
|
-
* const { useAuth, useUserPrincipal, useAgentState } = createAuthHooks(
|
|
27
|
+
* const { useAuth, useUserPrincipal, useAgentState } = createAuthHooks(authentication)
|
|
35
28
|
*
|
|
36
29
|
* function App() {
|
|
37
30
|
* const { login, logout, principal, isAuthenticated } = useAuth()
|
|
@@ -41,5 +34,5 @@ export interface UseIdentityAttributesReturn {
|
|
|
41
34
|
* : <button onClick={login}>Login with II</button>
|
|
42
35
|
* }
|
|
43
36
|
*/
|
|
44
|
-
export declare const createAuthHooks: (
|
|
37
|
+
export declare const createAuthHooks: (authentication: AuthenticationManager) => CreateAuthHooksReturn;
|
|
45
38
|
//# sourceMappingURL=createAuthHooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAuthHooks.d.ts","sourceRoot":"","sources":["../../src/hooks/createAuthHooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAC3E,OAAO,KAAK,EAAa,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,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,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,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;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,qBAAqB,KACpC,qBAsGF,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { useSyncExternalStore, useEffect, useRef, useMemo
|
|
1
|
+
import { useSyncExternalStore, useEffect, useRef, useMemo } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* Create authentication hooks for managing user sessions with Internet Identity.
|
|
4
4
|
*
|
|
5
5
|
* @example
|
|
6
|
-
* const { useAuth, useUserPrincipal, useAgentState } = createAuthHooks(
|
|
6
|
+
* const { useAuth, useUserPrincipal, useAgentState } = createAuthHooks(authentication)
|
|
7
7
|
*
|
|
8
8
|
* function App() {
|
|
9
9
|
* const { login, logout, principal, isAuthenticated } = useAuth()
|
|
@@ -13,7 +13,8 @@ import { useSyncExternalStore, useEffect, useRef, useMemo, useState, useCallback
|
|
|
13
13
|
* : <button onClick={login}>Login with II</button>
|
|
14
14
|
* }
|
|
15
15
|
*/
|
|
16
|
-
export const createAuthHooks = (
|
|
16
|
+
export const createAuthHooks = (authentication) => {
|
|
17
|
+
const { clientManager } = authentication;
|
|
17
18
|
/**
|
|
18
19
|
* Subscribe to agent state changes.
|
|
19
20
|
* Returns the current agent state (agent, isInitialized, etc.)
|
|
@@ -25,9 +26,9 @@ export const createAuthHooks = (clientManager) => {
|
|
|
25
26
|
* Subscribe to authentication state changes.
|
|
26
27
|
* Returns auth state (isAuthenticated, isAuthenticating, identity, error)
|
|
27
28
|
*/
|
|
28
|
-
const useAuthState = () => useSyncExternalStore((callback) =>
|
|
29
|
+
const useAuthState = () => useSyncExternalStore((callback) => authentication.subscribeAuthState(callback), () => authentication.authState,
|
|
29
30
|
// Server snapshot - provide initial state for SSR
|
|
30
|
-
() =>
|
|
31
|
+
() => authentication.authState);
|
|
31
32
|
/**
|
|
32
33
|
* Main authentication hook that provides login/logout methods and auth state.
|
|
33
34
|
* Automatically initializes the session on first use, restoring any previous session.
|
|
@@ -47,7 +48,7 @@ export const createAuthHooks = (clientManager) => {
|
|
|
47
48
|
* }
|
|
48
49
|
*/
|
|
49
50
|
const useAuth = () => {
|
|
50
|
-
const { login, logout, authenticate } =
|
|
51
|
+
const { login, logout, authenticate } = authentication;
|
|
51
52
|
const { isAuthenticated, isAuthenticating, identity, error } = useAuthState();
|
|
52
53
|
// Track if we've already initialized to avoid duplicate calls
|
|
53
54
|
const initializedRef = useRef(false);
|
|
@@ -55,7 +56,11 @@ export const createAuthHooks = (clientManager) => {
|
|
|
55
56
|
useEffect(() => {
|
|
56
57
|
if (!initializedRef.current) {
|
|
57
58
|
initializedRef.current = true;
|
|
58
|
-
|
|
59
|
+
authentication
|
|
60
|
+
.prepareClient()
|
|
61
|
+
.catch(() => undefined)
|
|
62
|
+
.then(() => clientManager.initialize())
|
|
63
|
+
.then(() => authentication.authenticate());
|
|
59
64
|
}
|
|
60
65
|
}, []);
|
|
61
66
|
const principal = useMemo(() => (identity ? identity.getPrincipal() : null), [identity]);
|
|
@@ -85,60 +90,10 @@ export const createAuthHooks = (clientManager) => {
|
|
|
85
90
|
const { identity } = useAuthState();
|
|
86
91
|
return identity ? identity.getPrincipal() : null;
|
|
87
92
|
};
|
|
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
|
-
};
|
|
137
93
|
return {
|
|
138
94
|
useAuth,
|
|
139
95
|
useAgentState,
|
|
140
96
|
useUserPrincipal,
|
|
141
|
-
useIdentityAttributes,
|
|
142
97
|
};
|
|
143
98
|
};
|
|
144
99
|
//# sourceMappingURL=createAuthHooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAuthHooks.js","sourceRoot":"","sources":["../../src/hooks/createAuthHooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAwBxE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,cAAqC,EACd,EAAE;IACzB,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,CAAA;IACxC;;;OAGG;IACH,MAAM,aAAa,GAAG,GAAe,EAAE,CACrC,oBAAoB,CAClB,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EACzD,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU;IAC9B,kDAAkD;IAClD,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAC/B,CAAA;IAEH;;;OAGG;IACH,MAAM,YAAY,GAAG,GAAc,EAAE,CACnC,oBAAoB,CAClB,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EACzD,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS;IAC9B,kDAAkD;IAClD,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAC/B,CAAA;IAEH;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,OAAO,GAAG,GAAkB,EAAE;QAClC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,cAAc,CAAA;QACtD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,GAC1D,YAAY,EAAE,CAAA;QAEhB,8DAA8D;QAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAEpC,6DAA6D;QAC7D,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC5B,cAAc,CAAC,OAAO,GAAG,IAAI,CAAA;gBAC7B,cAAc;qBACX,aAAa,EAAE;qBACf,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;qBACtB,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;qBACtC,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACjD,CAAC,QAAQ,CAAC,CACX,CAAA;QAED,OAAO;YACL,YAAY;YACZ,KAAK;YACL,MAAM;YACN,eAAe;YACf,gBAAgB;YAChB,SAAS;YACT,QAAQ;YACR,KAAK;SACN,CAAA;IACH,CAAC,CAAA;IAED;;;;;;;;;;OAUG;IACH,MAAM,gBAAgB,GAAG,GAAqB,EAAE;QAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAA;QACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAClD,CAAC,CAAA;IAED,OAAO;QACL,OAAO;QACP,aAAa;QACb,gBAAgB;KACjB,CAAA;AACH,CAAC,CAAA"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export { useActorSuspenseQuery as useReactorSuspenseQuery } from "./useActorSusp
|
|
|
4
4
|
export { useActorInfiniteQuery as useReactorInfiniteQuery } from "./useActorInfiniteQuery.js";
|
|
5
5
|
export { useActorSuspenseInfiniteQuery as useReactorSuspenseInfiniteQuery } from "./useActorSuspenseInfiniteQuery.js";
|
|
6
6
|
export { useActorMethod, useActorMethod as useReactorMethod, createActorMethodHooks, } from "./useActorMethod.js";
|
|
7
|
+
export { createAuthHooks } from "./createAuthHooks.js";
|
|
8
|
+
export type { CreateAuthHooksReturn, UseAuthReturn } from "./createAuthHooks.js";
|
|
7
9
|
export type { UseActorQueryParameters as UseReactorQueryParameters, UseActorQueryResult as UseReactorQueryResult, } from "./useActorQuery.js";
|
|
8
10
|
export type { UseActorMutationParameters as UseReactorMutationParameters, UseActorMutationResult as UseReactorMutationResult, } from "./useActorMutation.js";
|
|
9
11
|
export type { UseActorSuspenseQueryParameters as UseReactorSuspenseQueryParameters, UseActorSuspenseQueryResult as UseReactorSuspenseQueryResult, } from "./useActorSuspenseQuery.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGrE,OAAO,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG9E,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAG7F,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAG7F,OAAO,EAAE,6BAA6B,IAAI,+BAA+B,EAAE,MAAM,oCAAoC,CAAA;AAGrH,OAAO,EACL,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGrE,OAAO,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG9E,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAG7F,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAG7F,OAAO,EAAE,6BAA6B,IAAI,+BAA+B,EAAE,MAAM,oCAAoC,CAAA;AAGrH,OAAO,EACL,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAMhF,YAAY,EACV,uBAAuB,IAAI,yBAAyB,EACpD,mBAAmB,IAAI,qBAAqB,GAC7C,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,0BAA0B,IAAI,4BAA4B,EAC1D,sBAAsB,IAAI,wBAAwB,GACnD,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EACV,+BAA+B,IAAI,iCAAiC,EACpE,2BAA2B,IAAI,6BAA6B,GAC7D,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,+BAA+B,IAAI,iCAAiC,EACpE,2BAA2B,IAAI,6BAA6B,GAC7D,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,uCAAuC,IAAI,yCAAyC,EACpF,mCAAmC,IAAI,qCAAqC,GAC7E,MAAM,oCAAoC,CAAA;AAE3C,YAAY,EACV,wBAAwB,IAAI,0BAA0B,EACtD,oBAAoB,IAAI,sBAAsB,GAC/C,MAAM,qBAAqB,CAAA;AAM5B,YAAY,EACV,mBAAmB,IAAI,uBAAuB,EAC9C,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,sBAAsB,IAAI,0BAA0B,EACpD,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EACV,2BAA2B,IAAI,+BAA+B,EAC9D,2BAA2B,GAC5B,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,2BAA2B,IAAI,+BAA+B,EAC9D,2BAA2B,GAC5B,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,mCAAmC,IAAI,uCAAuC,EAC9E,mCAAmC,GACpC,MAAM,oCAAoC,CAAA;AAE3C,YAAY,EACV,oBAAoB,IAAI,wBAAwB,EAChD,oBAAoB,GACrB,MAAM,qBAAqB,CAAA"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -13,4 +13,6 @@ export { useActorInfiniteQuery as useReactorInfiniteQuery } from "./useActorInfi
|
|
|
13
13
|
export { useActorSuspenseInfiniteQuery as useReactorSuspenseInfiniteQuery } from "./useActorSuspenseInfiniteQuery.js";
|
|
14
14
|
// useActorMethod / useReactorMethod
|
|
15
15
|
export { useActorMethod, useActorMethod as useReactorMethod, createActorMethodHooks, } from "./useActorMethod.js";
|
|
16
|
+
// createAuthHooks
|
|
17
|
+
export { createAuthHooks } from "./createAuthHooks.js";
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,kCAAkC;AAClC,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAErE,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE9E,kDAAkD;AAClD,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAE7F,kDAAkD;AAClD,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAE7F,kEAAkE;AAClE,OAAO,EAAE,6BAA6B,IAAI,+BAA+B,EAAE,MAAM,oCAAoC,CAAA;AAErH,oCAAoC;AACpC,OAAO,EACL,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,sBAAsB,GACvB,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,kCAAkC;AAClC,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAErE,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE9E,kDAAkD;AAClD,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAE7F,kDAAkD;AAClD,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAE7F,kEAAkE;AAClE,OAAO,EAAE,6BAA6B,IAAI,+BAA+B,EAAE,MAAM,oCAAoC,CAAA;AAErH,oCAAoC;AACpC,OAAO,EACL,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAE5B,kBAAkB;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { QueryKey, UseInfiniteQueryResult, UseInfiniteQueryOptions, InfiniteData } from "@tanstack/react-query";
|
|
2
|
-
import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
|
|
2
|
+
import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorQueryData, ReactorReturnErr } from "@ic-reactor/core";
|
|
3
3
|
import { CallConfig } from "@icp-sdk/core/agent";
|
|
4
4
|
/**
|
|
5
5
|
* Parameters for useActorInfiniteQuery hook.
|
|
6
6
|
* Extends react-query's UseInfiniteQueryOptions with custom reactor params.
|
|
7
7
|
*/
|
|
8
|
-
export interface UseActorInfiniteQueryParameters<
|
|
8
|
+
export interface UseActorInfiniteQueryParameters<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>> extends Omit<UseInfiniteQueryOptions<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, ReactorReturnErr<Service, Method, Transform>, Selected, QueryKey, TPageParam>, "queryKey" | "queryFn" | "getNextPageParam" | "initialPageParam"> {
|
|
9
9
|
/** The reactor instance to use for method calls */
|
|
10
|
-
reactor: Reactor<
|
|
10
|
+
reactor: Reactor<Service, Transform>;
|
|
11
11
|
/** The method name to call on the canister */
|
|
12
|
-
functionName:
|
|
12
|
+
functionName: Method;
|
|
13
13
|
/** Function to get args from page parameter */
|
|
14
|
-
getArgs: (pageParam: TPageParam) => ReactorArgs<
|
|
14
|
+
getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>;
|
|
15
15
|
/** Agent call configuration (effectiveCanisterId, etc.) */
|
|
16
16
|
callConfig?: CallConfig;
|
|
17
17
|
/** Custom query key (auto-generated if not provided) */
|
|
@@ -19,10 +19,10 @@ export interface UseActorInfiniteQueryParameters<A, M extends FunctionName<A>, T
|
|
|
19
19
|
/** Initial page parameter */
|
|
20
20
|
initialPageParam: TPageParam;
|
|
21
21
|
/** Function to determine next page parameter */
|
|
22
|
-
getNextPageParam: (lastPage: ReactorReturnOk<
|
|
22
|
+
getNextPageParam: (lastPage: ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, allPages: ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
|
|
23
23
|
}
|
|
24
|
-
export type UseActorInfiniteQueryConfig<
|
|
25
|
-
export type UseActorInfiniteQueryResult<
|
|
24
|
+
export type UseActorInfiniteQueryConfig<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown> = Omit<UseActorInfiniteQueryParameters<Service, Method, Transform, TPageParam>, "reactor">;
|
|
25
|
+
export type UseActorInfiniteQueryResult<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown> = UseInfiniteQueryResult<InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>, ReactorReturnErr<Service, Method, Transform>>;
|
|
26
26
|
/**
|
|
27
27
|
* Hook for executing infinite/paginated query calls on a canister.
|
|
28
28
|
*
|
|
@@ -35,5 +35,5 @@ export type UseActorInfiniteQueryResult<A, M extends FunctionName<A>, T extends
|
|
|
35
35
|
* getNextPageParam: (lastPage) => lastPage.nextOffset,
|
|
36
36
|
* })
|
|
37
37
|
*/
|
|
38
|
-
export declare const useActorInfiniteQuery: <
|
|
38
|
+
export declare const useActorInfiniteQuery: <Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown>({ reactor, functionName, getArgs, callConfig, queryKey, ...options }: UseActorInfiniteQueryParameters<Service, Method, Transform, TPageParam>) => UseActorInfiniteQueryResult<Service, Method, Transform, TPageParam>;
|
|
39
39
|
//# sourceMappingURL=useActorInfiniteQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAER,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"useActorInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useMemo, useCallback } from "react";
|
|
2
2
|
import { useInfiniteQuery, } from "@tanstack/react-query";
|
|
3
|
+
import { normalizeQueryData } from "../utils";
|
|
3
4
|
/**
|
|
4
5
|
* Hook for executing infinite/paginated query calls on a canister.
|
|
5
6
|
*
|
|
@@ -20,11 +21,12 @@ export const useActorInfiniteQuery = ({ reactor, functionName, getArgs, callConf
|
|
|
20
21
|
// Memoize queryFn to prevent recreation on every render
|
|
21
22
|
const queryFn = useCallback(async ({ pageParam }) => {
|
|
22
23
|
const args = getArgs(pageParam);
|
|
23
|
-
|
|
24
|
+
const result = await reactor.callMethod({
|
|
24
25
|
functionName,
|
|
25
26
|
args,
|
|
26
27
|
callConfig,
|
|
27
28
|
});
|
|
29
|
+
return normalizeQueryData(result);
|
|
28
30
|
}, [reactor, functionName, getArgs, callConfig]);
|
|
29
31
|
return useInfiniteQuery({
|
|
30
32
|
queryKey: baseQueryKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"useActorInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAqE7C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAKnC,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAAuE,EAAE;IACxE,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,UAAU,CAAC,EACtE,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAC9C,CAAA;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAE,SAAS,EAA6B,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACtC,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;QACF,OAAO,kBAAkB,CACvB,MAAqD,CACtD,CAAA;IACH,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,gBAAgB,CACrB;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CACmD,CAAA;AAC1E,CAAC,CAAA"}
|