@wagmi/core 2.0.0-alpha.3 → 2.0.0-alpha.4
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 +4 -4
- package/dist/esm/actions/connect.js.map +1 -1
- package/dist/esm/actions/disconnect.js +3 -3
- package/dist/esm/actions/disconnect.js.map +1 -1
- package/dist/esm/actions/reconnect.js +9 -5
- package/dist/esm/actions/reconnect.js.map +1 -1
- package/dist/esm/connectors/createConnector.js +8 -0
- package/dist/esm/connectors/createConnector.js.map +1 -0
- package/dist/esm/connectors/injected.js +380 -0
- package/dist/esm/connectors/injected.js.map +1 -0
- package/dist/esm/createConfig.js +40 -27
- package/dist/esm/createConfig.js.map +1 -1
- package/dist/esm/exports/index.js +4 -3
- package/dist/esm/exports/index.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 +1 -1
- package/dist/types/actions/connect.d.ts.map +1 -1
- package/dist/types/actions/reconnect.d.ts +1 -1
- package/dist/types/actions/reconnect.d.ts.map +1 -1
- package/dist/types/{createConnector.d.ts → connectors/createConnector.d.ts} +5 -3
- package/dist/types/connectors/createConnector.d.ts.map +1 -0
- package/dist/types/connectors/injected.d.ts +345 -0
- package/dist/types/connectors/injected.d.ts.map +1 -0
- package/dist/types/createConfig.d.ts +8 -12
- package/dist/types/createConfig.d.ts.map +1 -1
- package/dist/types/exports/index.d.ts +2 -1
- package/dist/types/exports/index.d.ts.map +1 -1
- package/dist/types/query/connect.d.ts +1 -1
- package/dist/types/query/getWalletClient.d.ts +10 -10
- package/dist/types/query/signTypedData.d.ts +8 -8
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -1
- package/src/actions/connect.ts +4 -4
- package/src/actions/disconnect.ts +3 -3
- package/src/actions/reconnect.ts +9 -5
- package/src/{createConnector.ts → connectors/createConnector.ts} +7 -4
- package/src/connectors/injected.ts +533 -0
- package/src/createConfig.ts +60 -42
- package/src/exports/index.ts +14 -9
- package/src/version.ts +1 -1
- package/dist/esm/createConnector.js +0 -8
- package/dist/esm/createConnector.js.map +0 -1
- package/dist/types/createConnector.d.ts.map +0 -1
package/src/createConfig.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type EIP6963ProviderDetail, createStore as createMipd } from 'mipd'
|
|
1
2
|
import {
|
|
2
3
|
type Address,
|
|
3
4
|
type Chain,
|
|
@@ -12,7 +13,8 @@ import { createStore } from 'zustand/vanilla'
|
|
|
12
13
|
import {
|
|
13
14
|
type ConnectorEventMap,
|
|
14
15
|
type CreateConnectorFn,
|
|
15
|
-
} from './createConnector.js'
|
|
16
|
+
} from './connectors/createConnector.js'
|
|
17
|
+
import { injected } from './connectors/injected.js'
|
|
16
18
|
import { Emitter, type EventData, createEmitter } from './createEmitter.js'
|
|
17
19
|
import { type Storage, createStorage, noopStorage } from './createStorage.js'
|
|
18
20
|
import { ChainNotConfiguredError } from './errors/config.js'
|
|
@@ -29,7 +31,7 @@ export type CreateConfigParameters<
|
|
|
29
31
|
{
|
|
30
32
|
chains: chains
|
|
31
33
|
connectors?: CreateConnectorFn[] | undefined
|
|
32
|
-
|
|
34
|
+
multiInjectedProviderDiscovery?: boolean | undefined
|
|
33
35
|
storage?: Storage | null | undefined
|
|
34
36
|
syncConnectedChain?: boolean | undefined
|
|
35
37
|
} & OneOf<
|
|
@@ -45,14 +47,7 @@ export type CreateConfigParameters<
|
|
|
45
47
|
chains[number]
|
|
46
48
|
>
|
|
47
49
|
}
|
|
48
|
-
>
|
|
49
|
-
OneOf<
|
|
50
|
-
| {
|
|
51
|
-
/** @deprecated Use `reconnectOnMount` instead */
|
|
52
|
-
autoConnect?: boolean | undefined
|
|
53
|
-
}
|
|
54
|
-
| { reconnectOnMount?: boolean | undefined }
|
|
55
|
-
>
|
|
50
|
+
>
|
|
56
51
|
>
|
|
57
52
|
|
|
58
53
|
export function createConfig<
|
|
@@ -62,9 +57,8 @@ export function createConfig<
|
|
|
62
57
|
parameters: CreateConfigParameters<chains, transports>,
|
|
63
58
|
): Config<chains, transports> {
|
|
64
59
|
const {
|
|
65
|
-
autoConnect,
|
|
66
60
|
chains,
|
|
67
|
-
|
|
61
|
+
multiInjectedProviderDiscovery = true,
|
|
68
62
|
storage = createStorage({
|
|
69
63
|
storage:
|
|
70
64
|
typeof window !== 'undefined' && window.localStorage
|
|
@@ -79,7 +73,17 @@ export function createConfig<
|
|
|
79
73
|
// Set up connectors, clients, etc.
|
|
80
74
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
81
75
|
|
|
82
|
-
const
|
|
76
|
+
const mipd =
|
|
77
|
+
typeof window !== 'undefined' && multiInjectedProviderDiscovery
|
|
78
|
+
? createMipd()
|
|
79
|
+
: undefined
|
|
80
|
+
|
|
81
|
+
const connectors = createStore(() =>
|
|
82
|
+
[
|
|
83
|
+
...(rest.connectors ?? []),
|
|
84
|
+
...(mipd?.getProviders().map(providerDetailToConnector) ?? []),
|
|
85
|
+
].map(setup),
|
|
86
|
+
)
|
|
83
87
|
function setup(connectorFn: CreateConnectorFn) {
|
|
84
88
|
// Set up emitter with uid and add to connector so they are "linked" together.
|
|
85
89
|
const emitter = createEmitter<ConnectorEventMap>(uid())
|
|
@@ -89,13 +93,19 @@ export function createConfig<
|
|
|
89
93
|
uid: emitter.uid,
|
|
90
94
|
}
|
|
91
95
|
|
|
92
|
-
// Start listening for `connect` events
|
|
96
|
+
// Start listening for `connect` events on connector setup
|
|
93
97
|
// This allows connectors to "connect" themselves without user interaction (e.g. MetaMask's "Manually connect to current site")
|
|
94
|
-
|
|
98
|
+
emitter.on('connect', connect)
|
|
95
99
|
connector.setup?.()
|
|
96
100
|
|
|
97
101
|
return connector
|
|
98
102
|
}
|
|
103
|
+
function providerDetailToConnector(providerDetail: EIP6963ProviderDetail) {
|
|
104
|
+
const { info, provider } = providerDetail
|
|
105
|
+
return injected({
|
|
106
|
+
target: { ...info, id: info.rdns, provider: provider as any },
|
|
107
|
+
})
|
|
108
|
+
}
|
|
99
109
|
|
|
100
110
|
const clients = new Map<number, Client<Transport, chains[number]>>()
|
|
101
111
|
function getClient<chainId extends chains[number]['id']>(
|
|
@@ -164,9 +174,11 @@ export function createConfig<
|
|
|
164
174
|
? persist(() => initialState, {
|
|
165
175
|
name: 'store',
|
|
166
176
|
partialize(state) {
|
|
167
|
-
return
|
|
177
|
+
return {
|
|
178
|
+
chainId: state.chainId,
|
|
179
|
+
current: state.current,
|
|
180
|
+
} satisfies PartializedState
|
|
168
181
|
},
|
|
169
|
-
skipHydration: !reconnectOnMount,
|
|
170
182
|
storage: storage as Storage<Record<string, unknown>>,
|
|
171
183
|
version: 1,
|
|
172
184
|
})
|
|
@@ -195,6 +207,14 @@ export function createConfig<
|
|
|
195
207
|
},
|
|
196
208
|
)
|
|
197
209
|
|
|
210
|
+
// EIP-6963 subscribe for new wallet providers
|
|
211
|
+
mipd?.subscribe((providerDetails) => {
|
|
212
|
+
for (const providerDetail of providerDetails) {
|
|
213
|
+
const connector = setup(providerDetailToConnector(providerDetail))
|
|
214
|
+
connectors.setState((x) => [...x, connector])
|
|
215
|
+
}
|
|
216
|
+
})
|
|
217
|
+
|
|
198
218
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
199
219
|
// Emitter listeners
|
|
200
220
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
@@ -215,8 +235,12 @@ export function createConfig<
|
|
|
215
235
|
})
|
|
216
236
|
}
|
|
217
237
|
function connect(data: EventData<ConnectorEventMap, 'connect'>) {
|
|
218
|
-
// Disable handling if reconnecting
|
|
219
|
-
if (
|
|
238
|
+
// Disable handling if reconnecting/connecting
|
|
239
|
+
if (
|
|
240
|
+
store.getState().status === 'connecting' ||
|
|
241
|
+
store.getState().status === 'reconnecting'
|
|
242
|
+
)
|
|
243
|
+
return
|
|
220
244
|
|
|
221
245
|
store.setState((x) => {
|
|
222
246
|
const connector = connectors.getState().find((x) => x.uid === data.uid)
|
|
@@ -268,6 +292,7 @@ export function createConfig<
|
|
|
268
292
|
},
|
|
269
293
|
storage,
|
|
270
294
|
|
|
295
|
+
getClient,
|
|
271
296
|
get state() {
|
|
272
297
|
return store.getState() as unknown as State<chains>
|
|
273
298
|
},
|
|
@@ -287,32 +312,25 @@ export function createConfig<
|
|
|
287
312
|
return store.subscribe(
|
|
288
313
|
selector as unknown as (state: State) => any,
|
|
289
314
|
listener,
|
|
290
|
-
options
|
|
315
|
+
options
|
|
316
|
+
? { ...options, fireImmediately: options.emitOnBegin }
|
|
317
|
+
: undefined,
|
|
291
318
|
)
|
|
292
319
|
},
|
|
293
320
|
|
|
294
|
-
getClient,
|
|
295
|
-
|
|
296
321
|
_internal: {
|
|
297
|
-
reconnectOnMount,
|
|
298
322
|
syncConnectedChain,
|
|
299
323
|
transports: rest.transports as transports,
|
|
300
|
-
change,
|
|
301
|
-
connect,
|
|
302
|
-
disconnect,
|
|
303
324
|
connectors: {
|
|
304
325
|
setup,
|
|
305
|
-
setState(value)
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
},
|
|
312
|
-
subscribe(listener) {
|
|
313
|
-
return connectors.subscribe(listener)
|
|
314
|
-
},
|
|
326
|
+
setState: (value) =>
|
|
327
|
+
connectors.setState(
|
|
328
|
+
typeof value === 'function' ? value(connectors.getState()) : value,
|
|
329
|
+
true,
|
|
330
|
+
),
|
|
331
|
+
subscribe: (listener) => connectors.subscribe(listener),
|
|
315
332
|
},
|
|
333
|
+
events: { change, connect, disconnect },
|
|
316
334
|
},
|
|
317
335
|
}
|
|
318
336
|
}
|
|
@@ -341,8 +359,8 @@ export type Config<
|
|
|
341
359
|
listener: (state: state, previousState: state) => void,
|
|
342
360
|
options?:
|
|
343
361
|
| {
|
|
362
|
+
emitOnBegin?: boolean | undefined
|
|
344
363
|
equalityFn?: ((a: state, b: state) => boolean) | undefined
|
|
345
|
-
fireImmediately?: boolean | undefined
|
|
346
364
|
}
|
|
347
365
|
| undefined,
|
|
348
366
|
): () => void
|
|
@@ -352,14 +370,9 @@ export type Config<
|
|
|
352
370
|
}): Client<transports[chainId], Extract<chains[number], { id: chainId }>>
|
|
353
371
|
|
|
354
372
|
_internal: {
|
|
355
|
-
readonly reconnectOnMount: boolean
|
|
356
373
|
readonly syncConnectedChain: boolean
|
|
357
374
|
readonly transports: transports
|
|
358
375
|
|
|
359
|
-
change(data: EventData<ConnectorEventMap, 'change'>): void
|
|
360
|
-
connect(data: EventData<ConnectorEventMap, 'connect'>): void
|
|
361
|
-
disconnect(data: EventData<ConnectorEventMap, 'disconnect'>): void
|
|
362
|
-
|
|
363
376
|
connectors: {
|
|
364
377
|
setup(connectorFn: CreateConnectorFn): Connector
|
|
365
378
|
setState(value: Connector[] | ((state: Connector[]) => Connector[])): void
|
|
@@ -370,6 +383,11 @@ export type Config<
|
|
|
370
383
|
) => void,
|
|
371
384
|
): () => void
|
|
372
385
|
}
|
|
386
|
+
events: {
|
|
387
|
+
change(data: EventData<ConnectorEventMap, 'change'>): void
|
|
388
|
+
connect(data: EventData<ConnectorEventMap, 'connect'>): void
|
|
389
|
+
disconnect(data: EventData<ConnectorEventMap, 'disconnect'>): void
|
|
390
|
+
}
|
|
373
391
|
}
|
|
374
392
|
}
|
|
375
393
|
|
package/src/exports/index.ts
CHANGED
|
@@ -292,6 +292,20 @@ export {
|
|
|
292
292
|
writeContract,
|
|
293
293
|
} from '../actions/writeContract.js'
|
|
294
294
|
|
|
295
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
296
|
+
// connectors
|
|
297
|
+
|
|
298
|
+
export {
|
|
299
|
+
type InjectedParameters,
|
|
300
|
+
injected,
|
|
301
|
+
} from '../connectors/injected.js'
|
|
302
|
+
|
|
303
|
+
export {
|
|
304
|
+
type ConnectorEventMap,
|
|
305
|
+
type CreateConnectorFn,
|
|
306
|
+
createConnector,
|
|
307
|
+
} from '../connectors/createConnector.js'
|
|
308
|
+
|
|
295
309
|
////////////////////////////////////////////////////////////////////////////////
|
|
296
310
|
// createConfig
|
|
297
311
|
|
|
@@ -304,15 +318,6 @@ export {
|
|
|
304
318
|
createConfig,
|
|
305
319
|
} from '../createConfig.js'
|
|
306
320
|
|
|
307
|
-
////////////////////////////////////////////////////////////////////////////////
|
|
308
|
-
// createConnector
|
|
309
|
-
|
|
310
|
-
export {
|
|
311
|
-
type ConnectorEventMap,
|
|
312
|
-
type CreateConnectorFn,
|
|
313
|
-
createConnector,
|
|
314
|
-
} from '../createConnector.js'
|
|
315
|
-
|
|
316
321
|
////////////////////////////////////////////////////////////////////////////////
|
|
317
322
|
// createStorage
|
|
318
323
|
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '2.0.0-alpha.
|
|
1
|
+
export const version = '2.0.0-alpha.4'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createConnector.js","sourceRoot":"","sources":["../../src/createConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAiB,MAAM,kBAAkB,CAAA;AAqDhD,MAAM,UAAU,eAAe,CAI7B,EAAwD;IACxD,OAAO,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createConnector.d.ts","sourceRoot":"","sources":["../../src/createConnector.ts"],"names":[],"mappings":"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"}
|