@wagmi/core 2.0.0-alpha.1 → 2.0.0-alpha.3
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/dist/esm/actions/connect.js +7 -12
- package/dist/esm/actions/connect.js.map +1 -1
- package/dist/esm/actions/disconnect.js +2 -0
- package/dist/esm/actions/disconnect.js.map +1 -1
- package/dist/esm/actions/getBalance.js +11 -4
- package/dist/esm/actions/getBalance.js.map +1 -1
- package/dist/esm/actions/getConnectorClient.js.map +1 -1
- package/dist/esm/actions/getConnectors.js +11 -0
- package/dist/esm/actions/getConnectors.js.map +1 -0
- package/dist/esm/actions/readContracts.js.map +1 -1
- package/dist/esm/actions/reconnect.js +1 -1
- package/dist/esm/actions/reconnect.js.map +1 -1
- package/dist/esm/actions/signTypedData.js.map +1 -1
- package/dist/esm/actions/switchAccount.js.map +1 -1
- package/dist/esm/actions/waitForTransactionReceipt.js.map +1 -1
- package/dist/esm/actions/watchAccount.js.map +1 -1
- package/dist/esm/actions/watchBlockNumber.js.map +1 -1
- package/dist/esm/actions/watchBlocks.js.map +1 -1
- package/dist/esm/actions/watchConnectors.js +9 -0
- package/dist/esm/actions/watchConnectors.js.map +1 -0
- package/dist/esm/createConfig.js +22 -12
- package/dist/esm/createConfig.js.map +1 -1
- package/dist/esm/createConnector.js.map +1 -1
- package/dist/esm/createStorage.js +2 -2
- package/dist/esm/createStorage.js.map +1 -1
- package/dist/esm/exports/actions.js +2 -0
- package/dist/esm/exports/actions.js.map +1 -1
- package/dist/esm/exports/index.js +2 -0
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/exports/query.js +1 -0
- package/dist/esm/exports/query.js.map +1 -1
- package/dist/esm/query/estimateGas.js.map +1 -1
- package/dist/esm/query/getBalance.js +5 -4
- package/dist/esm/query/getBalance.js.map +1 -1
- package/dist/esm/query/getTransaction.js +3 -2
- package/dist/esm/query/getTransaction.js.map +1 -1
- package/dist/esm/query/infiniteReadContracts.js +21 -0
- package/dist/esm/query/infiniteReadContracts.js.map +1 -0
- package/dist/esm/query/readContract.js +2 -2
- package/dist/esm/query/readContract.js.map +1 -1
- package/dist/esm/query/readContracts.js +2 -2
- package/dist/esm/query/readContracts.js.map +1 -1
- package/dist/esm/query/simulateContract.js +5 -1
- package/dist/esm/query/simulateContract.js.map +1 -1
- package/dist/esm/query/utils.js +12 -0
- package/dist/esm/query/utils.js.map +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/actions/connect.d.ts +2 -2
- package/dist/types/actions/connect.d.ts.map +1 -1
- package/dist/types/actions/disconnect.d.ts +3 -4
- package/dist/types/actions/disconnect.d.ts.map +1 -1
- package/dist/types/actions/getBalance.d.ts.map +1 -1
- package/dist/types/actions/getConnectors.d.ts +5 -0
- package/dist/types/actions/getConnectors.d.ts.map +1 -0
- package/dist/types/actions/getToken.d.ts +3 -3
- package/dist/types/actions/getToken.d.ts.map +1 -1
- package/dist/types/actions/multicall.d.ts +1 -1
- package/dist/types/actions/multicall.d.ts.map +1 -1
- package/dist/types/actions/signTypedData.d.ts +2 -1
- package/dist/types/actions/signTypedData.d.ts.map +1 -1
- package/dist/types/actions/switchAccount.d.ts.map +1 -1
- package/dist/types/actions/switchChain.d.ts +2 -2
- package/dist/types/actions/switchChain.d.ts.map +1 -1
- package/dist/types/actions/waitForTransactionReceipt.d.ts.map +1 -1
- package/dist/types/actions/watchAccount.d.ts.map +1 -1
- package/dist/types/actions/watchBlocks.d.ts.map +1 -1
- package/dist/types/actions/watchConnectors.d.ts +9 -0
- package/dist/types/actions/watchConnectors.d.ts.map +1 -0
- package/dist/types/createConfig.d.ts +12 -8
- package/dist/types/createConfig.d.ts.map +1 -1
- package/dist/types/createConnector.d.ts.map +1 -1
- package/dist/types/createStorage.d.ts +1 -1
- package/dist/types/createStorage.d.ts.map +1 -1
- package/dist/types/errors/base.d.ts +7 -7
- package/dist/types/errors/base.d.ts.map +1 -1
- package/dist/types/exports/actions.d.ts +2 -0
- package/dist/types/exports/actions.d.ts.map +1 -1
- package/dist/types/exports/index.d.ts +2 -0
- package/dist/types/exports/index.d.ts.map +1 -1
- package/dist/types/exports/query.d.ts +1 -0
- package/dist/types/exports/query.d.ts.map +1 -1
- package/dist/types/query/connect.d.ts +1 -1
- package/dist/types/query/getBalance.d.ts.map +1 -1
- package/dist/types/query/getToken.d.ts +3 -3
- package/dist/types/query/getTransaction.d.ts.map +1 -1
- package/dist/types/query/infiniteReadContracts.d.ts +61 -0
- package/dist/types/query/infiniteReadContracts.d.ts.map +1 -0
- package/dist/types/query/readContract.d.ts +3 -3
- package/dist/types/query/readContract.d.ts.map +1 -1
- package/dist/types/query/readContracts.d.ts +8 -8
- package/dist/types/query/readContracts.d.ts.map +1 -1
- package/dist/types/query/signTypedData.d.ts +219 -206
- package/dist/types/query/signTypedData.d.ts.map +1 -1
- package/dist/types/query/simulateContract.d.ts +3 -3
- package/dist/types/query/simulateContract.d.ts.map +1 -1
- package/dist/types/query/switchChain.d.ts +1 -1
- package/dist/types/query/types.d.ts +14 -4
- package/dist/types/query/types.d.ts.map +1 -1
- package/dist/types/query/utils.d.ts.map +1 -1
- package/dist/types/query/waitForTransactionReceipt.d.ts +1 -1
- package/dist/types/types/utils.d.ts +0 -9
- package/dist/types/types/utils.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +4 -4
- package/src/actions/connect.ts +9 -15
- package/src/actions/disconnect.ts +4 -3
- package/src/actions/getBalance.ts +12 -4
- package/src/actions/getBlock.ts +1 -1
- package/src/actions/getConnectorClient.ts +1 -1
- package/src/actions/getConnectors.ts +14 -0
- package/src/actions/getToken.ts +3 -3
- package/src/actions/multicall.ts +1 -1
- package/src/actions/readContracts.ts +1 -1
- package/src/actions/reconnect.ts +1 -1
- package/src/actions/signTypedData.ts +5 -7
- package/src/actions/switchAccount.ts +1 -0
- package/src/actions/switchChain.ts +2 -2
- package/src/actions/waitForTransactionReceipt.ts +3 -1
- package/src/actions/watchAccount.ts +1 -0
- package/src/actions/watchBlockNumber.ts +2 -2
- package/src/actions/watchBlocks.ts +2 -5
- package/src/actions/watchConnectors.ts +22 -0
- package/src/createConfig.ts +75 -54
- package/src/createConnector.ts +2 -10
- package/src/createStorage.ts +3 -4
- package/src/errors/base.ts +5 -5
- package/src/exports/actions.ts +11 -0
- package/src/exports/index.ts +11 -0
- package/src/exports/query.ts +9 -0
- package/src/query/estimateGas.ts +1 -1
- package/src/query/getBalance.ts +5 -13
- package/src/query/getTransaction.ts +3 -9
- package/src/query/infiniteReadContracts.ts +126 -0
- package/src/query/readContract.ts +7 -7
- package/src/query/readContracts.ts +9 -9
- package/src/query/simulateContract.ts +8 -4
- package/src/query/types.ts +64 -33
- package/src/query/utils.ts +15 -0
- package/src/query/waitForTransactionReceipt.ts +1 -1
- package/src/types/utils.ts +0 -8
- package/src/version.ts +1 -1
package/src/createConfig.ts
CHANGED
|
@@ -55,47 +55,6 @@ export type CreateConfigParameters<
|
|
|
55
55
|
>
|
|
56
56
|
>
|
|
57
57
|
|
|
58
|
-
export type Config<
|
|
59
|
-
chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
|
|
60
|
-
transports extends Record<chains[number]['id'], Transport> = Record<
|
|
61
|
-
chains[number]['id'],
|
|
62
|
-
Transport
|
|
63
|
-
>,
|
|
64
|
-
> = {
|
|
65
|
-
readonly chains: chains
|
|
66
|
-
readonly connectors: readonly Connector[]
|
|
67
|
-
readonly state: State<chains>
|
|
68
|
-
readonly storage: Storage | null
|
|
69
|
-
|
|
70
|
-
getClient<chainId extends chains[number]['id']>(parameters?: {
|
|
71
|
-
chainId?: chainId | chains[number]['id'] | undefined
|
|
72
|
-
}): Client<transports[chainId], Extract<chains[number], { id: chainId }>>
|
|
73
|
-
setState<tchains extends readonly [Chain, ...Chain[]] = chains>(
|
|
74
|
-
value: State<tchains> | ((state: State<tchains>) => State<tchains>),
|
|
75
|
-
): void
|
|
76
|
-
subscribe<state>(
|
|
77
|
-
selector: (state: State<chains>) => state,
|
|
78
|
-
listener: (selectedState: state, previousSelectedState: state) => void,
|
|
79
|
-
options?:
|
|
80
|
-
| {
|
|
81
|
-
equalityFn?: ((a: state, b: state) => boolean) | undefined
|
|
82
|
-
fireImmediately?: boolean | undefined
|
|
83
|
-
}
|
|
84
|
-
| undefined,
|
|
85
|
-
): () => void
|
|
86
|
-
|
|
87
|
-
_internal: {
|
|
88
|
-
readonly reconnectOnMount: boolean
|
|
89
|
-
readonly syncConnectedChain: boolean
|
|
90
|
-
readonly transports: transports
|
|
91
|
-
|
|
92
|
-
change(data: EventData<ConnectorEventMap, 'change'>): void
|
|
93
|
-
connect(data: EventData<ConnectorEventMap, 'connect'>): void
|
|
94
|
-
disconnect(data: EventData<ConnectorEventMap, 'disconnect'>): void
|
|
95
|
-
setup(connectorFn: CreateConnectorFn): Connector
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
58
|
export function createConfig<
|
|
100
59
|
const chains extends readonly [Chain, ...Chain[]],
|
|
101
60
|
transports extends Record<chains[number]['id'], Transport>,
|
|
@@ -120,7 +79,7 @@ export function createConfig<
|
|
|
120
79
|
// Set up connectors, clients, etc.
|
|
121
80
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
122
81
|
|
|
123
|
-
const connectors = (rest.connectors ?? []).map(setup)
|
|
82
|
+
const connectors = createStore(() => (rest.connectors ?? []).map(setup))
|
|
124
83
|
function setup(connectorFn: CreateConnectorFn) {
|
|
125
84
|
// Set up emitter with uid and add to connector so they are "linked" together.
|
|
126
85
|
const emitter = createEmitter<ConnectorEventMap>(uid())
|
|
@@ -205,12 +164,7 @@ export function createConfig<
|
|
|
205
164
|
? persist(() => initialState, {
|
|
206
165
|
name: 'store',
|
|
207
166
|
partialize(state) {
|
|
208
|
-
return
|
|
209
|
-
chainId: state.chainId,
|
|
210
|
-
connections: state.connections,
|
|
211
|
-
current: state.current,
|
|
212
|
-
status: state.status,
|
|
213
|
-
} satisfies PartializedState
|
|
167
|
+
return state satisfies PartializedState
|
|
214
168
|
},
|
|
215
169
|
skipHydration: !reconnectOnMount,
|
|
216
170
|
storage: storage as Storage<Record<string, unknown>>,
|
|
@@ -265,7 +219,7 @@ export function createConfig<
|
|
|
265
219
|
if (store.getState().status === 'reconnecting') return
|
|
266
220
|
|
|
267
221
|
store.setState((x) => {
|
|
268
|
-
const connector = connectors.find((x) => x.uid === data.uid)
|
|
222
|
+
const connector = connectors.getState().find((x) => x.uid === data.uid)
|
|
269
223
|
if (!connector) return x
|
|
270
224
|
return {
|
|
271
225
|
...x,
|
|
@@ -309,13 +263,14 @@ export function createConfig<
|
|
|
309
263
|
|
|
310
264
|
return {
|
|
311
265
|
chains: chains as chains,
|
|
312
|
-
connectors
|
|
313
|
-
|
|
314
|
-
return store.getState() as unknown as State<chains>
|
|
266
|
+
get connectors() {
|
|
267
|
+
return connectors.getState()
|
|
315
268
|
},
|
|
316
269
|
storage,
|
|
317
270
|
|
|
318
|
-
|
|
271
|
+
get state() {
|
|
272
|
+
return store.getState() as unknown as State<chains>
|
|
273
|
+
},
|
|
319
274
|
setState(value) {
|
|
320
275
|
let newState: State
|
|
321
276
|
if (typeof value === 'function') newState = value(store.getState() as any)
|
|
@@ -336,6 +291,8 @@ export function createConfig<
|
|
|
336
291
|
)
|
|
337
292
|
},
|
|
338
293
|
|
|
294
|
+
getClient,
|
|
295
|
+
|
|
339
296
|
_internal: {
|
|
340
297
|
reconnectOnMount,
|
|
341
298
|
syncConnectedChain,
|
|
@@ -343,7 +300,19 @@ export function createConfig<
|
|
|
343
300
|
change,
|
|
344
301
|
connect,
|
|
345
302
|
disconnect,
|
|
346
|
-
|
|
303
|
+
connectors: {
|
|
304
|
+
setup,
|
|
305
|
+
setState(value) {
|
|
306
|
+
let newState: Connector[]
|
|
307
|
+
if (typeof value === 'function')
|
|
308
|
+
newState = value(connectors.getState())
|
|
309
|
+
else newState = value
|
|
310
|
+
connectors.setState(newState, true)
|
|
311
|
+
},
|
|
312
|
+
subscribe(listener) {
|
|
313
|
+
return connectors.subscribe(listener)
|
|
314
|
+
},
|
|
315
|
+
},
|
|
347
316
|
},
|
|
348
317
|
}
|
|
349
318
|
}
|
|
@@ -352,6 +321,58 @@ export function createConfig<
|
|
|
352
321
|
// Types
|
|
353
322
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
354
323
|
|
|
324
|
+
export type Config<
|
|
325
|
+
chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
|
|
326
|
+
transports extends Record<chains[number]['id'], Transport> = Record<
|
|
327
|
+
chains[number]['id'],
|
|
328
|
+
Transport
|
|
329
|
+
>,
|
|
330
|
+
> = {
|
|
331
|
+
readonly chains: chains
|
|
332
|
+
readonly connectors: readonly Connector[]
|
|
333
|
+
readonly storage: Storage | null
|
|
334
|
+
|
|
335
|
+
readonly state: State<chains>
|
|
336
|
+
setState<tchains extends readonly [Chain, ...Chain[]] = chains>(
|
|
337
|
+
value: State<tchains> | ((state: State<tchains>) => State<tchains>),
|
|
338
|
+
): void
|
|
339
|
+
subscribe<state>(
|
|
340
|
+
selector: (state: State<chains>) => state,
|
|
341
|
+
listener: (state: state, previousState: state) => void,
|
|
342
|
+
options?:
|
|
343
|
+
| {
|
|
344
|
+
equalityFn?: ((a: state, b: state) => boolean) | undefined
|
|
345
|
+
fireImmediately?: boolean | undefined
|
|
346
|
+
}
|
|
347
|
+
| undefined,
|
|
348
|
+
): () => void
|
|
349
|
+
|
|
350
|
+
getClient<chainId extends chains[number]['id']>(parameters?: {
|
|
351
|
+
chainId?: chainId | chains[number]['id'] | undefined
|
|
352
|
+
}): Client<transports[chainId], Extract<chains[number], { id: chainId }>>
|
|
353
|
+
|
|
354
|
+
_internal: {
|
|
355
|
+
readonly reconnectOnMount: boolean
|
|
356
|
+
readonly syncConnectedChain: boolean
|
|
357
|
+
readonly transports: transports
|
|
358
|
+
|
|
359
|
+
change(data: EventData<ConnectorEventMap, 'change'>): void
|
|
360
|
+
connect(data: EventData<ConnectorEventMap, 'connect'>): void
|
|
361
|
+
disconnect(data: EventData<ConnectorEventMap, 'disconnect'>): void
|
|
362
|
+
|
|
363
|
+
connectors: {
|
|
364
|
+
setup(connectorFn: CreateConnectorFn): Connector
|
|
365
|
+
setState(value: Connector[] | ((state: Connector[]) => Connector[])): void
|
|
366
|
+
subscribe(
|
|
367
|
+
listener: (
|
|
368
|
+
state: readonly Connector[],
|
|
369
|
+
prevState: readonly Connector[],
|
|
370
|
+
) => void,
|
|
371
|
+
): () => void
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
355
376
|
export type State<
|
|
356
377
|
chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
|
|
357
378
|
> = {
|
package/src/createConnector.ts
CHANGED
|
@@ -45,18 +45,10 @@ export type CreateConnectorFn<
|
|
|
45
45
|
getAccounts(): Promise<readonly Address[]>
|
|
46
46
|
getChainId(): Promise<number>
|
|
47
47
|
getProvider(
|
|
48
|
-
parameters?:
|
|
49
|
-
| {
|
|
50
|
-
chainId?: number | undefined
|
|
51
|
-
}
|
|
52
|
-
| undefined,
|
|
48
|
+
parameters?: { chainId?: number | undefined } | undefined,
|
|
53
49
|
): Promise<provider>
|
|
54
50
|
getClient?(
|
|
55
|
-
parameters?:
|
|
56
|
-
| {
|
|
57
|
-
chainId?: number | undefined
|
|
58
|
-
}
|
|
59
|
-
| undefined,
|
|
51
|
+
parameters?: { chainId?: number | undefined } | undefined,
|
|
60
52
|
): Promise<Client>
|
|
61
53
|
isAuthorized(): Promise<boolean>
|
|
62
54
|
switchChain?(parameters: { chainId: number }): Promise<Chain>
|
package/src/createStorage.ts
CHANGED
|
@@ -43,7 +43,7 @@ export type CreateStorageParameters = {
|
|
|
43
43
|
deserialize?: (<T>(value: string) => T) | undefined
|
|
44
44
|
key?: string | undefined
|
|
45
45
|
serialize?: (<T>(value: T) => string) | undefined
|
|
46
|
-
storage
|
|
46
|
+
storage?: Evaluate<BaseStorage> | undefined
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export function createStorage<
|
|
@@ -54,12 +54,11 @@ export function createStorage<
|
|
|
54
54
|
deserialize = deserialize_,
|
|
55
55
|
key: prefix = 'wagmi',
|
|
56
56
|
serialize = serialize_,
|
|
57
|
-
storage,
|
|
57
|
+
storage = noopStorage,
|
|
58
58
|
} = parameters
|
|
59
59
|
|
|
60
60
|
function unwrap<type>(value: type): type | Promise<type> {
|
|
61
|
-
if (value instanceof Promise)
|
|
62
|
-
return value.then((x) => x).catch(() => undefined)
|
|
61
|
+
if (value instanceof Promise) return value.then((x) => x).catch(() => null)
|
|
63
62
|
return value
|
|
64
63
|
}
|
|
65
64
|
|
package/src/errors/base.ts
CHANGED
|
@@ -2,11 +2,11 @@ import type { Evaluate, OneOf } from '../types/utils.js'
|
|
|
2
2
|
import { getVersion } from '../utils/getVersion.js'
|
|
3
3
|
|
|
4
4
|
type BaseErrorOptions = Evaluate<
|
|
5
|
-
{
|
|
6
|
-
docsPath?: string
|
|
7
|
-
docsSlug?: string
|
|
8
|
-
metaMessages?: string[]
|
|
9
|
-
}
|
|
5
|
+
OneOf<{ details?: string | undefined } | { cause: BaseError | Error }> & {
|
|
6
|
+
docsPath?: string | undefined
|
|
7
|
+
docsSlug?: string | undefined
|
|
8
|
+
metaMessages?: string[] | undefined
|
|
9
|
+
}
|
|
10
10
|
>
|
|
11
11
|
|
|
12
12
|
export class BaseError extends Error {
|
package/src/exports/actions.ts
CHANGED
|
@@ -64,6 +64,11 @@ export {
|
|
|
64
64
|
getConnections,
|
|
65
65
|
} from '../actions/getConnections.js'
|
|
66
66
|
|
|
67
|
+
export {
|
|
68
|
+
type GetConnectorsReturnType,
|
|
69
|
+
getConnectors,
|
|
70
|
+
} from '../actions/getConnectors.js'
|
|
71
|
+
|
|
67
72
|
export {
|
|
68
73
|
type GetConnectorClientError,
|
|
69
74
|
type GetConnectorClientParameters,
|
|
@@ -225,6 +230,12 @@ export {
|
|
|
225
230
|
watchConnections,
|
|
226
231
|
} from '../actions/watchConnections.js'
|
|
227
232
|
|
|
233
|
+
export {
|
|
234
|
+
type WatchConnectorsParameters,
|
|
235
|
+
type WatchConnectorsReturnType,
|
|
236
|
+
watchConnectors,
|
|
237
|
+
} from '../actions/watchConnectors.js'
|
|
238
|
+
|
|
228
239
|
export {
|
|
229
240
|
type WatchContractEventParameters,
|
|
230
241
|
type WatchContractEventReturnType,
|
package/src/exports/index.ts
CHANGED
|
@@ -82,6 +82,11 @@ export {
|
|
|
82
82
|
getConnections,
|
|
83
83
|
} from '../actions/getConnections.js'
|
|
84
84
|
|
|
85
|
+
export {
|
|
86
|
+
type GetConnectorsReturnType,
|
|
87
|
+
getConnectors,
|
|
88
|
+
} from '../actions/getConnectors.js'
|
|
89
|
+
|
|
85
90
|
export {
|
|
86
91
|
type GetConnectorClientError,
|
|
87
92
|
type GetConnectorClientParameters,
|
|
@@ -249,6 +254,12 @@ export {
|
|
|
249
254
|
watchConnections,
|
|
250
255
|
} from '../actions/watchConnections.js'
|
|
251
256
|
|
|
257
|
+
export {
|
|
258
|
+
type WatchConnectorsParameters,
|
|
259
|
+
type WatchConnectorsReturnType,
|
|
260
|
+
watchConnectors,
|
|
261
|
+
} from '../actions/watchConnectors.js'
|
|
262
|
+
|
|
252
263
|
export {
|
|
253
264
|
type WatchContractEventParameters,
|
|
254
265
|
type WatchContractEventReturnType,
|
package/src/exports/query.ts
CHANGED
|
@@ -134,6 +134,15 @@ export {
|
|
|
134
134
|
getWalletClientQueryOptions,
|
|
135
135
|
} from '../query/getWalletClient.js'
|
|
136
136
|
|
|
137
|
+
export {
|
|
138
|
+
type InfiniteReadContractsData,
|
|
139
|
+
type InfiniteReadContractsOptions,
|
|
140
|
+
type InfiniteReadContractsQueryFnData,
|
|
141
|
+
type InfiniteReadContractsQueryKey,
|
|
142
|
+
infiniteReadContractsQueryKey,
|
|
143
|
+
infiniteReadContractsQueryOptions,
|
|
144
|
+
} from '../query/infiniteReadContracts.js'
|
|
145
|
+
|
|
137
146
|
export {
|
|
138
147
|
type ReadContractData,
|
|
139
148
|
type ReadContractOptions,
|
package/src/query/estimateGas.ts
CHANGED
|
@@ -26,7 +26,7 @@ export function estimateGasQueryOptions<
|
|
|
26
26
|
const { account, scopeKey: _, ...parameters } = queryKey[1]
|
|
27
27
|
if (!account && !connector)
|
|
28
28
|
throw new Error('account or connector is required')
|
|
29
|
-
return estimateGas(config, { account, connector, ...parameters
|
|
29
|
+
return estimateGas(config, { account, connector, ...(parameters as any) })
|
|
30
30
|
},
|
|
31
31
|
queryKey: estimateGasQueryKey(options),
|
|
32
32
|
} as const satisfies QueryOptions<
|
package/src/query/getBalance.ts
CHANGED
|
@@ -21,20 +21,12 @@ export function getBalanceQueryOptions<config extends Config>(
|
|
|
21
21
|
) {
|
|
22
22
|
return {
|
|
23
23
|
async queryFn({ queryKey }) {
|
|
24
|
-
const {
|
|
25
|
-
address,
|
|
26
|
-
blockNumber,
|
|
27
|
-
blockTag,
|
|
28
|
-
scopeKey: _,
|
|
29
|
-
...parameters
|
|
30
|
-
} = queryKey[1]
|
|
24
|
+
const { address, scopeKey: _, ...parameters } = queryKey[1]
|
|
31
25
|
if (!address) throw new Error('address is required')
|
|
32
|
-
const balance = await getBalance(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
: { ...parameters, address, blockTag },
|
|
37
|
-
)
|
|
26
|
+
const balance = await getBalance(config, {
|
|
27
|
+
...(parameters as GetBalanceParameters),
|
|
28
|
+
address,
|
|
29
|
+
})
|
|
38
30
|
return balance ?? null
|
|
39
31
|
},
|
|
40
32
|
queryKey: getBalanceQueryKey(options),
|
|
@@ -24,23 +24,17 @@ export function getTransactionQueryOptions<
|
|
|
24
24
|
>(config: config, options: GetTransactionOptions<config, chainId> = {}) {
|
|
25
25
|
return {
|
|
26
26
|
async queryFn({ queryKey }) {
|
|
27
|
-
const {
|
|
28
|
-
blockHash,
|
|
29
|
-
blockNumber,
|
|
30
|
-
blockTag,
|
|
31
|
-
hash,
|
|
32
|
-
index,
|
|
33
|
-
scopeKey: _,
|
|
34
|
-
} = queryKey[1]
|
|
27
|
+
const { blockHash, blockNumber, blockTag, hash, index } = queryKey[1]
|
|
35
28
|
if (!blockHash && !blockNumber && !blockTag && !hash)
|
|
36
29
|
throw new Error('blockHash, blockNumber, blockTag, or hash is required')
|
|
37
30
|
if (!hash && !index)
|
|
38
31
|
throw new Error(
|
|
39
32
|
'index is required for blockHash, blockNumber, or blockTag',
|
|
40
33
|
)
|
|
34
|
+
const { scopeKey: _, ...rest } = queryKey[1]
|
|
41
35
|
return getTransaction(
|
|
42
36
|
config,
|
|
43
|
-
|
|
37
|
+
rest as GetTransactionParameters,
|
|
44
38
|
) as unknown as Promise<GetTransactionQueryFnData<config, chainId>>
|
|
45
39
|
},
|
|
46
40
|
queryKey: getTransactionQueryKey(options),
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { ContractFunctionParameters } from 'viem'
|
|
2
|
+
import {
|
|
3
|
+
type ReadContractsError,
|
|
4
|
+
type ReadContractsParameters,
|
|
5
|
+
type ReadContractsReturnType,
|
|
6
|
+
readContracts,
|
|
7
|
+
} from '../actions/readContracts.js'
|
|
8
|
+
import type { Config } from '../createConfig.js'
|
|
9
|
+
import type { ChainIdParameter } from '../types/properties.js'
|
|
10
|
+
import type { Omit } from '../types/utils.js'
|
|
11
|
+
import type { InfiniteQueryOptions, ScopeKeyParameter } from './types.js'
|
|
12
|
+
import { filterQueryOptions } from './utils.js'
|
|
13
|
+
|
|
14
|
+
export type InfiniteReadContractsOptions<
|
|
15
|
+
contracts extends readonly unknown[],
|
|
16
|
+
allowFailure extends boolean,
|
|
17
|
+
pageParam,
|
|
18
|
+
config extends Config,
|
|
19
|
+
> = {
|
|
20
|
+
cacheKey: string
|
|
21
|
+
contracts(
|
|
22
|
+
pageParam: pageParam,
|
|
23
|
+
): ReadContractsParameters<contracts, allowFailure, config>['contracts']
|
|
24
|
+
} & Omit<
|
|
25
|
+
ReadContractsParameters<contracts, allowFailure, config>,
|
|
26
|
+
'contracts'
|
|
27
|
+
> &
|
|
28
|
+
ScopeKeyParameter
|
|
29
|
+
|
|
30
|
+
export function infiniteReadContractsQueryOptions<
|
|
31
|
+
config extends Config,
|
|
32
|
+
const contracts extends readonly ContractFunctionParameters[],
|
|
33
|
+
allowFailure extends boolean = true,
|
|
34
|
+
pageParam = unknown,
|
|
35
|
+
>(
|
|
36
|
+
config: config,
|
|
37
|
+
options: InfiniteReadContractsOptions<
|
|
38
|
+
contracts,
|
|
39
|
+
allowFailure,
|
|
40
|
+
pageParam,
|
|
41
|
+
config
|
|
42
|
+
> &
|
|
43
|
+
ChainIdParameter<config> &
|
|
44
|
+
RequiredPageParamsParameters<contracts, allowFailure, pageParam>,
|
|
45
|
+
) {
|
|
46
|
+
return {
|
|
47
|
+
...options.query,
|
|
48
|
+
async queryFn({ pageParam, queryKey }) {
|
|
49
|
+
const { contracts } = options
|
|
50
|
+
const { cacheKey: _, scopeKey: _s, ...parameters } = queryKey[1]
|
|
51
|
+
return (await readContracts(config, {
|
|
52
|
+
...parameters,
|
|
53
|
+
contracts: contracts(
|
|
54
|
+
pageParam,
|
|
55
|
+
) as readonly ContractFunctionParameters[],
|
|
56
|
+
})) as ReadContractsReturnType<contracts, allowFailure>
|
|
57
|
+
},
|
|
58
|
+
queryKey: infiniteReadContractsQueryKey(options),
|
|
59
|
+
} as const satisfies InfiniteQueryOptions<
|
|
60
|
+
InfiniteReadContractsQueryFnData<contracts, allowFailure>,
|
|
61
|
+
ReadContractsError,
|
|
62
|
+
InfiniteReadContractsData<contracts, allowFailure>,
|
|
63
|
+
InfiniteReadContractsData<contracts, allowFailure>,
|
|
64
|
+
InfiniteReadContractsQueryKey<contracts, allowFailure, pageParam, config>,
|
|
65
|
+
pageParam
|
|
66
|
+
>
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
type RequiredPageParamsParameters<
|
|
70
|
+
contracts extends readonly unknown[],
|
|
71
|
+
allowFailure extends boolean,
|
|
72
|
+
pageParam,
|
|
73
|
+
> = {
|
|
74
|
+
query: {
|
|
75
|
+
initialPageParam: pageParam
|
|
76
|
+
getNextPageParam(
|
|
77
|
+
lastPage: InfiniteReadContractsQueryFnData<contracts, allowFailure>,
|
|
78
|
+
allPages: InfiniteReadContractsQueryFnData<contracts, allowFailure>[],
|
|
79
|
+
lastPageParam: pageParam,
|
|
80
|
+
allPageParams: pageParam[],
|
|
81
|
+
): pageParam | undefined | null
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export type InfiniteReadContractsQueryFnData<
|
|
86
|
+
contracts extends readonly unknown[],
|
|
87
|
+
allowFailure extends boolean,
|
|
88
|
+
> = ReadContractsReturnType<contracts, allowFailure>
|
|
89
|
+
|
|
90
|
+
export type InfiniteReadContractsData<
|
|
91
|
+
contracts extends readonly unknown[],
|
|
92
|
+
allowFailure extends boolean,
|
|
93
|
+
> = InfiniteReadContractsQueryFnData<contracts, allowFailure>
|
|
94
|
+
|
|
95
|
+
export function infiniteReadContractsQueryKey<
|
|
96
|
+
config extends Config,
|
|
97
|
+
const contracts extends readonly unknown[],
|
|
98
|
+
allowFailure extends boolean,
|
|
99
|
+
pageParam,
|
|
100
|
+
>(
|
|
101
|
+
options: InfiniteReadContractsOptions<
|
|
102
|
+
contracts,
|
|
103
|
+
allowFailure,
|
|
104
|
+
pageParam,
|
|
105
|
+
config
|
|
106
|
+
> &
|
|
107
|
+
ChainIdParameter<config> &
|
|
108
|
+
RequiredPageParamsParameters<contracts, allowFailure, pageParam>,
|
|
109
|
+
) {
|
|
110
|
+
const { contracts: _, query: _q, ...parameters } = options
|
|
111
|
+
return ['infiniteReadContracts', filterQueryOptions(parameters)] as const
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export type InfiniteReadContractsQueryKey<
|
|
115
|
+
contracts extends readonly unknown[],
|
|
116
|
+
allowFailure extends boolean,
|
|
117
|
+
pageParam,
|
|
118
|
+
config extends Config,
|
|
119
|
+
> = ReturnType<
|
|
120
|
+
typeof infiniteReadContractsQueryKey<
|
|
121
|
+
config,
|
|
122
|
+
contracts,
|
|
123
|
+
allowFailure,
|
|
124
|
+
pageParam
|
|
125
|
+
>
|
|
126
|
+
>
|
|
@@ -30,7 +30,7 @@ export function readContractQueryOptions<
|
|
|
30
30
|
functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
|
|
31
31
|
args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
|
|
32
32
|
>(
|
|
33
|
-
config:
|
|
33
|
+
config: config,
|
|
34
34
|
options: ReadContractOptions<abi, functionName, args, config> = {} as any,
|
|
35
35
|
) {
|
|
36
36
|
return {
|
|
@@ -41,20 +41,20 @@ export function readContractQueryOptions<
|
|
|
41
41
|
if (!address) throw new Error('address is required')
|
|
42
42
|
if (!functionName) throw new Error('functionName is required')
|
|
43
43
|
const args = parameters.args as readonly unknown[]
|
|
44
|
-
return
|
|
44
|
+
return readContract(config, {
|
|
45
45
|
abi,
|
|
46
46
|
address,
|
|
47
47
|
functionName,
|
|
48
48
|
args,
|
|
49
49
|
...parameters,
|
|
50
|
-
})
|
|
50
|
+
}) as Promise<ReadContractData<abi, functionName, args>>
|
|
51
51
|
},
|
|
52
52
|
queryKey: readContractQueryKey(options),
|
|
53
53
|
} as const satisfies QueryOptions<
|
|
54
54
|
ReadContractQueryFnData<abi, functionName, args>,
|
|
55
55
|
ReadContractError,
|
|
56
56
|
ReadContractData<abi, functionName, args>,
|
|
57
|
-
ReadContractQueryKey<
|
|
57
|
+
ReadContractQueryKey<abi, functionName, args, config>
|
|
58
58
|
>
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -71,18 +71,18 @@ export type ReadContractData<
|
|
|
71
71
|
> = ReadContractQueryFnData<abi, functionName, args>
|
|
72
72
|
|
|
73
73
|
export function readContractQueryKey<
|
|
74
|
+
config extends Config,
|
|
74
75
|
const abi extends Abi | readonly unknown[],
|
|
75
76
|
functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
|
|
76
77
|
args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
|
|
77
|
-
config extends Config,
|
|
78
78
|
>(options: ReadContractOptions<abi, functionName, args, config> = {} as any) {
|
|
79
79
|
const { abi: _, ...rest } = options
|
|
80
80
|
return ['readContract', filterQueryOptions(rest)] as const
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
export type ReadContractQueryKey<
|
|
84
|
-
config extends Config,
|
|
85
84
|
abi extends Abi | readonly unknown[],
|
|
86
85
|
functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
|
|
87
86
|
args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
|
|
88
|
-
|
|
87
|
+
config extends Config,
|
|
88
|
+
> = ReturnType<typeof readContractQueryKey<config, abi, functionName, args>>
|
|
@@ -16,9 +16,9 @@ import type { ScopeKeyParameter } from './types.js'
|
|
|
16
16
|
import { filterQueryOptions } from './utils.js'
|
|
17
17
|
|
|
18
18
|
export type ReadContractsOptions<
|
|
19
|
-
config extends Config,
|
|
20
19
|
contracts extends readonly unknown[],
|
|
21
20
|
allowFailure extends boolean,
|
|
21
|
+
config extends Config,
|
|
22
22
|
> = ExactPartial<
|
|
23
23
|
viem_MulticallParameters<
|
|
24
24
|
contracts,
|
|
@@ -33,8 +33,8 @@ export function readContractsQueryOptions<
|
|
|
33
33
|
const contracts extends readonly unknown[],
|
|
34
34
|
allowFailure extends boolean = true,
|
|
35
35
|
>(
|
|
36
|
-
config:
|
|
37
|
-
options: ReadContractsOptions<
|
|
36
|
+
config: config,
|
|
37
|
+
options: ReadContractsOptions<contracts, allowFailure, config> &
|
|
38
38
|
ChainIdParameter<config> = {},
|
|
39
39
|
) {
|
|
40
40
|
return {
|
|
@@ -47,17 +47,17 @@ export function readContractsQueryOptions<
|
|
|
47
47
|
contracts.push({ ...contract, abi })
|
|
48
48
|
}
|
|
49
49
|
const { scopeKey: _, ...parameters } = queryKey[1]
|
|
50
|
-
return
|
|
50
|
+
return readContracts(config, {
|
|
51
51
|
...parameters,
|
|
52
52
|
contracts,
|
|
53
|
-
})
|
|
53
|
+
}) as Promise<ReadContractsReturnType<contracts, allowFailure>>
|
|
54
54
|
},
|
|
55
|
-
queryKey: readContractsQueryKey(options
|
|
55
|
+
queryKey: readContractsQueryKey(options),
|
|
56
56
|
} as const satisfies QueryOptions<
|
|
57
57
|
ReadContractsQueryFnData<contracts, allowFailure>,
|
|
58
58
|
ReadContractsError,
|
|
59
59
|
ReadContractsData<contracts, allowFailure>,
|
|
60
|
-
ReadContractsQueryKey<
|
|
60
|
+
ReadContractsQueryKey<contracts, allowFailure, config>
|
|
61
61
|
>
|
|
62
62
|
}
|
|
63
63
|
|
|
@@ -76,7 +76,7 @@ export function readContractsQueryKey<
|
|
|
76
76
|
const contracts extends readonly unknown[],
|
|
77
77
|
allowFailure extends boolean,
|
|
78
78
|
>(
|
|
79
|
-
options: ReadContractsOptions<
|
|
79
|
+
options: ReadContractsOptions<contracts, allowFailure, config> &
|
|
80
80
|
ChainIdParameter<config> = {},
|
|
81
81
|
) {
|
|
82
82
|
const contracts = []
|
|
@@ -92,7 +92,7 @@ export function readContractsQueryKey<
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
export type ReadContractsQueryKey<
|
|
95
|
-
config extends Config,
|
|
96
95
|
contracts extends readonly unknown[],
|
|
97
96
|
allowFailure extends boolean,
|
|
97
|
+
config extends Config,
|
|
98
98
|
> = ReturnType<typeof readContractsQueryKey<config, contracts, allowFailure>>
|
|
@@ -28,6 +28,7 @@ export type SimulateContractOptions<
|
|
|
28
28
|
ScopeKeyParameter
|
|
29
29
|
|
|
30
30
|
export function simulateContractQueryOptions<
|
|
31
|
+
config extends Config,
|
|
31
32
|
const abi extends Abi | readonly unknown[],
|
|
32
33
|
functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,
|
|
33
34
|
args extends ContractFunctionArgs<
|
|
@@ -35,7 +36,6 @@ export function simulateContractQueryOptions<
|
|
|
35
36
|
'nonpayable' | 'payable',
|
|
36
37
|
functionName
|
|
37
38
|
>,
|
|
38
|
-
config extends Config,
|
|
39
39
|
chainId extends config['chains'][number]['id'] | undefined,
|
|
40
40
|
>(
|
|
41
41
|
config: config,
|
|
@@ -55,7 +55,11 @@ export function simulateContractQueryOptions<
|
|
|
55
55
|
const { address, functionName } = parameters
|
|
56
56
|
if (!address) throw new Error('address is required')
|
|
57
57
|
if (!functionName) throw new Error('functionName is required')
|
|
58
|
-
return simulateContract(config, {
|
|
58
|
+
return simulateContract(config, {
|
|
59
|
+
abi,
|
|
60
|
+
connector,
|
|
61
|
+
...(parameters as any),
|
|
62
|
+
})
|
|
59
63
|
},
|
|
60
64
|
queryKey: simulateContractQueryKey(options),
|
|
61
65
|
} as const satisfies QueryOptions<
|
|
@@ -91,6 +95,7 @@ export type SimulateContractData<
|
|
|
91
95
|
> = SimulateContractQueryFnData<abi, functionName, args, config, chainId>
|
|
92
96
|
|
|
93
97
|
export function simulateContractQueryKey<
|
|
98
|
+
config extends Config,
|
|
94
99
|
abi extends Abi | readonly unknown[],
|
|
95
100
|
functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,
|
|
96
101
|
args extends ContractFunctionArgs<
|
|
@@ -98,7 +103,6 @@ export function simulateContractQueryKey<
|
|
|
98
103
|
'nonpayable' | 'payable',
|
|
99
104
|
functionName
|
|
100
105
|
>,
|
|
101
|
-
config extends Config,
|
|
102
106
|
chainId extends config['chains'][number]['id'] | undefined,
|
|
103
107
|
>(
|
|
104
108
|
options: SimulateContractOptions<
|
|
@@ -124,5 +128,5 @@ export type SimulateContractQueryKey<
|
|
|
124
128
|
config extends Config,
|
|
125
129
|
chainId extends config['chains'][number]['id'] | undefined,
|
|
126
130
|
> = ReturnType<
|
|
127
|
-
typeof simulateContractQueryKey<abi, functionName, args,
|
|
131
|
+
typeof simulateContractQueryKey<config, abi, functionName, args, chainId>
|
|
128
132
|
>
|