@meshconnect/uwc-injected-connector 0.15.0 → 0.15.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.
- package/dist/bridge-poll.d.ts +2 -0
- package/dist/bridge-poll.d.ts.map +1 -0
- package/dist/bridge-poll.js +21 -0
- package/dist/bridge-poll.js.map +1 -0
- package/dist/eip6963-discovery.d.ts.map +1 -1
- package/dist/eip6963-discovery.js +6 -2
- package/dist/eip6963-discovery.js.map +1 -1
- package/dist/services/connection-manager.d.ts.map +1 -1
- package/dist/services/connection-manager.js +48 -4
- package/dist/services/connection-manager.js.map +1 -1
- package/dist/ton-discovery.d.ts.map +1 -1
- package/dist/ton-discovery.js +5 -2
- package/dist/ton-discovery.js.map +1 -1
- package/dist/tron-discovery.d.ts +1 -2
- package/dist/tron-discovery.d.ts.map +1 -1
- package/dist/tron-discovery.js +15 -14
- package/dist/tron-discovery.js.map +1 -1
- package/dist/wallet-standard-discovery.d.ts.map +1 -1
- package/dist/wallet-standard-discovery.js +7 -2
- package/dist/wallet-standard-discovery.js.map +1 -1
- package/package.json +6 -6
- package/src/bridge-poll.ts +22 -0
- package/src/eip6963-discovery.test.ts +2 -2
- package/src/eip6963-discovery.ts +6 -2
- package/src/services/connection-manager.test.ts +98 -1
- package/src/services/connection-manager.ts +60 -7
- package/src/signSolanaTransactionBytes.test.ts +4 -1
- package/src/ton-discovery.test.ts +41 -7
- package/src/ton-discovery.ts +5 -2
- package/src/tron-discovery.test.ts +28 -5
- package/src/tron-discovery.ts +17 -13
- package/src/wallet-standard-discovery.ts +7 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-poll.d.ts","sourceRoot":"","sources":["../src/bridge-poll.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,qBAAqB,QAAyB,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MAX_POLL_MS } from '@meshconnect/uwc-bridge-child';
|
|
2
|
+
/**
|
|
3
|
+
* Consumer-side budget for the bridge wallet poll
|
|
4
|
+
* (pollForBridgeWallets in eip6963/wallet-standard/tron/ton-discovery.ts).
|
|
5
|
+
*
|
|
6
|
+
* Derived as the bridge child's own budget (MAX_POLL_MS) plus a grace margin, so
|
|
7
|
+
* the invariant "consumer budget > child budget" is enforced by construction
|
|
8
|
+
* rather than by a comment. Why it must hold:
|
|
9
|
+
* - The child writes window.{tron,ton}Wallets — real wallets, or [] via its
|
|
10
|
+
* fillEmptyDefaults backstop — up to its own MAX_POLL_MS deadline.
|
|
11
|
+
* - Consumer-side wallet detection is ONE-SHOT: UniversalWalletConnector runs
|
|
12
|
+
* it once at construction, and connectTron later reads the cached result. A
|
|
13
|
+
* missed wallet there throws "tron provider was not detected" until reload.
|
|
14
|
+
* - A wallet that becomes ready on the child's LAST tick is written a few ms
|
|
15
|
+
* AFTER MAX_POLL_MS (the marshal is a Comlink round-trip). The grace covers
|
|
16
|
+
* that tail, so an equal deadline can't let the consumer resolve [] on the
|
|
17
|
+
* same tick and cache it.
|
|
18
|
+
*/
|
|
19
|
+
const GRACE_MS = 300;
|
|
20
|
+
export const BRIDGE_WALLET_POLL_MS = MAX_POLL_MS + GRACE_MS;
|
|
21
|
+
//# sourceMappingURL=bridge-poll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-poll.js","sourceRoot":"","sources":["../src/bridge-poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,QAAQ,GAAG,GAAG,CAAA;AAEpB,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,GAAG,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip6963-discovery.d.ts","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"eip6963-discovery.d.ts","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAI5D,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE/D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAC5E;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IAGvD,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE9D,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAI1E,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,KAAK;IACxD,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AA0CD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAqDjE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CAAC,cAAc,EAAE,CAAC,CAkD3B"}
|
|
@@ -3,13 +3,17 @@
|
|
|
3
3
|
* https://eips.ethereum.org/EIPS/eip-6963
|
|
4
4
|
*/
|
|
5
5
|
import { v4 as uuid } from 'uuid';
|
|
6
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll';
|
|
6
7
|
/**
|
|
7
8
|
* Polls for bridge wallets when UWCBridgeInitialized is true
|
|
8
9
|
* @returns Promise that resolves to an array of detected wallets from the bridge
|
|
9
10
|
*/
|
|
10
11
|
async function pollForBridgeWallets() {
|
|
11
|
-
const pollInterval =
|
|
12
|
-
|
|
12
|
+
const pollInterval = 50; // Poll every 50ms
|
|
13
|
+
// Consumer budget — see BRIDGE_WALLET_POLL_MS for rationale (couples this
|
|
14
|
+
// to the bridge child's MAX_POLL_MS + grace so we don't resolve `[]` while
|
|
15
|
+
// the child is still marshalling).
|
|
16
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS;
|
|
13
17
|
const startTime = Date.now();
|
|
14
18
|
return new Promise(resolve => {
|
|
15
19
|
const poll = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip6963-discovery.js","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"eip6963-discovery.js","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/services/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/services/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAiD3D,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,gBAAgB,CAAsB;gBAGpC,eAAe,EAAE,qBAAqB,EACtC,aAAa,EAAE,mBAAmB,EAClC,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,gBAAgB;IAGtC;;OAEG;IACG,wBAAwB,CAC5B,eAAe,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,EACrD,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,kBAAkB,EAAE,gBAAgB,EAAE,CAAA;KACvC,CAAC;IAyJF;;OAEG;YACW,4BAA4B;IAkD1C;;OAEG;YACW,0BAA0B;IAmDxC;;OAEG;YACW,wBAAwB;IA0CtC;;;;OAIG;YACW,uBAAuB;IAgCrC;;;OAGG;YACW,kCAAkC;IAmBhD;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAgDjC;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IA2C3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IA8C3B;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAyC3B;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAuC3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,mBAAmB,CAAC;IAgF/B;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAInD;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAgBlC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
|
|
@@ -3,6 +3,43 @@ import { SolanaWalletService } from './solana/solana-wallet-service';
|
|
|
3
3
|
import { TronWalletService } from './tron/tron-wallet-service';
|
|
4
4
|
import { TonWalletService } from './ton/ton-wallet-service';
|
|
5
5
|
import { parseError } from '../utils/error-utils';
|
|
6
|
+
/**
|
|
7
|
+
* True when running inside an iframe (`window.top !== window.self`). The
|
|
8
|
+
* try/catch is a safety net for sandboxed/restricted frames where evaluating
|
|
9
|
+
* that can throw — any such error is treated as "framed".
|
|
10
|
+
*/
|
|
11
|
+
function isFramedEmbed() {
|
|
12
|
+
try {
|
|
13
|
+
return typeof window !== 'undefined' && window.top !== window.self;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** The UWC bridge populates these `window` arrays with top-frame provider
|
|
20
|
+
* proxies. An absent/empty list means no bridged provider is available for that
|
|
21
|
+
* namespace, so a connect would fall to the iframe-local provider. */
|
|
22
|
+
function bridgedListEmpty(key) {
|
|
23
|
+
if (typeof window === 'undefined')
|
|
24
|
+
return true;
|
|
25
|
+
const list = window[key];
|
|
26
|
+
return !Array.isArray(list) || list.length === 0;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Whether to skip an EAGER cross-namespace `connect()` for a SECONDARY namespace
|
|
30
|
+
* (the ONC-3429 gather). Inside an iframe, an injected wallet's connect prompt is
|
|
31
|
+
* frame-position-gated (e.g. Trust Wallet → `dapp.frames-disallowed`). The
|
|
32
|
+
* non-gating path is the UWC bridge, which exposes top-frame providers via the
|
|
33
|
+
* `window.*Wallets` lists. So skip the eager connect only when we are framed AND
|
|
34
|
+
* the bridge has not populated that namespace's list — meaning the connect would
|
|
35
|
+
* hit the gating iframe-local provider. When the list is populated the connect
|
|
36
|
+
* routes to the top frame and is safe; in the top frame (extension) we never
|
|
37
|
+
* skip, preserving the eager gather. The TARGET namespace is connected via its
|
|
38
|
+
* own path in `connectToNamespace` and is unaffected.
|
|
39
|
+
*/
|
|
40
|
+
function skipFramedSecondaryConnect(bridgeKey) {
|
|
41
|
+
return isFramedEmbed() && bridgedListEmpty(bridgeKey);
|
|
42
|
+
}
|
|
6
43
|
export class ConnectionManager {
|
|
7
44
|
ethereumService;
|
|
8
45
|
solanaService;
|
|
@@ -139,7 +176,9 @@ export class ConnectionManager {
|
|
|
139
176
|
const accounts = await this.ethereumService.checkExistingConnection(ethWallet.provider);
|
|
140
177
|
const ethAddress = accounts && accounts.length > 0
|
|
141
178
|
? accounts[0]
|
|
142
|
-
:
|
|
179
|
+
: skipFramedSecondaryConnect('eip6963Wallets')
|
|
180
|
+
? undefined
|
|
181
|
+
: await this.ethereumService.connect(ethWallet.provider);
|
|
143
182
|
if (ethAddress) {
|
|
144
183
|
ethAccount = ethAddress;
|
|
145
184
|
this.ethereumService.setConnectionState(ethWallet.provider, ethAddress);
|
|
@@ -171,7 +210,9 @@ export class ConnectionManager {
|
|
|
171
210
|
if (solanaWallet?.adapter) {
|
|
172
211
|
try {
|
|
173
212
|
const solanaAddress = (await this.solanaService.checkExistingConnection(solanaWallet.adapter, solanaWalletUuid)) ||
|
|
174
|
-
(
|
|
213
|
+
(skipFramedSecondaryConnect('walletStandardWallets')
|
|
214
|
+
? undefined
|
|
215
|
+
: await this.solanaService.connect(solanaWallet.adapter, solanaWalletUuid));
|
|
175
216
|
if (solanaAddress) {
|
|
176
217
|
solanaAccount = solanaAddress;
|
|
177
218
|
this.solanaService.setConnectionState(solanaWallet.adapter, solanaAddress, solanaWalletUuid);
|
|
@@ -201,7 +242,10 @@ export class ConnectionManager {
|
|
|
201
242
|
const tronWallet = this.tronService.findWalletByUuid(tronWalletUuid);
|
|
202
243
|
if (tronWallet?.provider) {
|
|
203
244
|
try {
|
|
204
|
-
const address = (await this.tronService.checkExistingConnection(tronWallet.provider)) ||
|
|
245
|
+
const address = (await this.tronService.checkExistingConnection(tronWallet.provider)) ||
|
|
246
|
+
(skipFramedSecondaryConnect('tronWallets')
|
|
247
|
+
? undefined
|
|
248
|
+
: await this.tronService.connect(tronWallet.provider));
|
|
205
249
|
if (address) {
|
|
206
250
|
tronAccount = address;
|
|
207
251
|
this.tronService.setConnectionState(tronWallet.provider, address);
|
|
@@ -231,7 +275,7 @@ export class ConnectionManager {
|
|
|
231
275
|
}
|
|
232
276
|
if (!tonAccount) {
|
|
233
277
|
const jsBridgeKey = provider.namespaceMetaData?.tvm?.detectedWallet?.jsBridgeKey;
|
|
234
|
-
if (jsBridgeKey) {
|
|
278
|
+
if (jsBridgeKey && !skipFramedSecondaryConnect('tonWallets')) {
|
|
235
279
|
try {
|
|
236
280
|
const result = await this.tonService.connect(jsBridgeKey);
|
|
237
281
|
tonAccount = result.address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/services/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/services/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton-discovery.d.ts","sourceRoot":"","sources":["../src/ton-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ton-discovery.d.ts","sourceRoot":"","sources":["../src/ton-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,UAAU,gBAAgB;IACxB,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACtE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAiFD,wBAAsB,aAAa,CACjC,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B"}
|
package/dist/ton-discovery.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* window[jsBridgeKey].tonconnect. Unlike EVM (EIP-6963), there is no
|
|
7
7
|
* announcement event — we check known keys from wallet config.
|
|
8
8
|
*/
|
|
9
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll';
|
|
9
10
|
function isTonConnectBridge(value) {
|
|
10
11
|
if (!value || typeof value !== 'object')
|
|
11
12
|
return false;
|
|
@@ -47,8 +48,10 @@ function discoverTonProviders(jsBridgeKeys) {
|
|
|
47
48
|
return wallets;
|
|
48
49
|
}
|
|
49
50
|
async function pollForBridgeTonWallets() {
|
|
50
|
-
const pollInterval =
|
|
51
|
-
|
|
51
|
+
const pollInterval = 50;
|
|
52
|
+
// Consumer poll budget — see BRIDGE_WALLET_POLL_MS for rationale + the
|
|
53
|
+
// must-exceed-child-budget invariant. Ceiling, not a fixed wait.
|
|
54
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS;
|
|
52
55
|
const startTime = Date.now();
|
|
53
56
|
return new Promise(resolve => {
|
|
54
57
|
const poll = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton-discovery.js","sourceRoot":"","sources":["../src/ton-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"ton-discovery.js","sourceRoot":"","sources":["../src/ton-discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/tron-discovery.d.ts
CHANGED
|
@@ -58,8 +58,7 @@ export interface DetectedTronWallet {
|
|
|
58
58
|
/**
|
|
59
59
|
* Discovers Tron wallets by checking known injection paths on the window object.
|
|
60
60
|
* When running inside an iframe with the UWC bridge, checks for bridge-proxied
|
|
61
|
-
* wallets first. Otherwise
|
|
62
|
-
* inject their provider lazily.
|
|
61
|
+
* wallets first. Otherwise checks injected providers on the window object.
|
|
63
62
|
*/
|
|
64
63
|
export declare function getTronWallets(expectedWallets?: WalletMetadata[]): Promise<DetectedTronWallet[]>;
|
|
65
64
|
//# sourceMappingURL=tron-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron-discovery.d.ts","sourceRoot":"","sources":["../src/tron-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"tron-discovery.d.ts","sourceRoot":"","sources":["../src/tron-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,MAAM,WAAW,OAAO;IACtB,cAAc,CAAC,EAAE;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;QACvB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;KACrB,CAAA;IACD,kEAAkE;IAClE,iBAAiB,CAAC,IAAI,OAAO,CAAC;QAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;QACvB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;KACrB,CAAC,CAAA;IACF,GAAG,EAAE;QACH,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/C,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KACjE,CAAA;IACD,kBAAkB,EAAE;QAElB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/D,oBAAoB,CAClB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EAExB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAE5B,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,CAAC,EAC9C,aAAa,EAAE,MAAM,GAEpB,OAAO,CAAC;YAAE,WAAW,EAAE,GAAG,CAAC;YAAC,MAAM,EAAE;gBAAE,MAAM,EAAE,OAAO,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAC9D,CAAA;IACD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IAE9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACxE,OAAO,EAAE,OAAO,CAAA;IAEhB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,YAAY,CAAA;CACvB;AAiGD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyB/B"}
|
package/dist/tron-discovery.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Each provider has a `tronWeb` property containing the TronWeb API.
|
|
11
11
|
*/
|
|
12
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll';
|
|
12
13
|
/**
|
|
13
14
|
* Resolves a nested property on the window object using dot notation
|
|
14
15
|
*/
|
|
@@ -60,8 +61,12 @@ function discoverTronProviders(injectedIds) {
|
|
|
60
61
|
* Polls for bridge Tron wallets when UWCBridgeChildInitialized is true
|
|
61
62
|
*/
|
|
62
63
|
async function pollForBridgeTronWallets() {
|
|
63
|
-
const pollInterval =
|
|
64
|
-
|
|
64
|
+
const pollInterval = 50;
|
|
65
|
+
// Consumer poll budget — rationale + the must-exceed-child-budget invariant
|
|
66
|
+
// are documented on BRIDGE_WALLET_POLL_MS. The child resolves the array (real
|
|
67
|
+
// wallets or []) as soon as the parent answers, so this is a ceiling, not a
|
|
68
|
+
// fixed wait.
|
|
69
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS;
|
|
65
70
|
const startTime = Date.now();
|
|
66
71
|
return new Promise(resolve => {
|
|
67
72
|
const poll = () => {
|
|
@@ -86,28 +91,24 @@ async function pollForBridgeTronWallets() {
|
|
|
86
91
|
/**
|
|
87
92
|
* Discovers Tron wallets by checking known injection paths on the window object.
|
|
88
93
|
* When running inside an iframe with the UWC bridge, checks for bridge-proxied
|
|
89
|
-
* wallets first. Otherwise
|
|
90
|
-
* inject their provider lazily.
|
|
94
|
+
* wallets first. Otherwise checks injected providers on the window object.
|
|
91
95
|
*/
|
|
92
96
|
export async function getTronWallets(expectedWallets = []) {
|
|
93
97
|
try {
|
|
94
98
|
const injectedIds = expectedWallets
|
|
95
99
|
.map(w => w.extensionInjectedProvider?.namespaceMetaData?.tron?.injectedId)
|
|
96
100
|
.filter((id) => !!id);
|
|
97
|
-
// Check for bridge-proxied wallets first (iframe mode)
|
|
98
101
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
99
102
|
// @ts-ignore - window.UWCBridgeChildInitialized is set by the bridge
|
|
100
|
-
|
|
103
|
+
const bridgeMode = window.UWCBridgeChildInitialized === true;
|
|
104
|
+
// Check for bridge-proxied wallets first (iframe mode)
|
|
105
|
+
if (bridgeMode) {
|
|
101
106
|
const wallets = await pollForBridgeTronWallets();
|
|
102
|
-
|
|
103
|
-
return wallets;
|
|
104
|
-
}
|
|
107
|
+
return wallets.length > 0 ? wallets : [];
|
|
105
108
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
return [];
|
|
109
|
+
// Native discovery: check injected providers on the window object.
|
|
110
|
+
const wallets = discoverTronProviders(injectedIds);
|
|
111
|
+
return wallets;
|
|
111
112
|
}
|
|
112
113
|
catch {
|
|
113
114
|
// Return empty array if discovery fails
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron-discovery.js","sourceRoot":"","sources":["../src/tron-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"tron-discovery.js","sourceRoot":"","sources":["../src/tron-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-standard-discovery.d.ts","sourceRoot":"","sources":["../src/wallet-standard-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"wallet-standard-discovery.d.ts","sourceRoot":"","sources":["../src/wallet-standard-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGlD,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,eAAe,EAAE,CACb,2BAA2B,GAC3B,2BAA2B,GAC3B,+BAA+B,GAC/B,4BAA4B,CAC/B,EAAE,CAAA;IACH,yBAAyB,EAAE,CACzB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,MAAM,CAAC,CAAA;IACpB,yBAAyB,EAAE,CACzB,WAAW,EAAE,OAAO,KACjB,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,CAAA;IACjC,6BAA6B,EAAE,CAC7B,YAAY,EAAE,OAAO,EAAE,KACpB,OAAO,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC,CAAA;IAGnC,0BAA0B,EAAE,CAC1B,WAAW,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,MAAM,KACtB,OAAO,CAAC,UAAU,CAAC,CAAA;CACzB;AAED,MAAM,MAAM,aAAa,GACrB,6BAA6B,GAC7B,qBAAqB,CAAA;AAEzB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAA;CACnC;AAiDD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwCtE"}
|
|
@@ -6,13 +6,18 @@
|
|
|
6
6
|
import { getWallets } from '@wallet-standard/app';
|
|
7
7
|
import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base';
|
|
8
8
|
import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base';
|
|
9
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll';
|
|
9
10
|
/**
|
|
10
11
|
* Polls for bridge wallets when UWCBridgeInitialized is true
|
|
11
12
|
* @returns Promise that resolves to an array of detected wallets from the bridge
|
|
12
13
|
*/
|
|
13
14
|
async function pollForBridgeWallets() {
|
|
14
|
-
const pollInterval =
|
|
15
|
-
|
|
15
|
+
const pollInterval = 50; // Poll every 50ms
|
|
16
|
+
// Consumer budget — see BRIDGE_WALLET_POLL_MS for rationale. Even though
|
|
17
|
+
// Solana is published early by BridgeParent, a late-exposing parent can
|
|
18
|
+
// push the child's marshal past 500ms; that race silently cached Solana
|
|
19
|
+
// injected wallets as "not installed".
|
|
20
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS;
|
|
16
21
|
const startTime = Date.now();
|
|
17
22
|
return new Promise(resolve => {
|
|
18
23
|
const poll = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-standard-discovery.js","sourceRoot":"","sources":["../src/wallet-standard-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,uCAAuC,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;
|
|
1
|
+
{"version":3,"file":"wallet-standard-discovery.js","sourceRoot":"","sources":["../src/wallet-standard-discovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-injected-connector",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.2",
|
|
4
4
|
"description": "Injected connector for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"buffer": "^6.0.3",
|
|
28
28
|
"uuid": "^13.0.0",
|
|
29
29
|
"viem": "^2.44.4",
|
|
30
|
-
"@meshconnect/uwc-bridge-child": "0.2.
|
|
31
|
-
"@meshconnect/uwc-constants": "0.6.
|
|
32
|
-
"@meshconnect/uwc-ton-connector": "0.6.
|
|
33
|
-
"@meshconnect/uwc-tron-connector": "0.
|
|
34
|
-
"@meshconnect/uwc-types": "0.16.
|
|
30
|
+
"@meshconnect/uwc-bridge-child": "0.2.3",
|
|
31
|
+
"@meshconnect/uwc-constants": "0.6.7",
|
|
32
|
+
"@meshconnect/uwc-ton-connector": "0.6.6",
|
|
33
|
+
"@meshconnect/uwc-tron-connector": "0.3.0",
|
|
34
|
+
"@meshconnect/uwc-types": "0.16.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"typescript": "^5.9.3"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MAX_POLL_MS } from '@meshconnect/uwc-bridge-child'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Consumer-side budget for the bridge wallet poll
|
|
5
|
+
* (pollForBridgeWallets in eip6963/wallet-standard/tron/ton-discovery.ts).
|
|
6
|
+
*
|
|
7
|
+
* Derived as the bridge child's own budget (MAX_POLL_MS) plus a grace margin, so
|
|
8
|
+
* the invariant "consumer budget > child budget" is enforced by construction
|
|
9
|
+
* rather than by a comment. Why it must hold:
|
|
10
|
+
* - The child writes window.{tron,ton}Wallets — real wallets, or [] via its
|
|
11
|
+
* fillEmptyDefaults backstop — up to its own MAX_POLL_MS deadline.
|
|
12
|
+
* - Consumer-side wallet detection is ONE-SHOT: UniversalWalletConnector runs
|
|
13
|
+
* it once at construction, and connectTron later reads the cached result. A
|
|
14
|
+
* missed wallet there throws "tron provider was not detected" until reload.
|
|
15
|
+
* - A wallet that becomes ready on the child's LAST tick is written a few ms
|
|
16
|
+
* AFTER MAX_POLL_MS (the marshal is a Comlink round-trip). The grace covers
|
|
17
|
+
* that tail, so an equal deadline can't let the consumer resolve [] on the
|
|
18
|
+
* same tick and cache it.
|
|
19
|
+
*/
|
|
20
|
+
const GRACE_MS = 300
|
|
21
|
+
|
|
22
|
+
export const BRIDGE_WALLET_POLL_MS = MAX_POLL_MS + GRACE_MS
|
|
@@ -76,7 +76,7 @@ describe('EIP-6963 Discovery', () => {
|
|
|
76
76
|
const result = await discoverWallets()
|
|
77
77
|
|
|
78
78
|
expect(result).toEqual([])
|
|
79
|
-
})
|
|
79
|
+
}, 7000)
|
|
80
80
|
|
|
81
81
|
it('should handle invalid bridge wallets array', async () => {
|
|
82
82
|
mockWindow.UWCBridgeChildInitialized = true
|
|
@@ -85,7 +85,7 @@ describe('EIP-6963 Discovery', () => {
|
|
|
85
85
|
const result = await discoverWallets()
|
|
86
86
|
|
|
87
87
|
expect(result).toEqual([])
|
|
88
|
-
})
|
|
88
|
+
}, 7000)
|
|
89
89
|
})
|
|
90
90
|
|
|
91
91
|
describe('getAvailableWallets', () => {
|
package/src/eip6963-discovery.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import type { WalletMetadata } from '@meshconnect/uwc-types'
|
|
7
7
|
import { v4 as uuid } from 'uuid'
|
|
8
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll'
|
|
8
9
|
|
|
9
10
|
export interface EthereumProvider {
|
|
10
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -67,8 +68,11 @@ export interface DetectedWallet {
|
|
|
67
68
|
* @returns Promise that resolves to an array of detected wallets from the bridge
|
|
68
69
|
*/
|
|
69
70
|
async function pollForBridgeWallets(): Promise<DetectedWallet[]> {
|
|
70
|
-
const pollInterval =
|
|
71
|
-
|
|
71
|
+
const pollInterval = 50 // Poll every 50ms
|
|
72
|
+
// Consumer budget — see BRIDGE_WALLET_POLL_MS for rationale (couples this
|
|
73
|
+
// to the bridge child's MAX_POLL_MS + grace so we don't resolve `[]` while
|
|
74
|
+
// the child is still marshalling).
|
|
75
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS
|
|
72
76
|
const startTime = Date.now()
|
|
73
77
|
|
|
74
78
|
return new Promise(resolve => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
|
|
2
2
|
import type { ExtensionInjectedProvider, Network } from '@meshconnect/uwc-types'
|
|
3
3
|
import { ConnectionManager } from './connection-manager'
|
|
4
4
|
|
|
@@ -478,3 +478,100 @@ describe('ConnectionManager — cross-namespace error resilience (ONC-2696)', ()
|
|
|
478
478
|
expect(namespaces).not.toContain('eip155')
|
|
479
479
|
})
|
|
480
480
|
})
|
|
481
|
+
|
|
482
|
+
// ONC-3383: inside an iframe, an injected wallet's connect prompt is
|
|
483
|
+
// frame-position-gated (Trust Wallet → dapp.frames-disallowed). The eager
|
|
484
|
+
// cross-namespace gather must not fire a SECONDARY-namespace connect on the
|
|
485
|
+
// gating iframe-local provider — it may only do so when that namespace's bridge
|
|
486
|
+
// list is populated (the connect then routes to the top frame).
|
|
487
|
+
describe('ConnectionManager — iframe-safe cross-namespace gather (ONC-3383)', () => {
|
|
488
|
+
let ethService: ReturnType<typeof makeEthService>
|
|
489
|
+
let solanaService: ReturnType<typeof makeSolanaService>
|
|
490
|
+
let tronService: ReturnType<typeof makeTronService>
|
|
491
|
+
let tonService: ReturnType<typeof makeTonService>
|
|
492
|
+
let manager: ConnectionManager
|
|
493
|
+
|
|
494
|
+
beforeEach(() => {
|
|
495
|
+
ethService = makeEthService()
|
|
496
|
+
solanaService = makeSolanaService()
|
|
497
|
+
tronService = makeTronService()
|
|
498
|
+
tonService = makeTonService()
|
|
499
|
+
manager = new ConnectionManager(
|
|
500
|
+
ethService as any,
|
|
501
|
+
solanaService as any,
|
|
502
|
+
tronService as any,
|
|
503
|
+
tonService as any
|
|
504
|
+
)
|
|
505
|
+
// Simulate running inside an iframe: window.top !== window.self
|
|
506
|
+
Object.defineProperty(window, 'top', { value: {}, configurable: true })
|
|
507
|
+
})
|
|
508
|
+
|
|
509
|
+
afterEach(() => {
|
|
510
|
+
Object.defineProperty(window, 'top', { value: window, configurable: true })
|
|
511
|
+
const w = window as unknown as Record<string, unknown>
|
|
512
|
+
delete w['eip6963Wallets']
|
|
513
|
+
delete w['walletStandardWallets']
|
|
514
|
+
delete w['tronWallets']
|
|
515
|
+
delete w['tonWallets']
|
|
516
|
+
})
|
|
517
|
+
|
|
518
|
+
it('skips the eager EVM connect when framed and the bridge list is empty (avoids frames-disallowed prompt)', async () => {
|
|
519
|
+
solanaService.findWalletByUuid.mockReturnValue({ adapter: {} })
|
|
520
|
+
solanaService.connect.mockResolvedValue('SolAddr1')
|
|
521
|
+
|
|
522
|
+
// EVM detected but not already permitted; the bridge has NOT populated
|
|
523
|
+
// window.eip6963Wallets → resolving EVM would hit the gating local provider.
|
|
524
|
+
ethService.findWalletByUuid.mockReturnValue({ provider: {} })
|
|
525
|
+
ethService.checkExistingConnection.mockResolvedValue(null)
|
|
526
|
+
ethService.connect.mockResolvedValue('0xABC')
|
|
527
|
+
|
|
528
|
+
const provider = makeProvider({
|
|
529
|
+
eip155: { detectedWallet: { uuid: 'mm-eip155' } },
|
|
530
|
+
solana: { detectedWallet: { uuid: 'mm-solana' } }
|
|
531
|
+
})
|
|
532
|
+
|
|
533
|
+
const result = await manager.connectSolana(
|
|
534
|
+
makeNetwork('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', 'solana'),
|
|
535
|
+
provider
|
|
536
|
+
)
|
|
537
|
+
|
|
538
|
+
expect(result.address).toBe('SolAddr1')
|
|
539
|
+
// The eager EVM connect (eth_requestAccounts) must NOT fire in the iframe.
|
|
540
|
+
expect(ethService.connect).not.toHaveBeenCalled()
|
|
541
|
+
const namespaces = result.availableAddresses.map(
|
|
542
|
+
a => a.networkId.split(':')[0]
|
|
543
|
+
)
|
|
544
|
+
expect(namespaces).toContain('solana')
|
|
545
|
+
expect(namespaces).not.toContain('eip155')
|
|
546
|
+
})
|
|
547
|
+
|
|
548
|
+
it('still performs the eager EVM connect when framed but the bridge list is populated (routes via the top frame)', async () => {
|
|
549
|
+
solanaService.findWalletByUuid.mockReturnValue({ adapter: {} })
|
|
550
|
+
solanaService.connect.mockResolvedValue('SolAddr1')
|
|
551
|
+
|
|
552
|
+
ethService.findWalletByUuid.mockReturnValue({ provider: {} })
|
|
553
|
+
ethService.checkExistingConnection.mockResolvedValue(null)
|
|
554
|
+
ethService.connect.mockResolvedValue('0xABC')
|
|
555
|
+
|
|
556
|
+
// Bridge populated the EVM list → the connect routes to the top frame (safe).
|
|
557
|
+
;(window as unknown as Record<string, unknown>)['eip6963Wallets'] = [
|
|
558
|
+
{ uuid: 'trust', provider: {} }
|
|
559
|
+
]
|
|
560
|
+
|
|
561
|
+
const provider = makeProvider({
|
|
562
|
+
eip155: { detectedWallet: { uuid: 'mm-eip155' } },
|
|
563
|
+
solana: { detectedWallet: { uuid: 'mm-solana' } }
|
|
564
|
+
})
|
|
565
|
+
|
|
566
|
+
const result = await manager.connectSolana(
|
|
567
|
+
makeNetwork('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', 'solana'),
|
|
568
|
+
provider
|
|
569
|
+
)
|
|
570
|
+
|
|
571
|
+
expect(ethService.connect).toHaveBeenCalled()
|
|
572
|
+
const namespaces = result.availableAddresses.map(
|
|
573
|
+
a => a.networkId.split(':')[0]
|
|
574
|
+
)
|
|
575
|
+
expect(namespaces).toContain('eip155')
|
|
576
|
+
})
|
|
577
|
+
})
|
|
@@ -12,6 +12,52 @@ import { TronWalletService } from './tron/tron-wallet-service'
|
|
|
12
12
|
import { TonWalletService } from './ton/ton-wallet-service'
|
|
13
13
|
import { parseError } from '../utils/error-utils'
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* True when running inside an iframe (`window.top !== window.self`). The
|
|
17
|
+
* try/catch is a safety net for sandboxed/restricted frames where evaluating
|
|
18
|
+
* that can throw — any such error is treated as "framed".
|
|
19
|
+
*/
|
|
20
|
+
function isFramedEmbed(): boolean {
|
|
21
|
+
try {
|
|
22
|
+
return typeof window !== 'undefined' && window.top !== window.self
|
|
23
|
+
} catch {
|
|
24
|
+
return true
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** The UWC bridge populates these `window` arrays with top-frame provider
|
|
29
|
+
* proxies. An absent/empty list means no bridged provider is available for that
|
|
30
|
+
* namespace, so a connect would fall to the iframe-local provider. */
|
|
31
|
+
function bridgedListEmpty(
|
|
32
|
+
key: 'eip6963Wallets' | 'walletStandardWallets' | 'tronWallets' | 'tonWallets'
|
|
33
|
+
): boolean {
|
|
34
|
+
if (typeof window === 'undefined') return true
|
|
35
|
+
const list = (window as unknown as Record<string, unknown>)[key]
|
|
36
|
+
return !Array.isArray(list) || list.length === 0
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Whether to skip an EAGER cross-namespace `connect()` for a SECONDARY namespace
|
|
41
|
+
* (the ONC-3429 gather). Inside an iframe, an injected wallet's connect prompt is
|
|
42
|
+
* frame-position-gated (e.g. Trust Wallet → `dapp.frames-disallowed`). The
|
|
43
|
+
* non-gating path is the UWC bridge, which exposes top-frame providers via the
|
|
44
|
+
* `window.*Wallets` lists. So skip the eager connect only when we are framed AND
|
|
45
|
+
* the bridge has not populated that namespace's list — meaning the connect would
|
|
46
|
+
* hit the gating iframe-local provider. When the list is populated the connect
|
|
47
|
+
* routes to the top frame and is safe; in the top frame (extension) we never
|
|
48
|
+
* skip, preserving the eager gather. The TARGET namespace is connected via its
|
|
49
|
+
* own path in `connectToNamespace` and is unaffected.
|
|
50
|
+
*/
|
|
51
|
+
function skipFramedSecondaryConnect(
|
|
52
|
+
bridgeKey:
|
|
53
|
+
| 'eip6963Wallets'
|
|
54
|
+
| 'walletStandardWallets'
|
|
55
|
+
| 'tronWallets'
|
|
56
|
+
| 'tonWallets'
|
|
57
|
+
): boolean {
|
|
58
|
+
return isFramedEmbed() && bridgedListEmpty(bridgeKey)
|
|
59
|
+
}
|
|
60
|
+
|
|
15
61
|
export class ConnectionManager {
|
|
16
62
|
private currentNetworkId: string | null = null
|
|
17
63
|
|
|
@@ -209,7 +255,9 @@ export class ConnectionManager {
|
|
|
209
255
|
const ethAddress =
|
|
210
256
|
accounts && accounts.length > 0
|
|
211
257
|
? accounts[0]
|
|
212
|
-
:
|
|
258
|
+
: skipFramedSecondaryConnect('eip6963Wallets')
|
|
259
|
+
? undefined
|
|
260
|
+
: await this.ethereumService.connect(ethWallet.provider)
|
|
213
261
|
if (ethAddress) {
|
|
214
262
|
ethAccount = ethAddress
|
|
215
263
|
this.ethereumService.setConnectionState(
|
|
@@ -258,10 +306,12 @@ export class ConnectionManager {
|
|
|
258
306
|
solanaWallet.adapter,
|
|
259
307
|
solanaWalletUuid
|
|
260
308
|
)) ||
|
|
261
|
-
(
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
309
|
+
(skipFramedSecondaryConnect('walletStandardWallets')
|
|
310
|
+
? undefined
|
|
311
|
+
: await this.solanaService.connect(
|
|
312
|
+
solanaWallet.adapter,
|
|
313
|
+
solanaWalletUuid
|
|
314
|
+
))
|
|
265
315
|
if (solanaAddress) {
|
|
266
316
|
solanaAccount = solanaAddress
|
|
267
317
|
this.solanaService.setConnectionState(
|
|
@@ -307,7 +357,10 @@ export class ConnectionManager {
|
|
|
307
357
|
const address =
|
|
308
358
|
(await this.tronService.checkExistingConnection(
|
|
309
359
|
tronWallet.provider
|
|
310
|
-
)) ||
|
|
360
|
+
)) ||
|
|
361
|
+
(skipFramedSecondaryConnect('tronWallets')
|
|
362
|
+
? undefined
|
|
363
|
+
: await this.tronService.connect(tronWallet.provider))
|
|
311
364
|
if (address) {
|
|
312
365
|
tronAccount = address
|
|
313
366
|
this.tronService.setConnectionState(tronWallet.provider, address)
|
|
@@ -347,7 +400,7 @@ export class ConnectionManager {
|
|
|
347
400
|
if (!tonAccount) {
|
|
348
401
|
const jsBridgeKey =
|
|
349
402
|
provider.namespaceMetaData?.tvm?.detectedWallet?.jsBridgeKey
|
|
350
|
-
if (jsBridgeKey) {
|
|
403
|
+
if (jsBridgeKey && !skipFramedSecondaryConnect('tonWallets')) {
|
|
351
404
|
try {
|
|
352
405
|
const result = await this.tonService.connect(jsBridgeKey)
|
|
353
406
|
tonAccount = result.address
|
|
@@ -14,7 +14,10 @@ vi.mock('./services/tron/tron-wallet-service')
|
|
|
14
14
|
vi.mock('./services/connection-manager')
|
|
15
15
|
vi.mock('./services/signature-service')
|
|
16
16
|
vi.mock('./services/transaction-service')
|
|
17
|
-
vi.mock('@meshconnect/uwc-bridge-child', () => ({
|
|
17
|
+
vi.mock('@meshconnect/uwc-bridge-child', () => ({
|
|
18
|
+
BridgeChild: vi.fn(),
|
|
19
|
+
MAX_POLL_MS: 5000
|
|
20
|
+
}))
|
|
18
21
|
|
|
19
22
|
// SolanaWalletService needs fine-grained control — we mock at the module level
|
|
20
23
|
// and override getConnectedAdapter per test.
|
|
@@ -142,6 +142,7 @@ describe('getTonWallets / discoverTonProviders', () => {
|
|
|
142
142
|
describe('getTonWallets / bridge polling', () => {
|
|
143
143
|
beforeEach(() => {
|
|
144
144
|
vi.resetModules()
|
|
145
|
+
vi.useFakeTimers()
|
|
145
146
|
mockWindow.UWCBridgeChildInitialized = undefined
|
|
146
147
|
mockWindow.tonkeeper = undefined
|
|
147
148
|
mockWindow.mytonwallet = undefined
|
|
@@ -150,6 +151,7 @@ describe('getTonWallets / bridge polling', () => {
|
|
|
150
151
|
})
|
|
151
152
|
|
|
152
153
|
afterEach(() => {
|
|
154
|
+
vi.useRealTimers()
|
|
153
155
|
vi.restoreAllMocks()
|
|
154
156
|
})
|
|
155
157
|
|
|
@@ -185,10 +187,12 @@ describe('getTonWallets / bridge polling', () => {
|
|
|
185
187
|
// No tonWallets set — polling will time out
|
|
186
188
|
|
|
187
189
|
const { getTonWallets } = await import('./ton-discovery')
|
|
188
|
-
const
|
|
190
|
+
const resultPromise = getTonWallets([makeWalletMeta('tonkeeper')])
|
|
191
|
+
await vi.advanceTimersByTimeAsync(5400)
|
|
192
|
+
const wallets = await resultPromise
|
|
189
193
|
|
|
190
194
|
expect(wallets).toEqual([])
|
|
191
|
-
}
|
|
195
|
+
})
|
|
192
196
|
|
|
193
197
|
it('uses the in-frame (local) provider in bridge mode without waiting for the parent', async () => {
|
|
194
198
|
mockWindow.UWCBridgeChildInitialized = true
|
|
@@ -197,7 +201,9 @@ describe('getTonWallets / bridge polling', () => {
|
|
|
197
201
|
mockWindow.tonkeeper = { tonconnect: localBridge }
|
|
198
202
|
|
|
199
203
|
const { getTonWallets } = await import('./ton-discovery')
|
|
200
|
-
const
|
|
204
|
+
const resultPromise = getTonWallets([makeWalletMeta('tonkeeper')])
|
|
205
|
+
await vi.advanceTimersByTimeAsync(5400)
|
|
206
|
+
const wallets = await resultPromise
|
|
201
207
|
|
|
202
208
|
expect(wallets).toHaveLength(1)
|
|
203
209
|
expect(wallets[0].jsBridgeKey).toBe('tonkeeper')
|
|
@@ -253,18 +259,46 @@ describe('getTonWallets / bridge polling', () => {
|
|
|
253
259
|
}, 200)
|
|
254
260
|
|
|
255
261
|
const { getTonWallets } = await import('./ton-discovery')
|
|
256
|
-
const
|
|
262
|
+
const resultPromise = getTonWallets([makeWalletMeta('tonkeeper')])
|
|
263
|
+
await vi.advanceTimersByTimeAsync(400)
|
|
264
|
+
const wallets = await resultPromise
|
|
257
265
|
|
|
258
266
|
expect(wallets).toEqual([bridgeWallet])
|
|
259
|
-
}
|
|
267
|
+
})
|
|
260
268
|
|
|
261
269
|
it('handles invalid bridge wallets array', async () => {
|
|
262
270
|
mockWindow.UWCBridgeChildInitialized = true
|
|
263
271
|
mockWindow.tonWallets = 'not-an-array'
|
|
264
272
|
|
|
265
273
|
const { getTonWallets } = await import('./ton-discovery')
|
|
266
|
-
const
|
|
274
|
+
const resultPromise = getTonWallets([makeWalletMeta('tonkeeper')])
|
|
275
|
+
await vi.advanceTimersByTimeAsync(5400)
|
|
276
|
+
const wallets = await resultPromise
|
|
267
277
|
|
|
268
278
|
expect(wallets).toEqual([])
|
|
269
|
-
}
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
it('picks up a wallet the child writes inside the grace window (t≈5050ms)', async () => {
|
|
282
|
+
// The child can marshal on its final tick, writing window.tonWallets just
|
|
283
|
+
// after its own 5000ms budget. The consumer's BRIDGE_WALLET_POLL_MS (5300ms)
|
|
284
|
+
// grace must still observe it — an equal 5000ms deadline would miss it.
|
|
285
|
+
mockWindow.UWCBridgeChildInitialized = true
|
|
286
|
+
const bridgeWallet = {
|
|
287
|
+
uuid: 'ton-tonkeeper',
|
|
288
|
+
name: 'Tonkeeper',
|
|
289
|
+
icon: '',
|
|
290
|
+
jsBridgeKey: 'tonkeeper',
|
|
291
|
+
provider: makeBridge('Tonkeeper')
|
|
292
|
+
}
|
|
293
|
+
setTimeout(() => {
|
|
294
|
+
mockWindow.tonWallets = [bridgeWallet]
|
|
295
|
+
}, 5050)
|
|
296
|
+
|
|
297
|
+
const { getTonWallets } = await import('./ton-discovery')
|
|
298
|
+
const resultPromise = getTonWallets([makeWalletMeta('tonkeeper')])
|
|
299
|
+
await vi.advanceTimersByTimeAsync(5200)
|
|
300
|
+
const wallets = await resultPromise
|
|
301
|
+
|
|
302
|
+
expect(wallets).toEqual([bridgeWallet])
|
|
303
|
+
})
|
|
270
304
|
})
|
package/src/ton-discovery.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import type { WalletMetadata } from '@meshconnect/uwc-types'
|
|
11
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll'
|
|
11
12
|
|
|
12
13
|
interface TonConnectBridge {
|
|
13
14
|
deviceInfo: { platform: string; appName: string }
|
|
@@ -74,8 +75,10 @@ function discoverTonProviders(jsBridgeKeys: string[]): DetectedTonWallet[] {
|
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
async function pollForBridgeTonWallets(): Promise<DetectedTonWallet[]> {
|
|
77
|
-
const pollInterval =
|
|
78
|
-
|
|
78
|
+
const pollInterval = 50
|
|
79
|
+
// Consumer poll budget — see BRIDGE_WALLET_POLL_MS for rationale + the
|
|
80
|
+
// must-exceed-child-budget invariant. Ceiling, not a fixed wait.
|
|
81
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS
|
|
79
82
|
const startTime = Date.now()
|
|
80
83
|
|
|
81
84
|
return new Promise(resolve => {
|
|
@@ -236,8 +236,8 @@ describe('Tron Discovery', () => {
|
|
|
236
236
|
|
|
237
237
|
const resultPromise = getTronWallets()
|
|
238
238
|
|
|
239
|
-
// Fast-forward past the
|
|
240
|
-
await vi.advanceTimersByTimeAsync(
|
|
239
|
+
// Fast-forward past the bridge poll budget (BRIDGE_WALLET_POLL_MS = 5300ms)
|
|
240
|
+
await vi.advanceTimersByTimeAsync(5400)
|
|
241
241
|
|
|
242
242
|
const result = await resultPromise
|
|
243
243
|
|
|
@@ -251,7 +251,7 @@ describe('Tron Discovery', () => {
|
|
|
251
251
|
const { getTronWallets } = await import('./tron-discovery')
|
|
252
252
|
|
|
253
253
|
const resultPromise = getTronWallets()
|
|
254
|
-
await vi.advanceTimersByTimeAsync(
|
|
254
|
+
await vi.advanceTimersByTimeAsync(5400)
|
|
255
255
|
|
|
256
256
|
const result = await resultPromise
|
|
257
257
|
|
|
@@ -301,8 +301,8 @@ describe('Tron Discovery', () => {
|
|
|
301
301
|
|
|
302
302
|
const resultPromise = getTronWallets(createExpectedWallets(['tronLink']))
|
|
303
303
|
|
|
304
|
-
// Fast-forward past the
|
|
305
|
-
await vi.advanceTimersByTimeAsync(
|
|
304
|
+
// Fast-forward past the bridge poll budget (BRIDGE_WALLET_POLL_MS = 5300ms)
|
|
305
|
+
await vi.advanceTimersByTimeAsync(5400)
|
|
306
306
|
|
|
307
307
|
const result = await resultPromise
|
|
308
308
|
|
|
@@ -323,6 +323,29 @@ describe('Tron Discovery', () => {
|
|
|
323
323
|
expect(result[0].uuid).toBe('tron-tronlink')
|
|
324
324
|
expect(result[0].injectedId).toBe('tronLink')
|
|
325
325
|
})
|
|
326
|
+
|
|
327
|
+
it('picks up a wallet the child writes inside the grace window (t≈5050ms)', async () => {
|
|
328
|
+
// The child can marshal on its final tick, writing window.tronWallets just
|
|
329
|
+
// after its own 5000ms budget. The consumer's BRIDGE_WALLET_POLL_MS (5300ms)
|
|
330
|
+
// grace must still observe it — an equal 5000ms deadline would miss it.
|
|
331
|
+
mockWindow.UWCBridgeChildInitialized = true
|
|
332
|
+
const bridgeWallet = {
|
|
333
|
+
uuid: 'tron-tronlink',
|
|
334
|
+
name: 'tronLink',
|
|
335
|
+
injectedId: 'tronLink',
|
|
336
|
+
provider: createMockTronProvider()
|
|
337
|
+
}
|
|
338
|
+
setTimeout(() => {
|
|
339
|
+
mockWindow.tronWallets = [bridgeWallet]
|
|
340
|
+
}, 5050)
|
|
341
|
+
|
|
342
|
+
const { getTronWallets } = await import('./tron-discovery')
|
|
343
|
+
const resultPromise = getTronWallets()
|
|
344
|
+
await vi.advanceTimersByTimeAsync(5200)
|
|
345
|
+
const result = await resultPromise
|
|
346
|
+
|
|
347
|
+
expect(result).toEqual([bridgeWallet])
|
|
348
|
+
})
|
|
326
349
|
})
|
|
327
350
|
|
|
328
351
|
describe('error handling', () => {
|
package/src/tron-discovery.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import type { WalletMetadata } from '@meshconnect/uwc-types'
|
|
14
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll'
|
|
14
15
|
|
|
15
16
|
export interface TronWeb {
|
|
16
17
|
defaultAddress?: {
|
|
@@ -124,8 +125,12 @@ function discoverTronProviders(injectedIds: string[]): DetectedTronWallet[] {
|
|
|
124
125
|
* Polls for bridge Tron wallets when UWCBridgeChildInitialized is true
|
|
125
126
|
*/
|
|
126
127
|
async function pollForBridgeTronWallets(): Promise<DetectedTronWallet[]> {
|
|
127
|
-
const pollInterval =
|
|
128
|
-
|
|
128
|
+
const pollInterval = 50
|
|
129
|
+
// Consumer poll budget — rationale + the must-exceed-child-budget invariant
|
|
130
|
+
// are documented on BRIDGE_WALLET_POLL_MS. The child resolves the array (real
|
|
131
|
+
// wallets or []) as soon as the parent answers, so this is a ceiling, not a
|
|
132
|
+
// fixed wait.
|
|
133
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS
|
|
129
134
|
const startTime = Date.now()
|
|
130
135
|
|
|
131
136
|
return new Promise(resolve => {
|
|
@@ -155,8 +160,7 @@ async function pollForBridgeTronWallets(): Promise<DetectedTronWallet[]> {
|
|
|
155
160
|
/**
|
|
156
161
|
* Discovers Tron wallets by checking known injection paths on the window object.
|
|
157
162
|
* When running inside an iframe with the UWC bridge, checks for bridge-proxied
|
|
158
|
-
* wallets first. Otherwise
|
|
159
|
-
* inject their provider lazily.
|
|
163
|
+
* wallets first. Otherwise checks injected providers on the window object.
|
|
160
164
|
*/
|
|
161
165
|
export async function getTronWallets(
|
|
162
166
|
expectedWallets: WalletMetadata[] = []
|
|
@@ -168,19 +172,19 @@ export async function getTronWallets(
|
|
|
168
172
|
)
|
|
169
173
|
.filter((id): id is string => !!id)
|
|
170
174
|
|
|
171
|
-
// Check for bridge-proxied wallets first (iframe mode)
|
|
172
175
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
173
176
|
// @ts-ignore - window.UWCBridgeChildInitialized is set by the bridge
|
|
174
|
-
|
|
177
|
+
const bridgeMode = window.UWCBridgeChildInitialized === true
|
|
178
|
+
|
|
179
|
+
// Check for bridge-proxied wallets first (iframe mode)
|
|
180
|
+
if (bridgeMode) {
|
|
175
181
|
const wallets = await pollForBridgeTronWallets()
|
|
176
|
-
|
|
177
|
-
return wallets
|
|
178
|
-
}
|
|
179
|
-
} else {
|
|
180
|
-
// Native discovery: check injected providers on the window object, only if bridge parent is not initialized
|
|
181
|
-
return discoverTronProviders(injectedIds)
|
|
182
|
+
return wallets.length > 0 ? wallets : []
|
|
182
183
|
}
|
|
183
|
-
|
|
184
|
+
|
|
185
|
+
// Native discovery: check injected providers on the window object.
|
|
186
|
+
const wallets = discoverTronProviders(injectedIds)
|
|
187
|
+
return wallets
|
|
184
188
|
} catch {
|
|
185
189
|
// Return empty array if discovery fails
|
|
186
190
|
return []
|
|
@@ -9,6 +9,7 @@ import { getWallets } from '@wallet-standard/app'
|
|
|
9
9
|
import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base'
|
|
10
10
|
import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base'
|
|
11
11
|
import type { Transaction } from '@solana/web3.js'
|
|
12
|
+
import { BRIDGE_WALLET_POLL_MS } from './bridge-poll'
|
|
12
13
|
|
|
13
14
|
export interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
|
|
14
15
|
customFunctions: (
|
|
@@ -52,8 +53,12 @@ export interface WalletStandardInfo {
|
|
|
52
53
|
* @returns Promise that resolves to an array of detected wallets from the bridge
|
|
53
54
|
*/
|
|
54
55
|
async function pollForBridgeWallets(): Promise<WalletStandardInfo[]> {
|
|
55
|
-
const pollInterval =
|
|
56
|
-
|
|
56
|
+
const pollInterval = 50 // Poll every 50ms
|
|
57
|
+
// Consumer budget — see BRIDGE_WALLET_POLL_MS for rationale. Even though
|
|
58
|
+
// Solana is published early by BridgeParent, a late-exposing parent can
|
|
59
|
+
// push the child's marshal past 500ms; that race silently cached Solana
|
|
60
|
+
// injected wallets as "not installed".
|
|
61
|
+
const maxPollTime = BRIDGE_WALLET_POLL_MS
|
|
57
62
|
const startTime = Date.now()
|
|
58
63
|
|
|
59
64
|
return new Promise(resolve => {
|