solid-wagmi 0.1.0 → 0.2.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 (180) hide show
  1. package/README.md +20 -0
  2. package/dist/esm/src/context.js.map +1 -0
  3. package/dist/esm/src/errors/context.js +12 -0
  4. package/dist/esm/src/errors/context.js.map +1 -0
  5. package/dist/esm/src/exports/actions.js.map +1 -0
  6. package/dist/esm/src/exports/chains.js.map +1 -0
  7. package/dist/esm/src/exports/connectors.js.map +1 -0
  8. package/dist/esm/{exports → src/exports}/index.js +4 -0
  9. package/dist/esm/src/exports/index.js.map +1 -0
  10. package/dist/esm/src/exports/query.js.map +1 -0
  11. package/dist/esm/{hooks → src/hooks}/useAccount.js +1 -1
  12. package/dist/esm/src/hooks/useAccount.js.map +1 -0
  13. package/dist/esm/src/hooks/useAccount.test.js +16 -0
  14. package/dist/esm/src/hooks/useAccount.test.js.map +1 -0
  15. package/dist/esm/src/hooks/useBalance.js +15 -0
  16. package/dist/esm/src/hooks/useBalance.js.map +1 -0
  17. package/dist/esm/src/hooks/useBalance.test.js +64 -0
  18. package/dist/esm/src/hooks/useBalance.test.js.map +1 -0
  19. package/dist/esm/{hooks → src/hooks}/useChainId.js +1 -1
  20. package/dist/esm/src/hooks/useChainId.js.map +1 -0
  21. package/dist/esm/src/hooks/useChainId.test.js +15 -0
  22. package/dist/esm/src/hooks/useChainId.test.js.map +1 -0
  23. package/dist/esm/{hooks → src/hooks}/useConfig.js +2 -2
  24. package/dist/esm/src/hooks/useConfig.js.map +1 -0
  25. package/dist/esm/src/hooks/useConfig.test.js +19 -0
  26. package/dist/esm/src/hooks/useConfig.test.js.map +1 -0
  27. package/dist/esm/{hooks → src/hooks}/useConnect.js +1 -1
  28. package/dist/esm/src/hooks/useConnect.js.map +1 -0
  29. package/dist/esm/src/hooks/useConnect.test.js +19 -0
  30. package/dist/esm/src/hooks/useConnect.test.js.map +1 -0
  31. package/dist/esm/{hooks → src/hooks}/useConnections.js +1 -1
  32. package/dist/esm/src/hooks/useConnections.js.map +1 -0
  33. package/dist/esm/src/hooks/useConnections.test.js +13 -0
  34. package/dist/esm/src/hooks/useConnections.test.js.map +1 -0
  35. package/dist/esm/{hooks → src/hooks}/useDisconnect.js +1 -1
  36. package/dist/esm/src/hooks/useDisconnect.js.map +1 -0
  37. package/dist/esm/src/hooks/useDisconnect.test.js +25 -0
  38. package/dist/esm/src/hooks/useDisconnect.test.js.map +1 -0
  39. package/dist/esm/src/hooks/useReadContract.js +24 -0
  40. package/dist/esm/src/hooks/useReadContract.js.map +1 -0
  41. package/dist/esm/src/hooks/useReadContract.test.js +16 -0
  42. package/dist/esm/src/hooks/useReadContract.test.js.map +1 -0
  43. package/dist/esm/src/hooks/useReadContracts.js +42 -0
  44. package/dist/esm/src/hooks/useReadContracts.js.map +1 -0
  45. package/dist/esm/src/hooks/useReadContracts.test.js +26 -0
  46. package/dist/esm/src/hooks/useReadContracts.test.js.map +1 -0
  47. package/dist/esm/src/hooks/useWriteContract.js +17 -0
  48. package/dist/esm/src/hooks/useWriteContract.js.map +1 -0
  49. package/dist/esm/src/hooks/useWriteContract.test.js +17 -0
  50. package/dist/esm/src/hooks/useWriteContract.test.js.map +1 -0
  51. package/dist/esm/src/types/index.js +2 -0
  52. package/dist/esm/src/types/index.js.map +1 -0
  53. package/dist/esm/test/chains.js +43 -0
  54. package/dist/esm/test/chains.js.map +1 -0
  55. package/dist/esm/test/clients.js +41 -0
  56. package/dist/esm/test/clients.js.map +1 -0
  57. package/dist/esm/test/config.js +19 -0
  58. package/dist/esm/test/config.js.map +1 -0
  59. package/dist/esm/test/constants.js +295 -0
  60. package/dist/esm/test/constants.js.map +1 -0
  61. package/dist/esm/test/lib.js +18 -0
  62. package/dist/esm/test/lib.js.map +1 -0
  63. package/dist/esm/test/utils.js +27 -0
  64. package/dist/esm/test/utils.js.map +1 -0
  65. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  66. package/dist/types/src/context.d.ts.map +1 -0
  67. package/dist/types/{errors → src/errors}/context.d.ts +1 -0
  68. package/dist/types/src/errors/context.d.ts.map +1 -0
  69. package/dist/types/src/exports/actions.d.ts.map +1 -0
  70. package/dist/types/src/exports/chains.d.ts.map +1 -0
  71. package/dist/types/src/exports/connectors.d.ts.map +1 -0
  72. package/dist/types/{exports → src/exports}/index.d.ts +4 -0
  73. package/dist/types/src/exports/index.d.ts.map +1 -0
  74. package/dist/types/src/exports/query.d.ts.map +1 -0
  75. package/dist/types/src/hooks/useAccount.d.ts.map +1 -0
  76. package/dist/types/src/hooks/useAccount.test.d.ts +2 -0
  77. package/dist/types/src/hooks/useAccount.test.d.ts.map +1 -0
  78. package/dist/types/src/hooks/useBalance.d.ts +7 -0
  79. package/dist/types/src/hooks/useBalance.d.ts.map +1 -0
  80. package/dist/types/src/hooks/useBalance.test.d.ts +2 -0
  81. package/dist/types/src/hooks/useBalance.test.d.ts.map +1 -0
  82. package/dist/types/src/hooks/useChainId.d.ts.map +1 -0
  83. package/dist/types/src/hooks/useChainId.test.d.ts +2 -0
  84. package/dist/types/src/hooks/useChainId.test.d.ts.map +1 -0
  85. package/dist/types/src/hooks/useConfig.d.ts +7 -0
  86. package/dist/types/src/hooks/useConfig.d.ts.map +1 -0
  87. package/dist/types/src/hooks/useConfig.test.d.ts +2 -0
  88. package/dist/types/src/hooks/useConfig.test.d.ts.map +1 -0
  89. package/dist/types/src/hooks/useConnect.d.ts.map +1 -0
  90. package/dist/types/src/hooks/useConnect.test.d.ts +2 -0
  91. package/dist/types/src/hooks/useConnect.test.d.ts.map +1 -0
  92. package/dist/types/src/hooks/useConnections.d.ts.map +1 -0
  93. package/dist/types/src/hooks/useConnections.test.d.ts +2 -0
  94. package/dist/types/src/hooks/useConnections.test.d.ts.map +1 -0
  95. package/dist/types/src/hooks/useDisconnect.d.ts.map +1 -0
  96. package/dist/types/src/hooks/useDisconnect.test.d.ts +2 -0
  97. package/dist/types/src/hooks/useDisconnect.test.d.ts.map +1 -0
  98. package/dist/types/src/hooks/useReadContract.d.ts +10 -0
  99. package/dist/types/src/hooks/useReadContract.d.ts.map +1 -0
  100. package/dist/types/src/hooks/useReadContract.test.d.ts +2 -0
  101. package/dist/types/src/hooks/useReadContract.test.d.ts.map +1 -0
  102. package/dist/types/src/hooks/useReadContracts.d.ts +10 -0
  103. package/dist/types/src/hooks/useReadContracts.d.ts.map +1 -0
  104. package/dist/types/src/hooks/useReadContracts.test.d.ts +2 -0
  105. package/dist/types/src/hooks/useReadContracts.test.d.ts.map +1 -0
  106. package/dist/types/src/hooks/useWriteContract.d.ts +13 -0
  107. package/dist/types/src/hooks/useWriteContract.d.ts.map +1 -0
  108. package/dist/types/src/hooks/useWriteContract.test.d.ts +2 -0
  109. package/dist/types/src/hooks/useWriteContract.test.d.ts.map +1 -0
  110. package/dist/types/src/types/index.d.ts +25 -0
  111. package/dist/types/src/types/index.d.ts.map +1 -0
  112. package/dist/types/test/chains.d.ts +898 -0
  113. package/dist/types/test/chains.d.ts.map +1 -0
  114. package/dist/types/test/clients.d.ts +920 -0
  115. package/dist/types/test/clients.d.ts.map +1 -0
  116. package/dist/types/test/config.d.ts +488 -0
  117. package/dist/types/test/config.d.ts.map +1 -0
  118. package/dist/types/test/constants.d.ts +1857 -0
  119. package/dist/types/test/constants.d.ts.map +1 -0
  120. package/dist/types/test/lib.d.ts +2 -0
  121. package/dist/types/test/lib.d.ts.map +1 -0
  122. package/dist/types/test/utils.d.ts +17 -0
  123. package/dist/types/test/utils.d.ts.map +1 -0
  124. package/package.json +21 -3
  125. package/src/errors/context.ts +3 -1
  126. package/src/exports/index.ts +4 -0
  127. package/src/hooks/useAccount.ts +1 -1
  128. package/src/hooks/useBalance.ts +45 -0
  129. package/src/hooks/useChainId.ts +1 -1
  130. package/src/hooks/useConfig.ts +14 -4
  131. package/src/hooks/useConnect.ts +1 -1
  132. package/src/hooks/useConnections.ts +1 -1
  133. package/src/hooks/useDisconnect.ts +1 -1
  134. package/src/hooks/useReadContract.ts +101 -0
  135. package/src/hooks/useReadContracts.ts +104 -0
  136. package/src/hooks/useWriteContract.ts +78 -0
  137. package/src/types/index.ts +116 -0
  138. package/dist/esm/context.js.map +0 -1
  139. package/dist/esm/errors/context.js +0 -6
  140. package/dist/esm/errors/context.js.map +0 -1
  141. package/dist/esm/exports/actions.js.map +0 -1
  142. package/dist/esm/exports/chains.js.map +0 -1
  143. package/dist/esm/exports/connectors.js.map +0 -1
  144. package/dist/esm/exports/index.js.map +0 -1
  145. package/dist/esm/exports/query.js.map +0 -1
  146. package/dist/esm/hooks/useAccount.js.map +0 -1
  147. package/dist/esm/hooks/useChainId.js.map +0 -1
  148. package/dist/esm/hooks/useConfig.js.map +0 -1
  149. package/dist/esm/hooks/useConnect.js.map +0 -1
  150. package/dist/esm/hooks/useConnections.js.map +0 -1
  151. package/dist/esm/hooks/useDisconnect.js.map +0 -1
  152. package/dist/types/context.d.ts.map +0 -1
  153. package/dist/types/errors/context.d.ts.map +0 -1
  154. package/dist/types/exports/actions.d.ts.map +0 -1
  155. package/dist/types/exports/chains.d.ts.map +0 -1
  156. package/dist/types/exports/connectors.d.ts.map +0 -1
  157. package/dist/types/exports/index.d.ts.map +0 -1
  158. package/dist/types/exports/query.d.ts.map +0 -1
  159. package/dist/types/hooks/useAccount.d.ts.map +0 -1
  160. package/dist/types/hooks/useChainId.d.ts.map +0 -1
  161. package/dist/types/hooks/useConfig.d.ts +0 -2
  162. package/dist/types/hooks/useConfig.d.ts.map +0 -1
  163. package/dist/types/hooks/useConnect.d.ts.map +0 -1
  164. package/dist/types/hooks/useConnections.d.ts.map +0 -1
  165. package/dist/types/hooks/useDisconnect.d.ts.map +0 -1
  166. /package/dist/esm/{context.js → src/context.js} +0 -0
  167. /package/dist/esm/{exports → src/exports}/actions.js +0 -0
  168. /package/dist/esm/{exports → src/exports}/chains.js +0 -0
  169. /package/dist/esm/{exports → src/exports}/connectors.js +0 -0
  170. /package/dist/esm/{exports → src/exports}/query.js +0 -0
  171. /package/dist/types/{context.d.ts → src/context.d.ts} +0 -0
  172. /package/dist/types/{exports → src/exports}/actions.d.ts +0 -0
  173. /package/dist/types/{exports → src/exports}/chains.d.ts +0 -0
  174. /package/dist/types/{exports → src/exports}/connectors.d.ts +0 -0
  175. /package/dist/types/{exports → src/exports}/query.d.ts +0 -0
  176. /package/dist/types/{hooks → src/hooks}/useAccount.d.ts +0 -0
  177. /package/dist/types/{hooks → src/hooks}/useChainId.d.ts +0 -0
  178. /package/dist/types/{hooks → src/hooks}/useConnect.d.ts +0 -0
  179. /package/dist/types/{hooks → src/hooks}/useConnections.d.ts +0 -0
  180. /package/dist/types/{hooks → src/hooks}/useDisconnect.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../test/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function renderHook<HookFN extends () => unknown>(hookFn: HookFN): ReturnType<HookFN>;
2
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../test/lib.ts"],"names":[],"mappings":"AAUA,wBAAgB,UAAU,CAAC,MAAM,SAAS,MAAM,OAAO,EAAE,MAAM,EAAE,MAAM,sBAkBtE"}
@@ -0,0 +1,17 @@
1
+ export declare function getRpcUrls({ port }: {
2
+ port: number;
3
+ }): {
4
+ readonly port: number;
5
+ readonly rpcUrls: {
6
+ readonly default: {
7
+ readonly http: readonly [`http://127.0.0.1:${number}/`];
8
+ readonly webSocket: readonly [`ws://127.0.0.1:${number}/`];
9
+ };
10
+ readonly public: {
11
+ readonly http: readonly [`http://127.0.0.1:${number}/`];
12
+ readonly webSocket: readonly [`ws://127.0.0.1:${number}/`];
13
+ };
14
+ };
15
+ };
16
+ export declare function wait(time: number): Promise<unknown>;
17
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/utils.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;EAiBpD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,oBAEtC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-wagmi",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Solid.js Hooks for Ethereum",
5
5
  "type": "module",
6
6
  "repository": {
@@ -13,7 +13,16 @@
13
13
  "files": [
14
14
  "dist/**",
15
15
  "!dist/**/*.tsbuildinfo",
16
- "src/**/*.ts"
16
+ "src/**/*.ts",
17
+ "!src/**/*.test.ts",
18
+ "!src/**/*.test-d.ts",
19
+ "/actions",
20
+ "/chains",
21
+ "/codegen",
22
+ "/connectors",
23
+ "/experimental",
24
+ "/internal",
25
+ "/query"
17
26
  ],
18
27
  "exports": {
19
28
  ".": {
@@ -55,8 +64,17 @@
55
64
  ],
56
65
  "author": "",
57
66
  "license": "ISC",
67
+ "devDependencies": {
68
+ "@solidjs/testing-library": "^0.8.10",
69
+ "@testing-library/jest-dom": "^6.9.1",
70
+ "@testing-library/user-event": "^14.6.1",
71
+ "jsdom": "^27.1.0",
72
+ "prool": "^0.0.25",
73
+ "vite-plugin-solid": "^2.11.10",
74
+ "vitest": "^4.0.8"
75
+ },
58
76
  "scripts": {
59
- "test": "echo \"Error: no test specified\" && exit 1",
77
+ "test": "vitest",
60
78
  "build": "pnpm run clean && pnpm run build:esm",
61
79
  "build:esm": "tsc --project tsconfig.build.json --outDir ./dist/esm --declaration --declarationMap --declarationDir ./dist/types",
62
80
  "clean": "rm -rf dist tsconfig.tsbuildinfo actions chains codegen connectors experimental query"
@@ -1,5 +1,7 @@
1
1
  export class WagmiProviderNotFoundError extends Error {
2
+ public static MESSAGE = "`useConfig` must be used withtin <WagmiProvider/>";
3
+
2
4
  constructor() {
3
- super("`useConfig` must be used withtin <WagmiProvider/>");
5
+ super(WagmiProviderNotFoundError.MESSAGE);
4
6
  }
5
7
  }
@@ -13,11 +13,15 @@ export { WagmiProviderNotFoundError } from "../errors/context.js";
13
13
  // Hooks
14
14
  // ///////////////////////////////////////////////////////////////
15
15
  export { useAccount } from "../hooks/useAccount.js";
16
+ export { useBalance } from "../hooks/useBalance.js";
16
17
  export { useChainId } from "../hooks/useChainId.js";
17
18
  export { useConfig } from "../hooks/useConfig.js";
18
19
  export { useConnect } from "../hooks/useConnect.js";
19
20
  export { useConnections } from "../hooks/useConnections.js";
20
21
  export { useDisconnect } from "../hooks/useDisconnect.js";
22
+ export { useReadContract } from "../hooks/useReadContract.js";
23
+ export { useReadContracts } from "../hooks/useReadContracts.js";
24
+ export { useWriteContract } from "../hooks/useWriteContract.js";
21
25
 
22
26
  ////////////////////////////////////////////////////////////////////////////////
23
27
  // @wagmi/core
@@ -3,7 +3,7 @@ import { createSignal, onCleanup, onMount } from "solid-js";
3
3
  import { useConfig } from "./useConfig.js";
4
4
 
5
5
  export function useAccount() {
6
- const { config } = useConfig();
6
+ const config = useConfig();
7
7
  const [account, setAccount] = createSignal(getAccount(config));
8
8
 
9
9
  // Watch account
@@ -0,0 +1,45 @@
1
+ import { useQuery } from "@tanstack/solid-query";
2
+ import type {
3
+ Config,
4
+ GetBalanceErrorType,
5
+ ResolvedRegister,
6
+ } from "@wagmi/core";
7
+ import type { Compute } from "@wagmi/core/internal";
8
+ import {
9
+ getBalanceQueryOptions,
10
+ type GetBalanceData,
11
+ type GetBalanceOptions,
12
+ type GetBalanceQueryFnData,
13
+ type GetBalanceQueryKey,
14
+ } from "@wagmi/core/query";
15
+ import type { ConfigParameter, QueryParameter } from "../types/index.js";
16
+ import { useChainId } from "./useChainId.js";
17
+ import { useConfig } from "./useConfig.js";
18
+
19
+ export type UseBalanceParameters<
20
+ config extends Config = ResolvedRegister["config"],
21
+ selectData = GetBalanceData
22
+ > = Compute<
23
+ GetBalanceOptions<config> &
24
+ ConfigParameter<config> &
25
+ QueryParameter<
26
+ GetBalanceQueryFnData,
27
+ GetBalanceErrorType,
28
+ selectData,
29
+ GetBalanceQueryKey<config>
30
+ >
31
+ >;
32
+ export function useBalance(params: () => UseBalanceParameters) {
33
+ const config = useConfig(params);
34
+ const chain = useChainId();
35
+
36
+ const options = () =>
37
+ getBalanceQueryOptions(config, { chainId: chain().id, ...params() });
38
+ const enabled = () =>
39
+ Boolean(params().address && (params().query?.enabled ?? true));
40
+
41
+ return useQuery(() => ({
42
+ ...options(),
43
+ enabled: enabled(),
44
+ }));
45
+ }
@@ -5,7 +5,7 @@ import { extractChain } from "viem";
5
5
  import { useConfig } from "./useConfig.js";
6
6
 
7
7
  export function useChainId() {
8
- const { config } = useConfig();
8
+ const config = useConfig();
9
9
  const [chainId, setChainID] = createSignal(getChainId(config));
10
10
 
11
11
  // Watch chain id
@@ -1,11 +1,21 @@
1
- import { useContext } from "solid-js";
1
+ import type { Config, ResolvedRegister } from "@wagmi/core";
2
+ import { useContext, type Accessor } from "solid-js";
2
3
  import { WagmiContext } from "../context.js";
3
4
  import { WagmiProviderNotFoundError } from "../errors/context.js";
5
+ import type { ConfigParameter } from "../types/index.js";
4
6
 
5
- export function useConfig() {
6
- const config = useContext(WagmiContext);
7
+ export type UseConfigParameters<config extends Config = Config> = Accessor<
8
+ ConfigParameter<config>
9
+ >;
10
+
11
+ export type UseConfigReturnType<config extends Config = Config> = config;
12
+
13
+ export function useConfig<config extends Config = ResolvedRegister["config"]>(
14
+ parameters?: UseConfigParameters<config>
15
+ ): UseConfigReturnType<config> {
16
+ const config = parameters?.().config ?? useContext(WagmiContext);
7
17
 
8
18
  if (!config) throw new WagmiProviderNotFoundError();
9
19
 
10
- return config;
20
+ return config as UseConfigReturnType<config>;
11
21
  }
@@ -4,7 +4,7 @@ import { createEffect, onCleanup } from "solid-js";
4
4
  import { useConfig } from "./useConfig.js";
5
5
 
6
6
  export function useConnect() {
7
- const { config } = useConfig();
7
+ const config = useConfig();
8
8
 
9
9
  const mutationOptions = connectMutationOptions(config);
10
10
  const { mutate, mutateAsync, ...result } = useMutation(() => ({
@@ -3,7 +3,7 @@ import { createSignal, onCleanup, onMount } from "solid-js";
3
3
  import { useConfig } from "./useConfig.js";
4
4
 
5
5
  export function useConnections() {
6
- const { config } = useConfig();
6
+ const config = useConfig();
7
7
  const [connections, setConnections] = createSignal(getConnections(config));
8
8
 
9
9
  let cleanup: VoidFunction | undefined;
@@ -5,7 +5,7 @@ import { useConfig } from "./useConfig.js";
5
5
  import { useConnections } from "./useConnections.js";
6
6
 
7
7
  export function useDisconnect() {
8
- const { config } = useConfig();
8
+ const config = useConfig();
9
9
 
10
10
  const connections = useConnections();
11
11
  const mutationOptions = disconnectMutationOptions(config);
@@ -0,0 +1,101 @@
1
+ import { useQuery } from "@tanstack/solid-query";
2
+ import type { Config, ResolvedRegister } from "@wagmi/core";
3
+ import {
4
+ readContractQueryOptions,
5
+ type ReadContractData,
6
+ type ReadContractOptions,
7
+ type ReadContractQueryFnData,
8
+ type ReadContractQueryKey,
9
+ } from "@wagmi/core/query";
10
+
11
+ import type { UnionCompute } from "@wagmi/core/internal";
12
+ import { type Accessor } from "solid-js";
13
+ import {
14
+ type Abi,
15
+ type ContractFunctionArgs,
16
+ type ContractFunctionName,
17
+ type ReadContractErrorType,
18
+ } from "viem";
19
+ import type {
20
+ ConfigParameter,
21
+ QueryParameter,
22
+ UseQueryReturnType,
23
+ } from "../types/index.js";
24
+ import { useConfig } from "./useConfig.js";
25
+
26
+ export type UseReadContractReturnType<
27
+ abi extends Abi | readonly unknown[] = Abi,
28
+ functionName extends ContractFunctionName<
29
+ abi,
30
+ "pure" | "view"
31
+ > = ContractFunctionName<abi, "pure" | "view">,
32
+ args extends ContractFunctionArgs<
33
+ abi,
34
+ "pure" | "view",
35
+ functionName
36
+ > = ContractFunctionArgs<abi, "pure" | "view", functionName>,
37
+ selectData = ReadContractData<abi, functionName, args>
38
+ > = UseQueryReturnType<selectData, ReadContractErrorType>;
39
+
40
+ export type UseReadContractParameters<
41
+ abi extends Abi | readonly unknown[] = Abi,
42
+ functionName extends ContractFunctionName<
43
+ abi,
44
+ "pure" | "view"
45
+ > = ContractFunctionName<abi, "pure" | "view">,
46
+ args extends ContractFunctionArgs<
47
+ abi,
48
+ "pure" | "view",
49
+ functionName
50
+ > = ContractFunctionArgs<abi, "pure" | "view", functionName>,
51
+ config extends Config = Config,
52
+ selectData = ReadContractData<abi, functionName, args>
53
+ > = UnionCompute<
54
+ ReadContractOptions<abi, functionName, args, config> &
55
+ ConfigParameter<config> &
56
+ QueryParameter<
57
+ ReadContractQueryFnData<abi, functionName, args>,
58
+ ReadContractErrorType,
59
+ selectData,
60
+ ReadContractQueryKey<abi, functionName, args, config>
61
+ >
62
+ >;
63
+
64
+ export function useReadContract<
65
+ const abi extends Abi | readonly unknown[],
66
+ functionName extends ContractFunctionName<abi, "pure" | "view">,
67
+ const args extends ContractFunctionArgs<abi, "pure" | "view", functionName>,
68
+ config extends Config = ResolvedRegister["config"],
69
+ selectData = ReadContractData<abi, functionName, args>
70
+ >(
71
+ params: Accessor<
72
+ UseReadContractParameters<abi, functionName, args, config, selectData>
73
+ >
74
+ ): UseReadContractReturnType<abi, functionName, args, selectData> {
75
+ const config = useConfig(params);
76
+
77
+ return useQuery(() => {
78
+ const { address, abi, functionName, query = {} } = params();
79
+ const { initialData, ...queryLeftovers } = query;
80
+ // @ts-ignore
81
+ const code = params().code as Hex | undefined;
82
+
83
+ const options = readContractQueryOptions<config, abi, functionName, args>(
84
+ config,
85
+ params()
86
+ );
87
+ const enabled = Boolean(
88
+ (address || code) && abi && functionName && (query?.enabled ?? true)
89
+ );
90
+
91
+ return {
92
+ ...options,
93
+ ...queryLeftovers,
94
+
95
+ // Initial Data type gets messed up when wrapped in function
96
+ initiData:
97
+ initialData instanceof Function ? initialData()! : initialData!,
98
+ enabled,
99
+ };
100
+ });
101
+ }
@@ -0,0 +1,104 @@
1
+ import { useQuery } from "@tanstack/solid-query";
2
+ import type {
3
+ Config,
4
+ ReadContractsErrorType,
5
+ ResolvedRegister,
6
+ } from "@wagmi/core";
7
+ import {
8
+ readContractsQueryOptions,
9
+ type ReadContractsData,
10
+ type ReadContractsOptions,
11
+ type ReadContractsQueryFnData,
12
+ type ReadContractsQueryKey,
13
+ } from "@wagmi/core/query";
14
+
15
+ import type { Compute } from "@wagmi/core/internal";
16
+ import { createMemo, type Accessor } from "solid-js";
17
+ import { type ContractFunctionParameters } from "viem";
18
+ import type {
19
+ ConfigParameter,
20
+ QueryParameter,
21
+ UseQueryReturnType,
22
+ } from "../types/index.js";
23
+ import { useChainId } from "./useChainId.js";
24
+ import { useConfig } from "./useConfig.js";
25
+
26
+ export type UseReadContractsReturnType<
27
+ contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
28
+ allowFailure extends boolean = true,
29
+ selectData = ReadContractsData<contracts, allowFailure>
30
+ > = UseQueryReturnType<selectData, ReadContractsErrorType>;
31
+
32
+ export type UseReadContractsParameters<
33
+ contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
34
+ allowFailure extends boolean = true,
35
+ config extends Config = Config,
36
+ selectData = ReadContractsData<contracts, allowFailure>
37
+ > = Compute<
38
+ ReadContractsOptions<contracts, allowFailure, config> &
39
+ ConfigParameter<config> &
40
+ QueryParameter<
41
+ ReadContractsQueryFnData<contracts, allowFailure>,
42
+ ReadContractsErrorType,
43
+ selectData,
44
+ ReadContractsQueryKey<contracts, allowFailure, config>
45
+ >
46
+ >;
47
+
48
+ export function useReadContracts<
49
+ const contracts extends readonly unknown[],
50
+ allowFailure extends boolean = true,
51
+ config extends Config = ResolvedRegister["config"],
52
+ selectData = ReadContractsData<contracts, allowFailure>
53
+ >(
54
+ params: Accessor<
55
+ UseReadContractsParameters<contracts, allowFailure, config, selectData>
56
+ >
57
+ ) {
58
+ const contracts = createMemo(() => params().contracts ?? []);
59
+ const config = useConfig(params);
60
+ const chainId = useChainId();
61
+
62
+ const contractsChainId = createMemo(() => {
63
+ const firstChainId = (contracts()[0] as { chainId?: number } | undefined)
64
+ ?.chainId;
65
+ if (
66
+ (contracts() as { chainId?: number }[]).every(
67
+ (contract) => contract.chainId === firstChainId
68
+ )
69
+ )
70
+ return firstChainId;
71
+ return undefined;
72
+ });
73
+
74
+ const enabled = createMemo(() => {
75
+ let isContractsValid = false;
76
+ for (const contract of contracts()) {
77
+ const { abi, address, functionName } =
78
+ contract as ContractFunctionParameters;
79
+ if (!abi || !address || !functionName) {
80
+ isContractsValid = false;
81
+ break;
82
+ }
83
+ isContractsValid = true;
84
+ }
85
+ return Boolean(isContractsValid && (params().query?.enabled ?? true));
86
+ });
87
+
88
+ return useQuery(() => {
89
+ const { query = {} } = params();
90
+ // @ts-ignore
91
+ const code = params().code as Hex | undefined;
92
+
93
+ const options = readContractsQueryOptions<Config, contracts, allowFailure>(
94
+ config,
95
+ { ...params(), chainId: contractsChainId() ?? chainId().id }
96
+ );
97
+
98
+ return {
99
+ ...query,
100
+ ...options,
101
+ enabled,
102
+ } as any;
103
+ }) as UseReadContractsReturnType<contracts, allowFailure, selectData>;
104
+ }
@@ -0,0 +1,78 @@
1
+ import { useMutation } from "@tanstack/solid-query";
2
+ import type { Config, WriteContractErrorType } from "@wagmi/core";
3
+ import {
4
+ writeContractMutationOptions,
5
+ type WriteContractData,
6
+ type WriteContractMutate,
7
+ type WriteContractMutateAsync,
8
+ type WriteContractVariables,
9
+ } from "@wagmi/core/query";
10
+
11
+ import type { Abi } from "viem";
12
+ import type {
13
+ ConfigParameter,
14
+ UseMutationParameters,
15
+ UseMutationReturnType,
16
+ } from "../types/index.js";
17
+ import { useConfig } from "./useConfig.js";
18
+
19
+ export type UseWriteContractParameters<
20
+ config extends Config = Config,
21
+ context = unknown
22
+ > = ConfigParameter<config> & {
23
+ mutation?:
24
+ | UseMutationParameters<
25
+ WriteContractData,
26
+ WriteContractErrorType,
27
+ WriteContractVariables<
28
+ Abi,
29
+ string,
30
+ readonly unknown[],
31
+ config,
32
+ config["chains"][number]["id"]
33
+ >,
34
+ context
35
+ >
36
+ | undefined;
37
+ };
38
+
39
+ export type UseWriteContractReturnType<
40
+ config extends Config = Config,
41
+ context = unknown
42
+ > = UseMutationReturnType<
43
+ WriteContractData,
44
+ WriteContractErrorType,
45
+ WriteContractVariables<
46
+ Abi,
47
+ string,
48
+ readonly unknown[],
49
+ config,
50
+ config["chains"][number]["id"]
51
+ >,
52
+ context
53
+ > & {
54
+ writeContract: WriteContractMutate<config, context>;
55
+ writeContractAsync: WriteContractMutateAsync<config, context>;
56
+ };
57
+
58
+ export function useWriteContract<
59
+ config extends Config = Config,
60
+ context = unknown
61
+ >(
62
+ params?: () => UseWriteContractParameters<config, context>
63
+ ): UseWriteContractReturnType<config, context> {
64
+ const config = useConfig();
65
+
66
+ const mutationOptions = writeContractMutationOptions(config);
67
+ const { mutate, mutateAsync, ...result } = useMutation(() => ({
68
+ ...(params?.().mutation ?? {}),
69
+ ...mutationOptions,
70
+ }));
71
+
72
+ type Return = UseWriteContractReturnType<config, context>;
73
+ return {
74
+ ...(result as Return),
75
+ writeContract: mutate as Return["writeContract"],
76
+ writeContractAsync: mutateAsync as Return["writeContractAsync"],
77
+ };
78
+ }
@@ -0,0 +1,116 @@
1
+ import type {
2
+ DefaultError,
3
+ QueryKey,
4
+ SolidQueryOptions,
5
+ UseInfiniteQueryOptions,
6
+ UseMutationOptions,
7
+ UseMutationResult,
8
+ UseQueryResult,
9
+ } from "@tanstack/solid-query";
10
+ import type { Config } from "@wagmi/core";
11
+ import type {
12
+ Compute,
13
+ ExactPartial,
14
+ Omit,
15
+ UnionStrictOmit,
16
+ } from "@wagmi/core/internal";
17
+
18
+ export type EnabledParameter = {
19
+ enabled?: boolean | undefined;
20
+ };
21
+
22
+ export type ConfigParameter<config extends Config = Config> = {
23
+ config?: Config | config | undefined;
24
+ };
25
+
26
+ export type UseQueryReturnType<data = unknown, error = DefaultError> = Compute<
27
+ UseQueryResult<data, error>
28
+ >;
29
+ export type UseInfiniteQueryParameters<
30
+ queryFnData = unknown,
31
+ error = DefaultError,
32
+ data = queryFnData,
33
+ queryKey extends QueryKey = QueryKey,
34
+ pageParam = unknown
35
+ > = Compute<
36
+ Omit<
37
+ ReturnType<
38
+ UseInfiniteQueryOptions<queryFnData, error, data, queryKey, pageParam>
39
+ >,
40
+ "initialData"
41
+ > & {
42
+ // Fix `initialData` type
43
+ initialData?:
44
+ | ReturnType<
45
+ UseInfiniteQueryOptions<queryFnData, error, data, queryKey>
46
+ >["initialData"]
47
+ | undefined;
48
+ }
49
+ >;
50
+
51
+ export type UseMutationReturnType<
52
+ data = unknown,
53
+ error = Error,
54
+ variables = void,
55
+ context = unknown
56
+ > = Compute<
57
+ UnionStrictOmit<
58
+ UseMutationResult<data, error, variables, context>,
59
+ "mutate" | "mutateAsync"
60
+ >
61
+ >;
62
+
63
+ export type UseMutationParameters<
64
+ data = unknown,
65
+ error = Error,
66
+ variables = void,
67
+ context = unknown
68
+ > = Compute<
69
+ Omit<
70
+ ReturnType<UseMutationOptions<data, error, Compute<variables>, context>>,
71
+ "mutationFn" | "mutationKey" | "throwOnError"
72
+ >
73
+ >;
74
+
75
+ export type UseQueryParameters<
76
+ queryFnData = unknown,
77
+ error = DefaultError,
78
+ data = queryFnData,
79
+ queryKey extends QueryKey = QueryKey
80
+ > = Compute<
81
+ ExactPartial<
82
+ Omit<SolidQueryOptions<queryFnData, error, data, queryKey>, "initialData">
83
+ > & {
84
+ // Fix `initialData` type
85
+ initialData?:
86
+ | SolidQueryOptions<queryFnData, error, data, queryKey>["initialData"]
87
+ | undefined;
88
+ }
89
+ >;
90
+
91
+ export type QueryParameter<
92
+ queryFnData = unknown,
93
+ error = DefaultError,
94
+ data = queryFnData,
95
+ queryKey extends QueryKey = QueryKey
96
+ > = {
97
+ query?:
98
+ | Omit<
99
+ UseQueryParameters<queryFnData, error, data, queryKey>,
100
+ "queryFn" | "queryHash" | "queryKey" | "queryKeyHashFn" | "throwOnError"
101
+ >
102
+ | undefined;
103
+ };
104
+
105
+ export type InfiniteQueryParameter<
106
+ queryFnData = unknown,
107
+ error = DefaultError,
108
+ data = queryFnData,
109
+ queryKey extends QueryKey = QueryKey,
110
+ pageParam = unknown
111
+ > = {
112
+ query: Omit<
113
+ UseInfiniteQueryParameters<queryFnData, error, data, queryKey, pageParam>,
114
+ "queryFn" | "queryHash" | "queryKey" | "queryKeyHashFn" | "throwOnError"
115
+ >;
116
+ };
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAc,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,eAAe,EACf,aAAa,EAEb,OAAO,EACP,UAAU,GACX,MAAM,UAAU,CAAC;AAOlB,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,EAAY,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,KAK7B;IACC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE;QAC3C,QAAQ;QACR,cAAc;QACd,kBAAkB;KACnB,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;IAE9D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG;QAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IAC/C,OAAO,CAAC,GAAG,EAAE;QACX,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG;YAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;QAC/B,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- export class WagmiProviderNotFoundError extends Error {
2
- constructor() {
3
- super("`useConfig` must be used withtin <WagmiProvider/>");
4
- }
5
- }
6
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/errors/context.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD;QACE,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/exports/actions.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/exports/chains.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"connectors.js","sourceRoot":"","sources":["../../../src/exports/connectors.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,UAAU;AACV,kEAAkE;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,kEAAkE;AAClE,SAAS;AACT,kEAAkE;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,kEAAkE;AAClE,QAAQ;AACR,kEAAkE;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACtB,qCAAqC;AACrC,YAAY;AACZ,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,aAAa;AACb,aAAa;AACb,MAAM,EACN,SAAS,EACT,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,SAAS,EACT,4BAA4B,EAC5B,kBAAkB,EAClB,SAAS,GA2BV,MAAM,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/exports/query.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}