@ic-reactor/react 2.0.0 → 3.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 (155) hide show
  1. package/README.md +105 -79
  2. package/dist/createActorHooks.d.ts +39 -0
  3. package/dist/createActorHooks.d.ts.map +1 -0
  4. package/dist/createActorHooks.js +30 -0
  5. package/dist/createActorHooks.js.map +1 -0
  6. package/dist/createAuthHooks.d.ts +37 -0
  7. package/dist/createAuthHooks.d.ts.map +1 -0
  8. package/dist/createAuthHooks.js +94 -0
  9. package/dist/createAuthHooks.js.map +1 -0
  10. package/dist/createInfiniteQuery.d.ts +129 -0
  11. package/dist/createInfiniteQuery.d.ts.map +1 -0
  12. package/dist/createInfiniteQuery.js +160 -0
  13. package/dist/createInfiniteQuery.js.map +1 -0
  14. package/dist/createMutation.d.ts +19 -0
  15. package/dist/createMutation.d.ts.map +1 -0
  16. package/dist/createMutation.js +98 -0
  17. package/dist/createMutation.js.map +1 -0
  18. package/dist/createQuery.d.ts +20 -0
  19. package/dist/createQuery.d.ts.map +1 -0
  20. package/dist/createQuery.js +111 -0
  21. package/dist/createQuery.js.map +1 -0
  22. package/dist/createSuspenseInfiniteQuery.d.ts +122 -0
  23. package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -0
  24. package/dist/createSuspenseInfiniteQuery.js +160 -0
  25. package/dist/createSuspenseInfiniteQuery.js.map +1 -0
  26. package/dist/createSuspenseQuery.d.ts +25 -0
  27. package/dist/createSuspenseQuery.d.ts.map +1 -0
  28. package/dist/createSuspenseQuery.js +116 -0
  29. package/dist/createSuspenseQuery.js.map +1 -0
  30. package/dist/hooks/index.d.ts +6 -2
  31. package/dist/hooks/index.d.ts.map +1 -0
  32. package/dist/hooks/index.js +6 -18
  33. package/dist/hooks/index.js.map +1 -0
  34. package/dist/hooks/useActorInfiniteQuery.d.ts +37 -0
  35. package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -0
  36. package/dist/hooks/useActorInfiniteQuery.js +33 -0
  37. package/dist/hooks/useActorInfiniteQuery.js.map +1 -0
  38. package/dist/hooks/useActorMutation.d.ts +23 -0
  39. package/dist/hooks/useActorMutation.d.ts.map +1 -0
  40. package/dist/hooks/useActorMutation.js +39 -0
  41. package/dist/hooks/useActorMutation.js.map +1 -0
  42. package/dist/hooks/useActorQuery.d.ts +32 -0
  43. package/dist/hooks/useActorQuery.d.ts.map +1 -0
  44. package/dist/hooks/useActorQuery.js +35 -0
  45. package/dist/hooks/useActorQuery.js.map +1 -0
  46. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +36 -0
  47. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -0
  48. package/dist/hooks/useActorSuspenseInfiniteQuery.js +33 -0
  49. package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -0
  50. package/dist/hooks/useActorSuspenseQuery.d.ts +32 -0
  51. package/dist/hooks/useActorSuspenseQuery.d.ts.map +1 -0
  52. package/dist/hooks/useActorSuspenseQuery.js +36 -0
  53. package/dist/hooks/useActorSuspenseQuery.js.map +1 -0
  54. package/dist/index.d.ts +11 -8
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +17 -49
  57. package/dist/index.js.map +1 -0
  58. package/dist/types.d.ts +232 -13
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +5 -22
  61. package/dist/types.js.map +1 -0
  62. package/dist/validation.d.ts +131 -0
  63. package/dist/validation.d.ts.map +1 -0
  64. package/dist/validation.js +125 -0
  65. package/dist/validation.js.map +1 -0
  66. package/package.json +70 -35
  67. package/LICENSE.md +0 -8
  68. package/dist/context/actor/create.d.ts +0 -63
  69. package/dist/context/actor/create.js +0 -119
  70. package/dist/context/actor/hooks/useActorInterface.d.ts +0 -4
  71. package/dist/context/actor/hooks/useActorInterface.js +0 -10
  72. package/dist/context/actor/hooks/useActorState.d.ts +0 -21
  73. package/dist/context/actor/hooks/useActorState.js +0 -25
  74. package/dist/context/actor/hooks/useActorStore.d.ts +0 -32
  75. package/dist/context/actor/hooks/useActorStore.js +0 -36
  76. package/dist/context/actor/hooks/useInitializeActor.d.ts +0 -6
  77. package/dist/context/actor/hooks/useInitializeActor.js +0 -10
  78. package/dist/context/actor/hooks/useMethod.d.ts +0 -29
  79. package/dist/context/actor/hooks/useMethod.js +0 -34
  80. package/dist/context/actor/hooks/useMethodAttributes.d.ts +0 -7
  81. package/dist/context/actor/hooks/useMethodAttributes.js +0 -11
  82. package/dist/context/actor/hooks/useMethodNames.d.ts +0 -7
  83. package/dist/context/actor/hooks/useMethodNames.js +0 -11
  84. package/dist/context/actor/hooks/useQueryCall.d.ts +0 -28
  85. package/dist/context/actor/hooks/useQueryCall.js +0 -33
  86. package/dist/context/actor/hooks/useUpdateCall.d.ts +0 -29
  87. package/dist/context/actor/hooks/useUpdateCall.js +0 -34
  88. package/dist/context/actor/hooks/useVisitMethod.d.ts +0 -8
  89. package/dist/context/actor/hooks/useVisitMethod.js +0 -13
  90. package/dist/context/actor/hooks/useVisitService.d.ts +0 -8
  91. package/dist/context/actor/hooks/useVisitService.js +0 -13
  92. package/dist/context/actor/index.d.ts +0 -16
  93. package/dist/context/actor/index.js +0 -33
  94. package/dist/context/actor/provider.d.ts +0 -71
  95. package/dist/context/actor/provider.js +0 -75
  96. package/dist/context/actor/types.d.ts +0 -35
  97. package/dist/context/actor/types.js +0 -2
  98. package/dist/context/adapter/create.d.ts +0 -2
  99. package/dist/context/adapter/create.js +0 -102
  100. package/dist/context/adapter/hooks/useCandidAdapter.d.ts +0 -23
  101. package/dist/context/adapter/hooks/useCandidAdapter.js +0 -27
  102. package/dist/context/adapter/hooks/useCandidEvaluation.d.ts +0 -5
  103. package/dist/context/adapter/hooks/useCandidEvaluation.js +0 -9
  104. package/dist/context/adapter/index.d.ts +0 -6
  105. package/dist/context/adapter/index.js +0 -24
  106. package/dist/context/adapter/provider.d.ts +0 -23
  107. package/dist/context/adapter/provider.js +0 -27
  108. package/dist/context/adapter/types.d.ts +0 -52
  109. package/dist/context/adapter/types.js +0 -2
  110. package/dist/context/agent/create.d.ts +0 -74
  111. package/dist/context/agent/create.js +0 -104
  112. package/dist/context/agent/hooks/useAgent.d.ts +0 -14
  113. package/dist/context/agent/hooks/useAgent.js +0 -18
  114. package/dist/context/agent/hooks/useAgentManager.d.ts +0 -14
  115. package/dist/context/agent/hooks/useAgentManager.js +0 -18
  116. package/dist/context/agent/hooks/useAgentState.d.ts +0 -21
  117. package/dist/context/agent/hooks/useAgentState.js +0 -25
  118. package/dist/context/agent/hooks/useAuth.d.ts +0 -57
  119. package/dist/context/agent/hooks/useAuth.js +0 -61
  120. package/dist/context/agent/hooks/useAuthState.d.ts +0 -19
  121. package/dist/context/agent/hooks/useAuthState.js +0 -23
  122. package/dist/context/agent/hooks/useUserPrincipal.d.ts +0 -17
  123. package/dist/context/agent/hooks/useUserPrincipal.js +0 -21
  124. package/dist/context/agent/index.d.ts +0 -12
  125. package/dist/context/agent/index.js +0 -29
  126. package/dist/context/agent/provider.d.ts +0 -28
  127. package/dist/context/agent/provider.js +0 -32
  128. package/dist/context/agent/types.d.ts +0 -17
  129. package/dist/context/agent/types.js +0 -2
  130. package/dist/core.d.ts +0 -1
  131. package/dist/core.js +0 -9
  132. package/dist/createReactor.d.ts +0 -49
  133. package/dist/createReactor.js +0 -69
  134. package/dist/helpers/actorHooks.d.ts +0 -18
  135. package/dist/helpers/actorHooks.js +0 -283
  136. package/dist/helpers/agentHooks.d.ts +0 -3
  137. package/dist/helpers/agentHooks.js +0 -22
  138. package/dist/helpers/authHooks.d.ts +0 -2
  139. package/dist/helpers/authHooks.js +0 -120
  140. package/dist/helpers/extractActorContext.d.ts +0 -4
  141. package/dist/helpers/extractActorContext.js +0 -44
  142. package/dist/helpers/extractAgentContext.d.ts +0 -28
  143. package/dist/helpers/extractAgentContext.js +0 -59
  144. package/dist/helpers/index.d.ts +0 -5
  145. package/dist/helpers/index.js +0 -21
  146. package/dist/helpers/types.d.ts +0 -222
  147. package/dist/helpers/types.js +0 -2
  148. package/dist/hooks/types.d.ts +0 -22
  149. package/dist/hooks/types.js +0 -2
  150. package/dist/hooks/useActor.d.ts +0 -67
  151. package/dist/hooks/useActor.js +0 -197
  152. package/dist/hooks/useActorManager.d.ts +0 -68
  153. package/dist/hooks/useActorManager.js +0 -75
  154. package/dist/utils.d.ts +0 -1
  155. package/dist/utils.js +0 -17
@@ -0,0 +1,36 @@
1
+ import { QueryKey, UseSuspenseInfiniteQueryResult, InfiniteData } from "@tanstack/react-query";
2
+ import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
3
+ import { CallConfig } from "@icp-sdk/core/agent";
4
+ export interface UseActorSuspenseInfiniteQueryParameters<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> {
5
+ reactor: Reactor<A, T>;
6
+ functionName: M;
7
+ getArgs: (pageParam: TPageParam) => ReactorArgs<A, M, T>;
8
+ callConfig?: CallConfig;
9
+ queryKey?: QueryKey;
10
+ initialPageParam: TPageParam;
11
+ getNextPageParam: (lastPage: ReactorReturnOk<A, M, T>, allPages: ReactorReturnOk<A, M, T>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
12
+ getPreviousPageParam?: (firstPage: ReactorReturnOk<A, M, T>, allPages: ReactorReturnOk<A, M, T>[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
13
+ maxPages?: number;
14
+ staleTime?: number;
15
+ gcTime?: number;
16
+ refetchOnWindowFocus?: boolean;
17
+ refetchOnMount?: boolean;
18
+ refetchOnReconnect?: boolean;
19
+ select?: (data: InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>) => InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>;
20
+ }
21
+ export type UseActorSuspenseInfiniteQueryConfig<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> = Omit<UseActorSuspenseInfiniteQueryParameters<A, M, T, TPageParam>, "reactor">;
22
+ export type UseActorSuspenseInfiniteQueryResult<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> = UseSuspenseInfiniteQueryResult<InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>, ReactorReturnErr<A, M, T>>;
23
+ /**
24
+ * Hook for executing suspense-enabled infinite/paginated query calls on a canister.
25
+ *
26
+ * @example
27
+ * const { data, fetchNextPage, hasNextPage } = useActorSuspenseInfiniteQuery({
28
+ * reactor,
29
+ * functionName: "getItems",
30
+ * getArgs: (pageParam) => [{ offset: pageParam, limit: 10 }],
31
+ * initialPageParam: 0,
32
+ * getNextPageParam: (lastPage) => lastPage.nextOffset,
33
+ * })
34
+ */
35
+ export declare const useActorSuspenseInfiniteQuery: <A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown>({ reactor, functionName, getArgs, callConfig, queryKey, ...options }: UseActorSuspenseInfiniteQueryParameters<A, M, T, TPageParam>) => UseActorSuspenseInfiniteQueryResult<A, M, T, TPageParam>;
36
+ //# sourceMappingURL=useActorSuspenseInfiniteQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActorSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { useMemo, useCallback } from "react";
2
+ import { useSuspenseInfiniteQuery, } from "@tanstack/react-query";
3
+ /**
4
+ * Hook for executing suspense-enabled infinite/paginated query calls on a canister.
5
+ *
6
+ * @example
7
+ * const { data, fetchNextPage, hasNextPage } = useActorSuspenseInfiniteQuery({
8
+ * reactor,
9
+ * functionName: "getItems",
10
+ * getArgs: (pageParam) => [{ offset: pageParam, limit: 10 }],
11
+ * initialPageParam: 0,
12
+ * getNextPageParam: (lastPage) => lastPage.nextOffset,
13
+ * })
14
+ */
15
+ export const useActorSuspenseInfiniteQuery = ({ reactor, functionName, getArgs, callConfig, queryKey, ...options }) => {
16
+ // Memoize queryKey to prevent unnecessary re-calculations
17
+ const baseQueryKey = useMemo(() => queryKey ?? reactor.generateQueryKey({ functionName }), [queryKey, reactor, functionName]);
18
+ // Memoize queryFn to prevent recreation on every render
19
+ const queryFn = useCallback(async ({ pageParam }) => {
20
+ const args = getArgs(pageParam);
21
+ return reactor.callMethod({
22
+ functionName,
23
+ args,
24
+ callConfig,
25
+ });
26
+ }, [reactor, functionName, getArgs, callConfig]);
27
+ return useSuspenseInfiniteQuery({
28
+ queryKey: baseQueryKey,
29
+ queryFn,
30
+ ...options,
31
+ }, reactor.queryClient);
32
+ };
33
+ //# sourceMappingURL=useActorSuspenseInfiniteQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActorSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,wBAAwB,GAGzB,MAAM,uBAAuB,CAAA;AAkE9B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAK3C,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAA4D,EAAE;IAC7D,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,EAC5D,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAClC,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,OAAO,OAAO,CAAC,UAAU,CAAC;YACxB,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,wBAAwB,CAC7B;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CACwC,CAAA;AAC/D,CAAC,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { QueryKey, QueryObserverOptions, UseSuspenseQueryResult } from "@tanstack/react-query";
2
+ import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
3
+ import { CallConfig } from "@icp-sdk/core/agent";
4
+ export interface UseActorSuspenseQueryParameters<A, M extends FunctionName<A>, T extends TransformKey = "candid", TSelected = ReactorReturnOk<A, M, T>> extends Omit<QueryObserverOptions<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, TSelected, ReactorReturnOk<A, M, T>, QueryKey>, "queryKey" | "queryFn"> {
5
+ reactor: Reactor<A, T>;
6
+ functionName: M;
7
+ args?: ReactorArgs<A, M, T>;
8
+ callConfig?: CallConfig;
9
+ queryKey?: QueryKey;
10
+ }
11
+ export type UseActorSuspenseQueryConfig<A, M extends FunctionName<A>, T extends TransformKey = "candid", TSelected = ReactorReturnOk<A, M, T>> = Omit<UseActorSuspenseQueryParameters<A, M, T, TSelected>, "reactor">;
12
+ export type UseActorSuspenseQueryResult<A, M extends FunctionName<A>, T extends TransformKey = "candid", TSelected = ReactorReturnOk<A, M, T>> = UseSuspenseQueryResult<TSelected, ReactorReturnErr<A, M, T>>;
13
+ /**
14
+ * Hook for executing suspense-enabled query calls on a canister.
15
+ *
16
+ * @example
17
+ * const { data } = useActorSuspenseQuery({
18
+ * reactor,
19
+ * functionName: "getUser",
20
+ * args: ["user-123"],
21
+ * })
22
+ *
23
+ * // With select transformation
24
+ * const { data } = useActorSuspenseQuery({
25
+ * reactor,
26
+ * functionName: "getUser",
27
+ * args: ["user-123"],
28
+ * select: (user) => user.name,
29
+ * })
30
+ */
31
+ export declare const useActorSuspenseQuery: <A, M extends FunctionName<A>, T extends TransformKey = "candid", TSelected = ReactorReturnOk<A, M, T>>({ reactor, functionName, args, callConfig, queryKey: defaultQueryKey, ...options }: UseActorSuspenseQueryParameters<A, M, T, TSelected>) => UseActorSuspenseQueryResult<A, M, T, TSelected>;
32
+ //# sourceMappingURL=useActorSuspenseQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActorSuspenseQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseQuery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAER,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,WAAW,+BAA+B,CAC9C,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,SAAS,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpC,SAAQ,IAAI,CACZ,oBAAoB,CAClB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzB,SAAS,EACT,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxB,QAAQ,CACT,EACD,UAAU,GAAG,SAAS,CACvB;IACC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtB,YAAY,EAAE,CAAC,CAAA;IACf,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AAED,MAAM,MAAM,2BAA2B,CACrC,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,SAAS,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAClC,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;AAExE,MAAM,MAAM,2BAA2B,CACrC,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,SAAS,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAClC,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,GAChC,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,SAAS,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpC,oFAOC,+BAA+B,CAChC,CAAC,EACD,CAAC,EACD,CAAC,EACD,SAAS,CACV,KAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAsBjD,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { useMemo } from "react";
2
+ import { useSuspenseQuery, } from "@tanstack/react-query";
3
+ /**
4
+ * Hook for executing suspense-enabled query calls on a canister.
5
+ *
6
+ * @example
7
+ * const { data } = useActorSuspenseQuery({
8
+ * reactor,
9
+ * functionName: "getUser",
10
+ * args: ["user-123"],
11
+ * })
12
+ *
13
+ * // With select transformation
14
+ * const { data } = useActorSuspenseQuery({
15
+ * reactor,
16
+ * functionName: "getUser",
17
+ * args: ["user-123"],
18
+ * select: (user) => user.name,
19
+ * })
20
+ */
21
+ export const useActorSuspenseQuery = ({ reactor, functionName, args, callConfig, queryKey: defaultQueryKey, ...options }) => {
22
+ // Memoize query options to prevent unnecessary re-computations
23
+ const { queryKey, queryFn } = useMemo(() => reactor.getQueryOptions({
24
+ callConfig,
25
+ functionName,
26
+ args,
27
+ queryKey: defaultQueryKey,
28
+ }), [reactor, callConfig, functionName, args, defaultQueryKey]);
29
+ return useSuspenseQuery({
30
+ // Suspense queries don't support skipToken, so cast the queryFn
31
+ queryFn: queryFn,
32
+ ...options,
33
+ queryKey,
34
+ }, reactor.queryClient);
35
+ };
36
+ //# sourceMappingURL=useActorSuspenseQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActorSuspenseQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAEL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAA;AA+C9B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAKnC,EACA,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,QAAQ,EAAE,eAAe,EACzB,GAAG,OAAO,EAMX,EAAmD,EAAE;IACpD,+DAA+D;IAC/D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CACnC,GAAG,EAAE,CACH,OAAO,CAAC,eAAe,CAAI;QACzB,UAAU;QACV,YAAY;QACZ,IAAI;QACJ,QAAQ,EAAE,eAAe;KAC1B,CAAC,EACJ,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,CAAC,CAC3D,CAAA;IAED,OAAO,gBAAgB,CACrB;QACE,gEAAgE;QAChE,OAAO,EAAE,OAA4D;QACrE,GAAG,OAAO;QACV,QAAQ;KACT,EACD,OAAO,CAAC,WAAW,CACpB,CAAA;AACH,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,12 @@
1
- export * from "./createReactor";
2
- export * from "./context/actor";
3
- export * from "./context/adapter";
4
- export * from "./context/agent";
1
+ export * from "@ic-reactor/core";
5
2
  export * from "./hooks";
6
- export * as helpers from "./helpers";
7
- export * as types from "./types";
8
- export * as core from "./core";
9
- export * as utils from "./utils";
3
+ export * from "./validation";
4
+ export * from "./createAuthHooks";
5
+ export * from "./createActorHooks";
6
+ export * from "./createQuery";
7
+ export * from "./createSuspenseQuery";
8
+ export * from "./createInfiniteQuery";
9
+ export * from "./createSuspenseInfiniteQuery";
10
+ export * from "./createMutation";
11
+ export * from "./types";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,kBAAkB,CAAA;AAGhC,cAAc,SAAS,CAAA;AAGvB,cAAc,cAAc,CAAA;AAG5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAElC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kBAAkB,CAAA;AAEhC,cAAc,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,49 +1,17 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
- };
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.utils = exports.core = exports.types = exports.helpers = void 0;
40
- // Note: Order of exports is important
41
- __exportStar(require("./createReactor"), exports);
42
- __exportStar(require("./context/actor"), exports);
43
- __exportStar(require("./context/adapter"), exports);
44
- __exportStar(require("./context/agent"), exports);
45
- __exportStar(require("./hooks"), exports);
46
- exports.helpers = __importStar(require("./helpers"));
47
- exports.types = __importStar(require("./types"));
48
- exports.core = __importStar(require("./core"));
49
- exports.utils = __importStar(require("./utils"));
1
+ // Re-export core (following TanStack Query's pattern)
2
+ // Users can import everything from @ic-reactor/react without needing @ic-reactor/core
3
+ export * from "@ic-reactor/core";
4
+ // Re-export hooks
5
+ export * from "./hooks";
6
+ // Validation utilities for React
7
+ export * from "./validation";
8
+ // React-specific exports
9
+ export * from "./createAuthHooks";
10
+ export * from "./createActorHooks";
11
+ export * from "./createQuery";
12
+ export * from "./createSuspenseQuery";
13
+ export * from "./createInfiniteQuery";
14
+ export * from "./createSuspenseInfiniteQuery";
15
+ export * from "./createMutation";
16
+ export * from "./types";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,sFAAsF;AACtF,cAAc,kBAAkB,CAAA;AAEhC,kBAAkB;AAClB,cAAc,SAAS,CAAA;AAEvB,iCAAiC;AACjC,cAAc,cAAc,CAAA;AAE5B,yBAAyB;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAElC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kBAAkB,CAAA;AAEhC,cAAc,SAAS,CAAA"}
package/dist/types.d.ts CHANGED
@@ -1,13 +1,232 @@
1
- import type { HttpAgent, CreateReactorCoreParameters, VisitService } from "@ic-reactor/core/dist/types";
2
- import type { ActorHooksReturnType, AgentHooksReturnType, AuthHooksReturnType } from "./helpers/types";
3
- export type CreateReactorParameters = CreateReactorCoreParameters;
4
- export interface CreateReactorReturnType<A> extends ActorHooksReturnType<A>, AuthHooksReturnType, AgentHooksReturnType {
5
- getAgent: () => HttpAgent;
6
- getVisitFunction: () => VisitService<A>;
7
- }
8
- export * from "./context/actor/types";
9
- export * from "./context/agent/types";
10
- export * from "./context/adapter/types";
11
- export * from "./helpers/types";
12
- export * from "./hooks/types";
13
- export * from "@ic-reactor/core/dist/types";
1
+ /**
2
+ * Shared type definitions for query factories (createActorQuery, createActorSuspenseQuery, etc.)
3
+ */
4
+ import type { FunctionName, ReactorReturnOk, ReactorReturnErr, ReactorArgs, BaseActor, TransformKey, TransformReturnRegistry, ErrResult, ActorMethodReturnType } from "@ic-reactor/core";
5
+ import { CanisterError } from "@ic-reactor/core";
6
+ import { CallConfig } from "@icp-sdk/core/agent";
7
+ import { QueryKey, QueryObserverOptions, UseQueryOptions, UseQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult, UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
8
+ export type NoInfer<T> = [T][T extends any ? 0 : never];
9
+ /** The raw data type returned by the query function (before select) */
10
+ export type QueryFnData<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> = ReactorReturnOk<A, M, T>;
11
+ /** The error type for queries */
12
+ export type QueryError<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> = ReactorReturnErr<A, M, T>;
13
+ /**
14
+ * Base configuration for query wrappers (shared between regular and suspense).
15
+ *
16
+ * @template A - The actor interface type
17
+ * @template M - The method name on the actor
18
+ * @template T - The transformation key (identity, display, etc.)
19
+ * @template TSelected - The type returned after select transformation
20
+ */
21
+ export interface BaseQueryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TSelected = QueryFnData<A, M, T>> extends Omit<QueryObserverOptions<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, TSelected, ReactorReturnOk<A, M, T>, QueryKey>, "queryFn" | "queryKey"> {
22
+ /** The method to call on the canister */
23
+ functionName: M;
24
+ /** Arguments to pass to the method (if any) */
25
+ args?: ReactorArgs<A, M, T>;
26
+ /** The query key to use for this query */
27
+ queryKey?: QueryKey;
28
+ /** How long data stays fresh before refetching (default: 5 min) */
29
+ staleTime?: number;
30
+ /** Transform the raw result before returning */
31
+ select?: (data: QueryFnData<A, M, T>) => TSelected;
32
+ }
33
+ /**
34
+ * Configuration for createQuery (regular useQuery).
35
+ * Alias for BaseQueryConfig for clarity.
36
+ */
37
+ export type QueryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TSelected = QueryFnData<A, M, T>> = BaseQueryConfig<A, M, T, TSelected>;
38
+ /**
39
+ * Configuration for createSuspenseQuery (useSuspenseQuery).
40
+ * Alias for BaseQueryConfig for clarity.
41
+ */
42
+ export type SuspenseQueryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TSelected = QueryFnData<A, M, T>> = BaseQueryConfig<A, M, T, TSelected>;
43
+ /**
44
+ * Configuration for createQueryFactory (args are provided at call time).
45
+ */
46
+ export type QueryFactoryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TSelected = QueryFnData<A, M, T>> = Omit<QueryConfig<A, M, T, TSelected>, "args">;
47
+ /**
48
+ * Configuration for createSuspenseQueryFactory (args are provided at call time).
49
+ */
50
+ export type SuspenseQueryFactoryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TSelected = QueryFnData<A, M, T>> = Omit<SuspenseQueryConfig<A, M, T, TSelected>, "args">;
51
+ /**
52
+ * useQuery hook with chained select support.
53
+ * - Without select: returns TSelected (from config.select)
54
+ * - With select: chains on top and returns TFinal
55
+ *
56
+ * Accepts all useQuery options from React Query documentation.
57
+ * Select is special: it chains on top of config.select.
58
+ */
59
+ export interface UseQueryWithSelect<TQueryFnData, TSelected = TQueryFnData, TError = Error> {
60
+ (options?: Omit<UseQueryOptions<TQueryFnData, TError, TSelected>, "queryKey" | "queryFn"> & {
61
+ select?: undefined;
62
+ }): UseQueryResult<TSelected, TError>;
63
+ <TFinal = TSelected>(options: Omit<UseQueryOptions<TQueryFnData, TError, TFinal>, "queryKey" | "queryFn" | "select"> & {
64
+ select: (data: TSelected) => TFinal;
65
+ }): UseQueryResult<TFinal, TError>;
66
+ }
67
+ /**
68
+ * useSuspenseQuery hook with chained select support.
69
+ * - Without select: returns TSelected (from config.select)
70
+ * - With select: chains on top and returns TFinal
71
+ *
72
+ * Accepts all useSuspenseQuery options from React Query documentation.
73
+ * Select is special: it chains on top of config.select.
74
+ * Data is always defined (never undefined).
75
+ * Does NOT support `enabled` option.
76
+ */
77
+ export interface UseSuspenseQueryWithSelect<TQueryFnData, TSelected = TQueryFnData, TError = Error> {
78
+ (options?: Omit<UseSuspenseQueryOptions<TQueryFnData, TError, TSelected>, "queryKey" | "queryFn"> & {
79
+ select?: undefined;
80
+ }): UseSuspenseQueryResult<TSelected, TError>;
81
+ <TFinal = TSelected>(options: Omit<UseSuspenseQueryOptions<TQueryFnData, TError, TFinal>, "queryKey" | "queryFn" | "select"> & {
82
+ select: (data: TSelected) => TFinal;
83
+ }): UseSuspenseQueryResult<TFinal, TError>;
84
+ }
85
+ /**
86
+ * Base result interface shared between createQuery and createSuspenseQuery.
87
+ *
88
+ * @template TQueryFnData - The raw data type
89
+ * @template TSelected - The type after select transformation
90
+ * @template TError - The error type
91
+ */
92
+ export interface BaseQueryResult<TQueryFnData, TSelected = TQueryFnData, _TError = Error> {
93
+ /** Fetch data in loader (uses ensureQueryData for cache-first) */
94
+ fetch: () => Promise<TSelected>;
95
+ /** Invalidate and refetch cache */
96
+ refetch: () => Promise<void>;
97
+ /** Get query key (for advanced React Query usage) */
98
+ getQueryKey: () => QueryKey;
99
+ /**
100
+ * Read data directly from cache without fetching.
101
+ * Returns undefined if data is not in cache.
102
+ *
103
+ * @template TFinal - Type returned after optional select transformation
104
+ * @param select - Optional select function to transform cached data further
105
+ * @returns Cached data with select applied, or undefined if not in cache
106
+ *
107
+ * @example
108
+ * // Just get the cached data
109
+ * const user = userQuery.getCacheData()
110
+ *
111
+ * // With additional select transformation
112
+ * const name = userQuery.getCacheData((user) => user.name)
113
+ */
114
+ getCacheData: {
115
+ (): TSelected | undefined;
116
+ <TFinal>(select: (data: TSelected) => TFinal): TFinal | undefined;
117
+ };
118
+ }
119
+ /**
120
+ * Result from createQuery
121
+ *
122
+ * Includes useQuery hook that:
123
+ * - Supports `enabled` option for conditional fetching
124
+ * - Data may be `undefined` during loading
125
+ * - Uses regular `useQuery` with manual loading state handling
126
+ *
127
+ * @template TQueryFnData - The raw data type
128
+ * @template TSelected - The type after select transformation
129
+ * @template TError - The error type
130
+ */
131
+ export interface QueryResult<TQueryFnData, TSelected = TQueryFnData, TError = Error> extends BaseQueryResult<TQueryFnData, TSelected, TError> {
132
+ /** React hook for components - supports chained select and enabled option */
133
+ useQuery: UseQueryWithSelect<TQueryFnData, TSelected, TError>;
134
+ }
135
+ /**
136
+ * Result from createSuspenseQuery
137
+ *
138
+ * Includes useSuspenseQuery hook that:
139
+ * - Requires wrapping in <Suspense> boundary
140
+ * - Data is always defined (no undefined checks)
141
+ * - Does NOT support `enabled` option
142
+ *
143
+ * @template TQueryFnData - The raw data type
144
+ * @template TSelected - The type after select transformation
145
+ * @template TError - The error type
146
+ */
147
+ export interface SuspenseQueryResult<TQueryFnData, TSelected = TQueryFnData, TError = Error> extends BaseQueryResult<TQueryFnData, TSelected, TError> {
148
+ /** React hook for components - data is always defined (wrap in Suspense) */
149
+ useSuspenseQuery: UseSuspenseQueryWithSelect<TQueryFnData, TSelected, TError>;
150
+ }
151
+ /**
152
+ * Configuration for createMutation and useActorMutation.
153
+ */
154
+ export interface MutationConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> extends Omit<UseMutationOptions<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, ReactorArgs<A, M, T>>, "mutationFn"> {
155
+ /** The method to call on the canister */
156
+ functionName: M;
157
+ /** Call configuration for the actor method */
158
+ callConfig?: CallConfig;
159
+ /** Queries to refetch upon successful mutation */
160
+ refetchQueries?: QueryKey[];
161
+ /**
162
+ * Callback for canister-level business logic errors.
163
+ * Called when the canister returns a Result { Err: E } variant.
164
+ *
165
+ * This is separate from `onError` which handles all errors including
166
+ * network failures, agent errors, etc.
167
+ *
168
+ * @param error - The CanisterError containing the typed error value
169
+ * @param variables - The arguments passed to the mutation
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * createMutation(reactor, {
174
+ * functionName: "transfer",
175
+ * onCanisterError: (error, variables) => {
176
+ * // error.err contains the typed Err value
177
+ * // error.code contains the variant key (e.g., "InsufficientFunds")
178
+ * console.error(`Transfer failed: ${error.code}`, error.err)
179
+ * },
180
+ * })
181
+ * ```
182
+ */
183
+ onCanisterError?: (error: CanisterError<unknown>, variables: ReactorArgs<A, M, T>) => void;
184
+ }
185
+ /**
186
+ * Configuration for createMutationFactory.
187
+ */
188
+ export type MutationFactoryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> = Omit<MutationConfig<A, M, T>, "onSuccess">;
189
+ /**
190
+ * Options for useMutation hook.
191
+ * Extends React Query's UseMutationOptions with refetchQueries support.
192
+ */
193
+ export interface MutationHookOptions<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> extends Omit<UseMutationOptions<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, ReactorArgs<A, M, T>>, "mutationFn"> {
194
+ /**
195
+ * Query keys to refetch upon successful mutation.
196
+ * Use query.getQueryKey() to get the key from a query result.
197
+ *
198
+ * @example
199
+ * const balanceQuery = getIcpBalance(account)
200
+ * useMutation({
201
+ * refetchQueries: [balanceQuery.getQueryKey()],
202
+ * })
203
+ */
204
+ refetchQueries?: (QueryKey | undefined)[];
205
+ /**
206
+ * Callback for canister-level business logic errors.
207
+ * Called when the canister returns a Result { Err: E } variant.
208
+ *
209
+ * @param error - The CanisterError containing the typed error value
210
+ * @param variables - The arguments passed to the mutation
211
+ */
212
+ onCanisterError?: (error: CanisterError<TransformReturnRegistry<ErrResult<ActorMethodReturnType<A[M]>>>[T]>, variables: ReactorArgs<A, M, T>) => void;
213
+ }
214
+ /**
215
+ * Result from createMutation.
216
+ */
217
+ export interface MutationResult<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> {
218
+ /**
219
+ * React hook for the mutation.
220
+ * Accepts options to override/extend the factory config.
221
+ *
222
+ * @example
223
+ * // With refetchQueries to auto-update balance after transfer
224
+ * const { mutate } = icpTransferMutation.useMutation({
225
+ * refetchQueries: [userBalanceQuery], // Auto-refetch after success!
226
+ * })
227
+ */
228
+ useMutation: (options?: MutationHookOptions<A, M, T>) => UseMutationResult<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, ReactorArgs<A, M, T>>;
229
+ /** Execute the update call directly (outside of React) */
230
+ execute: (args: ReactorArgs<A, M, T>) => Promise<ReactorReturnOk<A, M, T>>;
231
+ }
232
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,22 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./context/actor/types"), exports);
18
- __exportStar(require("./context/agent/types"), exports);
19
- __exportStar(require("./context/adapter/types"), exports);
20
- __exportStar(require("./helpers/types"), exports);
21
- __exportStar(require("./hooks/types"), exports);
22
- __exportStar(require("@ic-reactor/core/dist/types"), exports);
1
+ /**
2
+ * Shared type definitions for query factories (createActorQuery, createActorSuspenseQuery, etc.)
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}