accounts 0.15.3 → 0.15.5
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/CHANGELOG.md +12 -0
- package/dist/core/Client.d.ts +1 -1
- package/dist/core/Client.d.ts.map +1 -1
- package/dist/core/Client.js +30 -10
- package/dist/core/Client.js.map +1 -1
- package/dist/react/privy.d.ts.map +1 -1
- package/dist/react/privy.js +7 -5
- package/dist/react/privy.js.map +1 -1
- package/package.json +2 -2
- package/src/core/Client.test.ts +35 -19
- package/src/core/Client.ts +36 -11
- package/src/core/Provider.test.ts +16 -0
- package/src/react/privy.ts +9 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# accounts
|
|
2
2
|
|
|
3
|
+
## 0.15.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 77a68ab: Fixed the Privy React adapter to select embedded wallets and continue when an embedded wallet is available before Privy reports wallet readiness.
|
|
8
|
+
|
|
9
|
+
## 0.15.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 0a39059: Fixed MPP clients routing chain RPCs through the active chain instead of the requested chain.
|
|
14
|
+
|
|
3
15
|
## 0.15.3
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/core/Client.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare namespace fromChainId {
|
|
|
15
15
|
/** Signing precedence. @default 'fee-payer-first' */
|
|
16
16
|
precedence?: 'fee-payer-first' | 'user-first' | undefined;
|
|
17
17
|
} | undefined;
|
|
18
|
-
/** Provider
|
|
18
|
+
/** Provider for account operations and active-chain requests. Explicit-chain RPCs use the matching transport. */
|
|
19
19
|
provider?: ox_Provider.Provider | undefined;
|
|
20
20
|
/** Reactive state store. */
|
|
21
21
|
store: Store.Store;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,IAAI,WAAW,EAAE,MAAM,IAAI,CAAA;AACjD,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,MAAM,EAGX,KAAK,SAAS,EACf,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAKxC,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,WAAW,CAAC,OAAO,GAC3B,MAAM,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,IAAI,WAAW,EAAE,MAAM,IAAI,CAAA;AACjD,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,MAAM,EAGX,KAAK,SAAS,EACf,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAKxC,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,WAAW,CAAC,OAAO,GAC3B,MAAM,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC,CAuCjC;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,KAAK,OAAO,GAAG;QACb,wBAAwB;QACxB,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;QACpC,mFAAmF;QACnF,QAAQ,CAAC,EACL,MAAM,GACN,KAAK,GACL;YACE,6BAA6B;YAC7B,GAAG,EAAE,MAAM,CAAA;YACX,qDAAqD;YACrD,UAAU,CAAC,EAAE,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAA;SAC1D,GACD,SAAS,CAAA;QACb,iHAAiH;QACjH,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAA;QAC3C,4BAA4B;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAA;QAClB,qHAAqH;QACrH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;KACnD,CAAA;CACF"}
|
package/dist/core/Client.js
CHANGED
|
@@ -22,11 +22,6 @@ export function fromChainId(chainId, options) {
|
|
|
22
22
|
})();
|
|
23
23
|
const id = chainId ?? store.getState().chainId;
|
|
24
24
|
const key = `${id}:${provider ? 'p' : ''}:${feePayerOption === false ? 'no-fp' : (feePayerUrl ?? '')}:${precedence}`;
|
|
25
|
-
// Scope the cache by `provider` (preferred) or `transports`, falling back
|
|
26
|
-
// to a shared module-level map. The cache key only encodes a boolean for
|
|
27
|
-
// `provider`, so without scoping, two providers sharing the same chainId
|
|
28
|
-
// would hit each other's cached clients and route requests to the wrong
|
|
29
|
-
// adapter via `providerTransport`.
|
|
30
25
|
const scope = provider ?? transports;
|
|
31
26
|
const cache = (() => {
|
|
32
27
|
if (!scope)
|
|
@@ -42,7 +37,9 @@ export function fromChainId(chainId, options) {
|
|
|
42
37
|
if (!client) {
|
|
43
38
|
const chain = chains.find((c) => c.id === id) ?? chains[0];
|
|
44
39
|
const base = transports?.[id] ?? http();
|
|
45
|
-
const transport_base = provider
|
|
40
|
+
const transport_base = provider
|
|
41
|
+
? providerTransport(provider, base, chainId === undefined ? undefined : chain.id)
|
|
42
|
+
: base;
|
|
46
43
|
const transport = feePayerUrl
|
|
47
44
|
? feePayerTransport(transport_base, feePayerUrl, precedence)
|
|
48
45
|
: transport_base;
|
|
@@ -52,23 +49,46 @@ export function fromChainId(chainId, options) {
|
|
|
52
49
|
return client;
|
|
53
50
|
}
|
|
54
51
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
52
|
+
* Routes account operations through the provider and explicit-chain RPCs
|
|
53
|
+
* through the requested chain's transport.
|
|
57
54
|
*/
|
|
58
|
-
function providerTransport(provider, base) {
|
|
55
|
+
function providerTransport(provider, base, chainId) {
|
|
59
56
|
return (params) => {
|
|
60
57
|
const baseTransport = base(params);
|
|
61
58
|
return {
|
|
62
59
|
...baseTransport,
|
|
63
60
|
async request({ method, params: reqParams }) {
|
|
61
|
+
if (chainId !== undefined && !usesProvider(method))
|
|
62
|
+
return baseTransport.request({ method, params: reqParams });
|
|
63
|
+
const params = (() => {
|
|
64
|
+
if (method !== 'eth_fillTransaction' || chainId === undefined)
|
|
65
|
+
return reqParams;
|
|
66
|
+
const request = reqParams?.[0];
|
|
67
|
+
if (!request || typeof request !== 'object')
|
|
68
|
+
return reqParams;
|
|
69
|
+
return [{ ...request, chainId }];
|
|
70
|
+
})();
|
|
64
71
|
return provider.request({
|
|
65
72
|
method,
|
|
66
|
-
params
|
|
73
|
+
params,
|
|
67
74
|
});
|
|
68
75
|
},
|
|
69
76
|
};
|
|
70
77
|
};
|
|
71
78
|
}
|
|
79
|
+
function usesProvider(method) {
|
|
80
|
+
return (method.startsWith('wallet_') ||
|
|
81
|
+
[
|
|
82
|
+
'eth_accounts',
|
|
83
|
+
'eth_fillTransaction',
|
|
84
|
+
'eth_requestAccounts',
|
|
85
|
+
'eth_sendTransaction',
|
|
86
|
+
'eth_sendTransactionSync',
|
|
87
|
+
'eth_signTransaction',
|
|
88
|
+
'eth_signTypedData_v4',
|
|
89
|
+
'personal_sign',
|
|
90
|
+
].includes(method));
|
|
91
|
+
}
|
|
72
92
|
/**
|
|
73
93
|
* Resolves a fee payer URL to an absolute URL string. Relative paths (e.g.
|
|
74
94
|
* `/relay`) are resolved against `window.location.origin` when running in a
|
package/dist/core/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,IAAI,CAAA;AACjD,OAAO,EAEL,YAAY,EAGZ,IAAI,GAEL,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAKxC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;AAChD,MAAM,OAAO,GAAG,IAAI,OAAO,EAA+B,CAAA;AAE1D,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CACzB,OAA2B,EAC3B,OAA4B;IAE5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IACjF,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;QACxB,IAAI,cAAc,KAAK,KAAK;YAAE,OAAO,SAAS,CAAA;QAC9C,IAAI,OAAO,cAAc,KAAK,QAAQ;YAAE,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAA;QACnF,IAAI,cAAc,EAAE,GAAG;YAAE,OAAO,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACxE,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,EAAE,CAAA;IACJ,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;QACvB,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI;YAC/D,OAAO,cAAc,CAAC,UAAU,IAAI,iBAAiB,CAAA;QACvD,OAAO,iBAAiB,CAAA;IAC1B,CAAC,CAAC,EAAE,CAAA;IACJ,MAAM,EAAE,GAAG,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAA;IAC9C,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,UAAU,EAAE,CAAA;IACpH,
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privy.d.ts","sourceRoot":"","sources":["../../src/react/privy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAGlD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY,GAAG,OAAO,CAAC,OAAO,CAMlE;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,SAgFlC;
|
|
1
|
+
{"version":3,"file":"privy.d.ts","sourceRoot":"","sources":["../../src/react/privy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAGlD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY,GAAG,OAAO,CAAC,OAAO,CAMlE;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,SAgFlC;AAwKD,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,iCAAiC;IACjC,KAAK,OAAO,GAAG;QACb,6DAA6D;QAC7D,IAAI,CAAC,EAAE,cAAc,MAAM,EAAE,GAAG,SAAS,CAAA;QACzC,qDAAqD;QACrD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,kDAAkD;QAClD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC1B,CAAA;CACF"}
|
package/dist/react/privy.js
CHANGED
|
@@ -70,12 +70,12 @@ export function PrivyAccountsBridge() {
|
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
72
|
login_started.current = false;
|
|
73
|
-
|
|
73
|
+
const embedded = wallets.wallets.filter(isEmbeddedEthereumWallet);
|
|
74
|
+
if (!wallets.ready && embedded.length === 0)
|
|
74
75
|
return;
|
|
75
76
|
loading.current = true;
|
|
76
77
|
void (async () => {
|
|
77
78
|
try {
|
|
78
|
-
const embedded = wallets.wallets.filter(isEmbeddedEthereumWallet);
|
|
79
79
|
if (embedded.length === 0)
|
|
80
80
|
throw new Error('Privy React returned no embedded Ethereum wallet.');
|
|
81
81
|
resolvePrivyAccounts(embedded.map((wallet) => wallet.address));
|
|
@@ -151,7 +151,7 @@ function setPrivyReactState(next) {
|
|
|
151
151
|
state = next;
|
|
152
152
|
if (next.ready)
|
|
153
153
|
emitReady();
|
|
154
|
-
if (next.ready && next.walletsReady)
|
|
154
|
+
if (next.ready && (next.walletsReady || next.wallets.length > 0))
|
|
155
155
|
emitWalletsReady();
|
|
156
156
|
}
|
|
157
157
|
function usePrivyAccountsRequest() {
|
|
@@ -198,7 +198,9 @@ function getSnapshot() {
|
|
|
198
198
|
return request;
|
|
199
199
|
}
|
|
200
200
|
function isEmbeddedEthereumWallet(wallet) {
|
|
201
|
-
return wallet.type === 'ethereum' &&
|
|
201
|
+
return (wallet.type === 'ethereum' &&
|
|
202
|
+
wallet.walletClientType === 'privy' &&
|
|
203
|
+
wallet.connectorType === 'embedded');
|
|
202
204
|
}
|
|
203
205
|
function sameAddress(a, b) {
|
|
204
206
|
return a.toLowerCase() === b.toLowerCase();
|
|
@@ -214,7 +216,7 @@ function waitForReady() {
|
|
|
214
216
|
}
|
|
215
217
|
async function waitForWallets() {
|
|
216
218
|
await waitForReady();
|
|
217
|
-
if (state.walletsReady)
|
|
219
|
+
if (state.walletsReady || state.wallets.length > 0)
|
|
218
220
|
return;
|
|
219
221
|
return new Promise((resolve) => wallets_ready_listeners.add(resolve));
|
|
220
222
|
}
|
package/dist/react/privy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privy.js","sourceRoot":"","sources":["../../src/react/privy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"privy.js","sourceRoot":"","sources":["../../src/react/privy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/core/Client.test.ts
CHANGED
|
@@ -87,12 +87,12 @@ describe('caching', () => {
|
|
|
87
87
|
chains: [tempoModerato, tempo],
|
|
88
88
|
storage: Storage.memory(),
|
|
89
89
|
})
|
|
90
|
-
const client_a = Client.fromChainId(
|
|
90
|
+
const client_a = Client.fromChainId(undefined, {
|
|
91
91
|
chains: [tempo, tempoModerato],
|
|
92
92
|
provider: provider_a,
|
|
93
93
|
store,
|
|
94
94
|
})
|
|
95
|
-
const client_b = Client.fromChainId(
|
|
95
|
+
const client_b = Client.fromChainId(undefined, {
|
|
96
96
|
chains: [tempo, tempoModerato],
|
|
97
97
|
provider: provider_b,
|
|
98
98
|
store,
|
|
@@ -203,35 +203,51 @@ describe('caching', () => {
|
|
|
203
203
|
})
|
|
204
204
|
|
|
205
205
|
describe('providerTransport', () => {
|
|
206
|
-
test('
|
|
206
|
+
test('behavior: returns empty accounts before connecting', async () => {
|
|
207
207
|
const store = setup()
|
|
208
208
|
const provider = Provider.create({
|
|
209
209
|
adapter: secp256k1(),
|
|
210
|
-
chains: [
|
|
210
|
+
chains: [tempo],
|
|
211
211
|
storage: Storage.memory(),
|
|
212
212
|
})
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
const client = Client.fromChainId(tempo.id, { chains: [tempo], provider, store })
|
|
214
|
+
const result = await client.request({ method: 'eth_accounts' })
|
|
215
|
+
expect(result).toMatchInlineSnapshot(`[]`)
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
test('behavior: fills transactions on the requested chain', async () => {
|
|
219
|
+
const requests: unknown[] = []
|
|
220
|
+
const store = setup()
|
|
221
|
+
const provider = {
|
|
222
|
+
async request(request: unknown) {
|
|
223
|
+
requests.push(request)
|
|
224
|
+
return {}
|
|
225
|
+
},
|
|
226
|
+
} as never
|
|
216
227
|
const client = Client.fromChainId(tempo.id, {
|
|
217
228
|
chains: [tempo, tempoModerato],
|
|
218
229
|
provider,
|
|
219
230
|
store,
|
|
220
231
|
})
|
|
221
|
-
const result = await client.request({ method: 'eth_chainId' })
|
|
222
|
-
expect(result).toMatchInlineSnapshot(`"0xa5bf"`)
|
|
223
|
-
})
|
|
224
232
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
adapter: secp256k1(),
|
|
229
|
-
chains: [tempo],
|
|
230
|
-
storage: Storage.memory(),
|
|
233
|
+
await client.request({
|
|
234
|
+
method: 'eth_fillTransaction' as never,
|
|
235
|
+
params: [{ to: '0x0000000000000000000000000000000000000001' }] as never,
|
|
231
236
|
})
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
237
|
+
|
|
238
|
+
expect(requests).toMatchInlineSnapshot(`
|
|
239
|
+
[
|
|
240
|
+
{
|
|
241
|
+
"method": "eth_fillTransaction",
|
|
242
|
+
"params": [
|
|
243
|
+
{
|
|
244
|
+
"chainId": 4217,
|
|
245
|
+
"to": "0x0000000000000000000000000000000000000001",
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
},
|
|
249
|
+
]
|
|
250
|
+
`)
|
|
235
251
|
})
|
|
236
252
|
})
|
|
237
253
|
|
package/src/core/Client.ts
CHANGED
|
@@ -34,11 +34,6 @@ export function fromChainId(
|
|
|
34
34
|
})()
|
|
35
35
|
const id = chainId ?? store.getState().chainId
|
|
36
36
|
const key = `${id}:${provider ? 'p' : ''}:${feePayerOption === false ? 'no-fp' : (feePayerUrl ?? '')}:${precedence}`
|
|
37
|
-
// Scope the cache by `provider` (preferred) or `transports`, falling back
|
|
38
|
-
// to a shared module-level map. The cache key only encodes a boolean for
|
|
39
|
-
// `provider`, so without scoping, two providers sharing the same chainId
|
|
40
|
-
// would hit each other's cached clients and route requests to the wrong
|
|
41
|
-
// adapter via `providerTransport`.
|
|
42
37
|
const scope = provider ?? transports
|
|
43
38
|
const cache = (() => {
|
|
44
39
|
if (!scope) return defaultClients
|
|
@@ -53,7 +48,9 @@ export function fromChainId(
|
|
|
53
48
|
if (!client) {
|
|
54
49
|
const chain = chains.find((c) => c.id === id) ?? chains[0]!
|
|
55
50
|
const base = transports?.[id] ?? http()
|
|
56
|
-
const transport_base = provider
|
|
51
|
+
const transport_base = provider
|
|
52
|
+
? providerTransport(provider, base, chainId === undefined ? undefined : chain.id)
|
|
53
|
+
: base
|
|
57
54
|
const transport = feePayerUrl
|
|
58
55
|
? feePayerTransport(transport_base, feePayerUrl, precedence)
|
|
59
56
|
: transport_base
|
|
@@ -78,7 +75,7 @@ export declare namespace fromChainId {
|
|
|
78
75
|
precedence?: 'fee-payer-first' | 'user-first' | undefined
|
|
79
76
|
}
|
|
80
77
|
| undefined
|
|
81
|
-
/** Provider
|
|
78
|
+
/** Provider for account operations and active-chain requests. Explicit-chain RPCs use the matching transport. */
|
|
82
79
|
provider?: ox_Provider.Provider | undefined
|
|
83
80
|
/** Reactive state store. */
|
|
84
81
|
store: Store.Store
|
|
@@ -88,24 +85,52 @@ export declare namespace fromChainId {
|
|
|
88
85
|
}
|
|
89
86
|
|
|
90
87
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
88
|
+
* Routes account operations through the provider and explicit-chain RPCs
|
|
89
|
+
* through the requested chain's transport.
|
|
93
90
|
*/
|
|
94
|
-
function providerTransport(
|
|
91
|
+
function providerTransport(
|
|
92
|
+
provider: ox_Provider.Provider,
|
|
93
|
+
base: Transport,
|
|
94
|
+
chainId: number | undefined,
|
|
95
|
+
): Transport {
|
|
95
96
|
return (params) => {
|
|
96
97
|
const baseTransport = base(params)
|
|
97
98
|
return {
|
|
98
99
|
...baseTransport,
|
|
99
100
|
async request({ method, params: reqParams }) {
|
|
101
|
+
if (chainId !== undefined && !usesProvider(method))
|
|
102
|
+
return baseTransport.request({ method, params: reqParams } as never)
|
|
103
|
+
const params = (() => {
|
|
104
|
+
if (method !== 'eth_fillTransaction' || chainId === undefined) return reqParams
|
|
105
|
+
const request = (reqParams as readonly unknown[] | undefined)?.[0]
|
|
106
|
+
if (!request || typeof request !== 'object') return reqParams
|
|
107
|
+
return [{ ...request, chainId }]
|
|
108
|
+
})()
|
|
100
109
|
return (provider as { request: EIP1193RequestFn }).request({
|
|
101
110
|
method,
|
|
102
|
-
params
|
|
111
|
+
params,
|
|
103
112
|
} as any)
|
|
104
113
|
},
|
|
105
114
|
} as ReturnType<Transport>
|
|
106
115
|
}
|
|
107
116
|
}
|
|
108
117
|
|
|
118
|
+
function usesProvider(method: string) {
|
|
119
|
+
return (
|
|
120
|
+
method.startsWith('wallet_') ||
|
|
121
|
+
[
|
|
122
|
+
'eth_accounts',
|
|
123
|
+
'eth_fillTransaction',
|
|
124
|
+
'eth_requestAccounts',
|
|
125
|
+
'eth_sendTransaction',
|
|
126
|
+
'eth_sendTransactionSync',
|
|
127
|
+
'eth_signTransaction',
|
|
128
|
+
'eth_signTypedData_v4',
|
|
129
|
+
'personal_sign',
|
|
130
|
+
].includes(method)
|
|
131
|
+
)
|
|
132
|
+
}
|
|
133
|
+
|
|
109
134
|
/**
|
|
110
135
|
* Resolves a fee payer URL to an absolute URL string. Relative paths (e.g.
|
|
111
136
|
* `/relay`) are resolved against `window.location.origin` when running in a
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Hex } from 'ox'
|
|
2
|
+
import { custom } from 'viem'
|
|
2
3
|
import { createSiweMessage } from 'viem/siwe'
|
|
4
|
+
import { tempo, tempoModerato } from 'viem/tempo/chains'
|
|
3
5
|
import { afterEach, describe, expect, test, vi } from 'vp/test'
|
|
4
6
|
|
|
5
7
|
import { accounts, privateKeys } from '../../test/config.js'
|
|
@@ -36,6 +38,20 @@ describe('getMppxParameters', () => {
|
|
|
36
38
|
expect((client as { account?: unknown }).account).toBeUndefined()
|
|
37
39
|
})
|
|
38
40
|
|
|
41
|
+
test('behavior: routes chain RPCs to the requested chain', async () => {
|
|
42
|
+
const provider = Provider.create({
|
|
43
|
+
chains: [tempo, tempoModerato],
|
|
44
|
+
storage: Storage.memory(),
|
|
45
|
+
transports: {
|
|
46
|
+
[tempoModerato.id]: custom({ request: async () => '0xa5bf' }),
|
|
47
|
+
},
|
|
48
|
+
})
|
|
49
|
+
provider.store.setState({ accounts: [{ address }], activeAccount: 0 })
|
|
50
|
+
|
|
51
|
+
const client = await provider.getMppxParameters().getClient({ chainId: tempoModerato.id })
|
|
52
|
+
expect(await client.request({ method: 'eth_chainId' })).toBe('0xa5bf')
|
|
53
|
+
})
|
|
54
|
+
|
|
39
55
|
test('behavior: resolves existing access key for connected account', async () => {
|
|
40
56
|
const payer = accounts[0]!
|
|
41
57
|
const provider = Provider.create({ storage: Storage.memory() })
|
package/src/react/privy.ts
CHANGED
|
@@ -82,12 +82,12 @@ export function PrivyAccountsBridge() {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
login_started.current = false
|
|
85
|
-
|
|
85
|
+
const embedded = wallets.wallets.filter(isEmbeddedEthereumWallet)
|
|
86
|
+
if (!wallets.ready && embedded.length === 0) return
|
|
86
87
|
|
|
87
88
|
loading.current = true
|
|
88
89
|
void (async () => {
|
|
89
90
|
try {
|
|
90
|
-
const embedded = wallets.wallets.filter(isEmbeddedEthereumWallet)
|
|
91
91
|
if (embedded.length === 0)
|
|
92
92
|
throw new Error('Privy React returned no embedded Ethereum wallet.')
|
|
93
93
|
|
|
@@ -190,7 +190,7 @@ const client = {
|
|
|
190
190
|
function setPrivyReactState(next: PrivyReactState) {
|
|
191
191
|
state = next
|
|
192
192
|
if (next.ready) emitReady()
|
|
193
|
-
if (next.ready && next.walletsReady) emitWalletsReady()
|
|
193
|
+
if (next.ready && (next.walletsReady || next.wallets.length > 0)) emitWalletsReady()
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
function usePrivyAccountsRequest() {
|
|
@@ -242,7 +242,11 @@ function getSnapshot() {
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
function isEmbeddedEthereumWallet(wallet: ConnectedWallet) {
|
|
245
|
-
return
|
|
245
|
+
return (
|
|
246
|
+
wallet.type === 'ethereum' &&
|
|
247
|
+
wallet.walletClientType === 'privy' &&
|
|
248
|
+
wallet.connectorType === 'embedded'
|
|
249
|
+
)
|
|
246
250
|
}
|
|
247
251
|
|
|
248
252
|
function sameAddress(a: string, b: string) {
|
|
@@ -261,7 +265,7 @@ function waitForReady() {
|
|
|
261
265
|
|
|
262
266
|
async function waitForWallets() {
|
|
263
267
|
await waitForReady()
|
|
264
|
-
if (state.walletsReady) return
|
|
268
|
+
if (state.walletsReady || state.wallets.length > 0) return
|
|
265
269
|
return new Promise<void>((resolve) => wallets_ready_listeners.add(resolve))
|
|
266
270
|
}
|
|
267
271
|
|