accounts 0.7.1 → 0.7.2

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.
@@ -1,272 +0,0 @@
1
- import { ChainNotConfiguredError, createConnector } from '@wagmi/core';
2
- import { numberToHex, SwitchChainError, UserRejectedRequestError, } from 'viem';
3
- import * as z from 'zod/mini';
4
- import { dangerous_secp256k1 as dangerous_secp256k1_adapter } from '../core/adapters/dangerous_secp256k1.js';
5
- import { dialog as core_dialog } from '../core/adapters/dialog.js';
6
- import { webAuthn as webAuthn_adapter } from '../core/adapters/webAuthn.js';
7
- import * as Provider from '../core/Provider.js';
8
- import * as Rpc from '../core/zod/rpc.js';
9
- /**
10
- * Creates a wagmi connector backed by an accounts provider.
11
- */
12
- export function setup(parameters = {}) {
13
- return createConnector((wagmiConfig) => {
14
- const chains = wagmiConfig.chains;
15
- let provider;
16
- let accountsChanged;
17
- let chainChanged;
18
- let connect;
19
- let disconnect;
20
- return {
21
- async connect(params = {}) {
22
- const { chainId, isReconnecting, withCapabilities } = params;
23
- const capabilities = 'capabilities' in params ? params.capabilities : undefined;
24
- let accounts = [];
25
- let currentChainId;
26
- if (isReconnecting)
27
- accounts = await this.getAccounts()
28
- .then((accounts) => accounts.map((address) => ({ address, capabilities: {} })))
29
- .catch(() => []);
30
- const provider = (await this.getProvider());
31
- try {
32
- if (!accounts?.length && !isReconnecting) {
33
- const res = await provider.request({
34
- method: 'wallet_connect',
35
- params: [
36
- {
37
- ...(chainId ? { chainId } : {}),
38
- ...(capabilities
39
- ? {
40
- capabilities: z.encode(Rpc.wallet_connect.capabilities.request, capabilities),
41
- }
42
- : {}),
43
- },
44
- ],
45
- });
46
- accounts = res.accounts;
47
- }
48
- currentChainId ??= await this.getChainId();
49
- if (!currentChainId)
50
- throw new ChainNotConfiguredError();
51
- if (connect) {
52
- provider.removeListener('connect', connect);
53
- connect = undefined;
54
- }
55
- if (!accountsChanged) {
56
- accountsChanged = this.onAccountsChanged.bind(this);
57
- provider.on('accountsChanged', accountsChanged);
58
- }
59
- if (!chainChanged) {
60
- chainChanged = this.onChainChanged.bind(this);
61
- provider.on('chainChanged', chainChanged);
62
- }
63
- if (!disconnect) {
64
- disconnect = this.onDisconnect.bind(this);
65
- provider.on('disconnect', disconnect);
66
- }
67
- return {
68
- accounts: (withCapabilities ? accounts : accounts.map((a) => a.address)),
69
- chainId: currentChainId,
70
- };
71
- }
72
- catch (err) {
73
- const error = err;
74
- if (error.code === UserRejectedRequestError.code)
75
- throw new UserRejectedRequestError(error);
76
- throw error;
77
- }
78
- },
79
- async disconnect() {
80
- const provider = (await this.getProvider());
81
- if (chainChanged) {
82
- provider.removeListener('chainChanged', chainChanged);
83
- chainChanged = undefined;
84
- }
85
- if (disconnect) {
86
- provider.removeListener('disconnect', disconnect);
87
- disconnect = undefined;
88
- }
89
- if (!connect) {
90
- connect = this.onConnect?.bind(this);
91
- if (connect)
92
- provider.on('connect', connect);
93
- }
94
- await provider.request({ method: 'wallet_disconnect' });
95
- },
96
- async getAccounts() {
97
- const provider = (await this.getProvider());
98
- return provider.request({ method: 'eth_accounts' });
99
- },
100
- async getChainId() {
101
- const provider = (await this.getProvider());
102
- const hexChainId = await provider.request({ method: 'eth_chainId' });
103
- return Number(hexChainId);
104
- },
105
- async getProvider() {
106
- provider ??= Provider.create({
107
- ...parameters,
108
- chains: chains,
109
- });
110
- return provider;
111
- },
112
- icon: parameters.adapter?.icon,
113
- id: parameters.adapter?.rdns ?? 'com.example',
114
- async isAuthorized() {
115
- try {
116
- const accounts = await this.getAccounts();
117
- return !!accounts.length;
118
- }
119
- catch {
120
- return false;
121
- }
122
- },
123
- name: parameters.adapter?.name ?? 'Accounts',
124
- async onAccountsChanged(accounts) {
125
- wagmiConfig.emitter.emit('change', {
126
- accounts: accounts,
127
- });
128
- },
129
- onChainChanged(chain) {
130
- const chainId = Number(chain);
131
- wagmiConfig.emitter.emit('change', { chainId });
132
- },
133
- async onConnect(connectInfo) {
134
- const accounts = await this.getAccounts();
135
- if (accounts.length === 0)
136
- return;
137
- const chainId = Number(connectInfo.chainId);
138
- wagmiConfig.emitter.emit('connect', { accounts, chainId });
139
- const provider = (await this.getProvider());
140
- if (connect) {
141
- provider.removeListener('connect', connect);
142
- connect = undefined;
143
- }
144
- if (!accountsChanged) {
145
- accountsChanged = this.onAccountsChanged.bind(this);
146
- provider.on('accountsChanged', accountsChanged);
147
- }
148
- if (!chainChanged) {
149
- chainChanged = this.onChainChanged.bind(this);
150
- provider.on('chainChanged', chainChanged);
151
- }
152
- if (!disconnect) {
153
- disconnect = this.onDisconnect.bind(this);
154
- provider.on('disconnect', disconnect);
155
- }
156
- },
157
- async onDisconnect(_error) {
158
- const provider = (await this.getProvider());
159
- wagmiConfig.emitter.emit('disconnect');
160
- if (chainChanged) {
161
- provider.removeListener('chainChanged', chainChanged);
162
- chainChanged = undefined;
163
- }
164
- if (disconnect) {
165
- provider.removeListener('disconnect', disconnect);
166
- disconnect = undefined;
167
- }
168
- if (!connect) {
169
- connect = this.onConnect?.bind(this);
170
- if (connect)
171
- provider.on('connect', connect);
172
- }
173
- },
174
- async setup() {
175
- if (!connect) {
176
- const provider = (await this.getProvider());
177
- connect = this.onConnect?.bind(this);
178
- if (connect)
179
- provider.on('connect', connect);
180
- }
181
- },
182
- async switchChain({ chainId }) {
183
- const chain = chains.find((x) => x.id === chainId);
184
- if (!chain)
185
- throw new SwitchChainError(new ChainNotConfiguredError());
186
- const provider = (await this.getProvider());
187
- await provider.request({
188
- method: 'wallet_switchEthereumChain',
189
- params: [{ chainId: numberToHex(chainId) }],
190
- });
191
- return chain;
192
- },
193
- type: 'injected',
194
- };
195
- });
196
- }
197
- /**
198
- * Creates a wagmi connector backed by a WebAuthn adapter.
199
- *
200
- * @example
201
- * ```ts
202
- * import { createConfig, http } from 'wagmi'
203
- * import { tempoModerato } from 'wagmi/chains'
204
- * import { webAuthn } from 'accounts/wagmi'
205
- *
206
- * const config = createConfig({
207
- * chains: [tempoModerato],
208
- * connectors: [webAuthn()],
209
- * transports: { [tempoModerato.id]: http() },
210
- * })
211
- * ```
212
- */
213
- export function webAuthn(options = {}) {
214
- const { authUrl, ceremony, icon, name, rdns, ...rest } = options;
215
- const adapter = ceremony
216
- ? webAuthn_adapter({ ceremony, icon, name, rdns })
217
- : webAuthn_adapter({ authUrl, icon, name, rdns });
218
- return setup({
219
- ...rest,
220
- adapter,
221
- });
222
- }
223
- /**
224
- * Creates a wagmi connector backed by a dialog adapter.
225
- *
226
- * @example
227
- * ```ts
228
- * import { createConfig, http } from 'wagmi'
229
- * import { tempoModerato } from 'wagmi/chains'
230
- * import { dialog } from 'accounts/wagmi'
231
- *
232
- * const config = createConfig({
233
- * chains: [tempoModerato],
234
- * connectors: [dialog()],
235
- * transports: { [tempoModerato.id]: http() },
236
- * })
237
- * ```
238
- */
239
- export function dialog(options = {}) {
240
- const { dialog: dialogOption, host, icon, name, rdns, ...rest } = options;
241
- return setup({
242
- ...rest,
243
- adapter: core_dialog({ dialog: dialogOption, host, icon, name, rdns }),
244
- });
245
- }
246
- /**
247
- * Creates a wagmi connector backed by a secp256k1 adapter.
248
- *
249
- * @deprecated Private keys are stored in plaintext via the provider's storage adapter.
250
- * Use only for development, testing, or when the threat model allows it.
251
- *
252
- * @example
253
- * ```ts
254
- * import { createConfig, http } from 'wagmi'
255
- * import { tempoModerato } from 'wagmi/chains'
256
- * import { dangerous_secp256k1 } from 'accounts/wagmi'
257
- *
258
- * const config = createConfig({
259
- * chains: [tempoModerato],
260
- * connectors: [dangerous_secp256k1()],
261
- * transports: { [tempoModerato.id]: http() },
262
- * })
263
- * ```
264
- */
265
- export function dangerous_secp256k1(options = {}) {
266
- const { icon, name, privateKey, rdns, ...rest } = options;
267
- return setup({
268
- ...rest,
269
- adapter: dangerous_secp256k1_adapter({ icon, name, privateKey, rdns }),
270
- });
271
- }
272
- //# sourceMappingURL=Connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Connector.js","sourceRoot":"","sources":["../../src/wagmi/Connector.ts"],"names":[],"mappings":"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"}
@@ -1,330 +0,0 @@
1
- import { ChainNotConfiguredError, type Connector, createConnector } from '@wagmi/core'
2
- import {
3
- type Address,
4
- numberToHex,
5
- type RpcError,
6
- SwitchChainError,
7
- UserRejectedRequestError,
8
- } from 'viem'
9
- import * as z from 'zod/mini'
10
-
11
- import { dangerous_secp256k1 as dangerous_secp256k1_adapter } from '../core/adapters/dangerous_secp256k1.js'
12
- import { dialog as core_dialog } from '../core/adapters/dialog.js'
13
- import { webAuthn as webAuthn_adapter } from '../core/adapters/webAuthn.js'
14
- import * as Provider from '../core/Provider.js'
15
- import * as Rpc from '../core/zod/rpc.js'
16
-
17
- /**
18
- * Creates a wagmi connector backed by an accounts provider.
19
- */
20
- export function setup(parameters: setup.Parameters = {} as setup.Parameters) {
21
- type Properties = {
22
- connect<withCapabilities extends boolean = false>(parameters?: {
23
- capabilities?:
24
- | NonNullable<z.output<typeof Rpc.wallet_connect.capabilities.request>>
25
- | undefined
26
- chainId?: number | undefined
27
- isReconnecting?: boolean | undefined
28
- withCapabilities?: withCapabilities | boolean | undefined
29
- }): Promise<{
30
- accounts: withCapabilities extends true
31
- ? readonly {
32
- address: Address
33
- capabilities: z.output<typeof Rpc.wallet_connect.capabilities.result>
34
- }[]
35
- : readonly Address[]
36
- chainId: number
37
- }>
38
- }
39
- return createConnector<Provider.Provider, Properties>((wagmiConfig) => {
40
- const chains = wagmiConfig.chains
41
-
42
- let provider: Provider.Provider | undefined
43
-
44
- let accountsChanged: Connector['onAccountsChanged'] | undefined
45
- let chainChanged: Connector['onChainChanged'] | undefined
46
- let connect: Connector['onConnect'] | undefined
47
- let disconnect: Connector['onDisconnect'] | undefined
48
-
49
- return {
50
- async connect(params: Parameters<Properties['connect']>[0] = {}) {
51
- const { chainId, isReconnecting, withCapabilities } = params
52
- const capabilities = 'capabilities' in params ? params.capabilities : undefined
53
-
54
- let accounts: readonly { address: Address; capabilities: Record<string, unknown> }[] = []
55
- let currentChainId: number | undefined
56
-
57
- if (isReconnecting)
58
- accounts = await this.getAccounts()
59
- .then((accounts) => accounts.map((address) => ({ address, capabilities: {} })))
60
- .catch(() => [])
61
-
62
- const provider = (await this.getProvider()) as Provider.create.ReturnType
63
-
64
- try {
65
- if (!accounts?.length && !isReconnecting) {
66
- const res = await provider.request({
67
- method: 'wallet_connect',
68
- params: [
69
- {
70
- ...(chainId ? { chainId } : {}),
71
- ...(capabilities
72
- ? {
73
- capabilities: z.encode(
74
- Rpc.wallet_connect.capabilities.request,
75
- capabilities,
76
- ),
77
- }
78
- : {}),
79
- },
80
- ] as never,
81
- })
82
- accounts = res.accounts
83
- }
84
-
85
- currentChainId ??= await this.getChainId()
86
- if (!currentChainId) throw new ChainNotConfiguredError()
87
-
88
- if (connect) {
89
- provider.removeListener('connect', connect)
90
- connect = undefined
91
- }
92
- if (!accountsChanged) {
93
- accountsChanged = this.onAccountsChanged.bind(this)
94
- provider.on('accountsChanged', accountsChanged as never)
95
- }
96
- if (!chainChanged) {
97
- chainChanged = this.onChainChanged.bind(this)
98
- provider.on('chainChanged', chainChanged!)
99
- }
100
- if (!disconnect) {
101
- disconnect = this.onDisconnect.bind(this)
102
- provider.on('disconnect', disconnect!)
103
- }
104
-
105
- return {
106
- accounts: (withCapabilities ? accounts : accounts.map((a) => a.address)) as never,
107
- chainId: currentChainId,
108
- }
109
- } catch (err) {
110
- const error = err as RpcError
111
- if (error.code === UserRejectedRequestError.code)
112
- throw new UserRejectedRequestError(error)
113
- throw error
114
- }
115
- },
116
- async disconnect() {
117
- const provider = (await this.getProvider()) as Provider.create.ReturnType
118
-
119
- if (chainChanged) {
120
- provider.removeListener('chainChanged', chainChanged)
121
- chainChanged = undefined
122
- }
123
- if (disconnect) {
124
- provider.removeListener('disconnect', disconnect)
125
- disconnect = undefined
126
- }
127
- if (!connect) {
128
- connect = this.onConnect?.bind(this)
129
- if (connect) provider.on('connect', connect as never)
130
- }
131
-
132
- await provider.request({ method: 'wallet_disconnect' })
133
- },
134
- async getAccounts() {
135
- const provider = (await this.getProvider()) as Provider.create.ReturnType
136
- return provider.request({ method: 'eth_accounts' })
137
- },
138
- async getChainId() {
139
- const provider = (await this.getProvider()) as Provider.create.ReturnType
140
- const hexChainId = await provider.request({ method: 'eth_chainId' })
141
- return Number(hexChainId)
142
- },
143
- async getProvider() {
144
- provider ??= Provider.create({
145
- ...parameters,
146
- chains: chains as never,
147
- })
148
- return provider as never
149
- },
150
- icon: parameters.adapter?.icon,
151
- id: parameters.adapter?.rdns ?? 'com.example',
152
- async isAuthorized() {
153
- try {
154
- const accounts = await this.getAccounts()
155
- return !!accounts.length
156
- } catch {
157
- return false
158
- }
159
- },
160
- name: parameters.adapter?.name ?? 'Accounts',
161
- async onAccountsChanged(accounts) {
162
- wagmiConfig.emitter.emit('change', {
163
- accounts: accounts as readonly Address[],
164
- })
165
- },
166
- onChainChanged(chain) {
167
- const chainId = Number(chain)
168
- wagmiConfig.emitter.emit('change', { chainId })
169
- },
170
- async onConnect(connectInfo) {
171
- const accounts = await this.getAccounts()
172
- if (accounts.length === 0) return
173
-
174
- const chainId = Number(connectInfo.chainId)
175
- wagmiConfig.emitter.emit('connect', { accounts, chainId })
176
-
177
- const provider = (await this.getProvider()) as Provider.create.ReturnType
178
- if (connect) {
179
- provider.removeListener('connect', connect)
180
- connect = undefined
181
- }
182
- if (!accountsChanged) {
183
- accountsChanged = this.onAccountsChanged.bind(this)
184
- provider.on('accountsChanged', accountsChanged as never)
185
- }
186
- if (!chainChanged) {
187
- chainChanged = this.onChainChanged.bind(this)
188
- provider.on('chainChanged', chainChanged!)
189
- }
190
- if (!disconnect) {
191
- disconnect = this.onDisconnect.bind(this)
192
- provider.on('disconnect', disconnect!)
193
- }
194
- },
195
- async onDisconnect(_error) {
196
- const provider = (await this.getProvider()) as Provider.create.ReturnType
197
-
198
- wagmiConfig.emitter.emit('disconnect')
199
-
200
- if (chainChanged) {
201
- provider.removeListener('chainChanged', chainChanged)
202
- chainChanged = undefined
203
- }
204
- if (disconnect) {
205
- provider.removeListener('disconnect', disconnect)
206
- disconnect = undefined
207
- }
208
- if (!connect) {
209
- connect = this.onConnect?.bind(this)
210
- if (connect) provider.on('connect', connect as never)
211
- }
212
- },
213
- async setup() {
214
- if (!connect) {
215
- const provider = (await this.getProvider()) as Provider.create.ReturnType
216
- connect = this.onConnect?.bind(this)
217
- if (connect) provider.on('connect', connect as never)
218
- }
219
- },
220
- async switchChain({ chainId }) {
221
- const chain = chains.find((x) => x.id === chainId)
222
- if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())
223
-
224
- const provider = (await this.getProvider()) as Provider.create.ReturnType
225
- await provider.request({
226
- method: 'wallet_switchEthereumChain',
227
- params: [{ chainId: numberToHex(chainId) }],
228
- })
229
-
230
- return chain
231
- },
232
- type: 'injected',
233
- }
234
- })
235
- }
236
-
237
- export declare namespace setup {
238
- type Parameters = Provider.create.Options
239
- }
240
-
241
- /**
242
- * Creates a wagmi connector backed by a WebAuthn adapter.
243
- *
244
- * @example
245
- * ```ts
246
- * import { createConfig, http } from 'wagmi'
247
- * import { tempoModerato } from 'wagmi/chains'
248
- * import { webAuthn } from 'accounts/wagmi'
249
- *
250
- * const config = createConfig({
251
- * chains: [tempoModerato],
252
- * connectors: [webAuthn()],
253
- * transports: { [tempoModerato.id]: http() },
254
- * })
255
- * ```
256
- */
257
- export function webAuthn(options: webAuthn.Options = {}) {
258
- const { authUrl, ceremony, icon, name, rdns, ...rest } = options
259
- const adapter = ceremony
260
- ? webAuthn_adapter({ ceremony, icon, name, rdns })
261
- : webAuthn_adapter({ authUrl, icon, name, rdns })
262
-
263
- return setup({
264
- ...rest,
265
- adapter,
266
- })
267
- }
268
-
269
- export declare namespace webAuthn {
270
- type Options = webAuthn_adapter.Options & Omit<setup.Parameters, 'adapter'>
271
- }
272
-
273
- /**
274
- * Creates a wagmi connector backed by a dialog adapter.
275
- *
276
- * @example
277
- * ```ts
278
- * import { createConfig, http } from 'wagmi'
279
- * import { tempoModerato } from 'wagmi/chains'
280
- * import { dialog } from 'accounts/wagmi'
281
- *
282
- * const config = createConfig({
283
- * chains: [tempoModerato],
284
- * connectors: [dialog()],
285
- * transports: { [tempoModerato.id]: http() },
286
- * })
287
- * ```
288
- */
289
- export function dialog(options: dialog.Options = {}) {
290
- const { dialog: dialogOption, host, icon, name, rdns, ...rest } = options
291
- return setup({
292
- ...rest,
293
- adapter: core_dialog({ dialog: dialogOption, host, icon, name, rdns }),
294
- })
295
- }
296
-
297
- export declare namespace dialog {
298
- type Options = core_dialog.Options & Omit<setup.Parameters, 'adapter'>
299
- }
300
-
301
- /**
302
- * Creates a wagmi connector backed by a secp256k1 adapter.
303
- *
304
- * @deprecated Private keys are stored in plaintext via the provider's storage adapter.
305
- * Use only for development, testing, or when the threat model allows it.
306
- *
307
- * @example
308
- * ```ts
309
- * import { createConfig, http } from 'wagmi'
310
- * import { tempoModerato } from 'wagmi/chains'
311
- * import { dangerous_secp256k1 } from 'accounts/wagmi'
312
- *
313
- * const config = createConfig({
314
- * chains: [tempoModerato],
315
- * connectors: [dangerous_secp256k1()],
316
- * transports: { [tempoModerato.id]: http() },
317
- * })
318
- * ```
319
- */
320
- export function dangerous_secp256k1(options: dangerous_secp256k1.Options = {}) {
321
- const { icon, name, privateKey, rdns, ...rest } = options
322
- return setup({
323
- ...rest,
324
- adapter: dangerous_secp256k1_adapter({ icon, name, privateKey, rdns }),
325
- })
326
- }
327
-
328
- export declare namespace dangerous_secp256k1 {
329
- type Options = dangerous_secp256k1_adapter.Options & Omit<setup.Parameters, 'adapter'>
330
- }