@meshconnect/uwc-bridge-child 0.2.2 → 0.2.3-snapshot.8e3fd6b
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/BridgeChild.d.ts +11 -3
- package/dist/BridgeChild.d.ts.map +1 -1
- package/dist/BridgeChild.js +269 -150
- package/dist/BridgeChild.js.map +1 -1
- package/dist/BridgeChild.test.js +348 -7
- package/dist/BridgeChild.test.js.map +1 -1
- package/dist/bridge-timing.d.ts +22 -0
- package/dist/bridge-timing.d.ts.map +1 -0
- package/dist/bridge-timing.js +41 -0
- package/dist/bridge-timing.js.map +1 -0
- package/dist/bridge-timing.test.d.ts +2 -0
- package/dist/bridge-timing.test.d.ts.map +1 -0
- package/dist/bridge-timing.test.js +27 -0
- package/dist/bridge-timing.test.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/BridgeChild.test.ts +393 -7
- package/src/BridgeChild.ts +320 -196
- package/src/bridge-timing.test.ts +33 -0
- package/src/bridge-timing.ts +52 -0
- package/src/index.ts +3 -0
package/dist/BridgeChild.d.ts
CHANGED
|
@@ -2,14 +2,22 @@ export declare class BridgeChild {
|
|
|
2
2
|
private parentAPI?;
|
|
3
3
|
private tronInjectedIds;
|
|
4
4
|
private tonJsBridgeKeys;
|
|
5
|
-
private
|
|
6
|
-
private
|
|
5
|
+
private eip6963Done;
|
|
6
|
+
private solanaDone;
|
|
7
|
+
private tronDone;
|
|
8
|
+
private tonDone;
|
|
7
9
|
constructor(options?: {
|
|
8
10
|
tronInjectedIds?: string[];
|
|
9
11
|
tonJsBridgeKeys?: string[];
|
|
10
12
|
});
|
|
11
13
|
private initializeConnection;
|
|
14
|
+
private anyWindowWalletsAlreadySet;
|
|
15
|
+
private syncParentOrigin;
|
|
12
16
|
private pollForWallets;
|
|
13
|
-
private
|
|
17
|
+
private fillEmptyDefaults;
|
|
18
|
+
private tryMarshalEip6963;
|
|
19
|
+
private tryMarshalSolana;
|
|
20
|
+
private tryMarshalTron;
|
|
21
|
+
private tryMarshalTon;
|
|
14
22
|
}
|
|
15
23
|
//# sourceMappingURL=BridgeChild.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeChild.d.ts","sourceRoot":"","sources":["../src/BridgeChild.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BridgeChild.d.ts","sourceRoot":"","sources":["../src/BridgeChild.ts"],"names":[],"mappings":"AA2BA,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAC,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,eAAe,CAAU;IAGjC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,CAAC,EAAE;QACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;QAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAC3B;YAMa,oBAAoB;IA+BlC,OAAO,CAAC,0BAA0B;YAUpB,gBAAgB;IA0B9B,OAAO,CAAC,cAAc;IA0CtB,OAAO,CAAC,iBAAiB;YASX,iBAAiB;YA+BjB,gBAAgB;YAiChB,cAAc;YAsEd,aAAa;CAyG5B"}
|
package/dist/BridgeChild.js
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
// @ts-nocheck
|
|
3
3
|
import * as Comlink from 'comlink';
|
|
4
4
|
import { hasInFrameTonBridge } from './tonInFrameBridge';
|
|
5
|
+
import { MAX_POLL_MS, POLL_INTERVAL_MS, raceParentRead, BridgeReadTimeout } from './bridge-timing';
|
|
5
6
|
export class BridgeChild {
|
|
6
7
|
parentAPI;
|
|
7
8
|
tronInjectedIds;
|
|
8
9
|
tonJsBridgeKeys;
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
// Per-namespace completion flags so we only marshal each set once.
|
|
11
|
+
eip6963Done = false;
|
|
12
|
+
solanaDone = false;
|
|
13
|
+
tronDone = false;
|
|
14
|
+
tonDone = false;
|
|
11
15
|
constructor(options) {
|
|
12
16
|
this.tronInjectedIds = options?.tronInjectedIds ?? [];
|
|
13
17
|
this.tonJsBridgeKeys = options?.tonJsBridgeKeys ?? [];
|
|
@@ -18,180 +22,294 @@ export class BridgeChild {
|
|
|
18
22
|
return;
|
|
19
23
|
}
|
|
20
24
|
window.UWCBridgeChildInitialized = true;
|
|
25
|
+
// If another bootstrap already published at least one non-empty wallet
|
|
26
|
+
// array, skip everything. Matches the old BridgeChild semantics for
|
|
27
|
+
// embedded flows. Note: a previously-set empty array (`[]`, distinct from
|
|
28
|
+
// `undefined`) does NOT short-circuit us — another module saying "I
|
|
29
|
+
// couldn't find any EVM wallets" shouldn't prevent us from still
|
|
30
|
+
// discovering TON/Tron via the bridge.
|
|
31
|
+
if (this.anyWindowWalletsAlreadySet()) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
21
34
|
this.parentAPI = Comlink.wrap(Comlink.windowEndpoint(window.parent, self, '*'));
|
|
35
|
+
// Tron/TON discovery is driven from the poll loop (tryMarshalTron/Ton),
|
|
36
|
+
// which re-issues discoverTron/TonWallets every tick until the parent
|
|
37
|
+
// answers. A single eager trigger here would be silently lost if it raced
|
|
38
|
+
// the parent's Comlink.expose (Comlink calls hang, never reject).
|
|
39
|
+
// Fetch the parent origin concurrently for TON Connect manifest URL.
|
|
40
|
+
this.syncParentOrigin();
|
|
22
41
|
this.pollForWallets();
|
|
23
42
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
43
|
+
anyWindowWalletsAlreadySet() {
|
|
44
|
+
return Boolean((window.eip6963Wallets && window.eip6963Wallets.length > 0) ||
|
|
45
|
+
(window.walletStandardWallets &&
|
|
46
|
+
window.walletStandardWallets.length > 0) ||
|
|
47
|
+
(window.tronWallets && window.tronWallets.length > 0) ||
|
|
48
|
+
(window.tonWallets && window.tonWallets.length > 0));
|
|
49
|
+
}
|
|
50
|
+
async syncParentOrigin() {
|
|
51
|
+
// Same late-expose hazard as the wallet poll: a parentOrigin read posted
|
|
52
|
+
// before the parent's Comlink.expose hangs forever (the request message is
|
|
53
|
+
// dropped, so it never resolves even once the parent comes up). Retry with a
|
|
54
|
+
// per-read deadline until the parent answers or the poll budget elapses.
|
|
55
|
+
// A *resolved* read is final, not retried: the current BridgeParent sets
|
|
56
|
+
// parentOrigin to window.location.origin synchronously before expose, so a
|
|
57
|
+
// resolved value is always a real origin; a falsy resolve means an older
|
|
58
|
+
// parent without parentOrigin, where spinning the full budget is pointless.
|
|
27
59
|
const startTime = Date.now();
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
60
|
+
while (Date.now() - startTime <= MAX_POLL_MS) {
|
|
61
|
+
try {
|
|
62
|
+
const origin = await raceParentRead(this.parentAPI?.parentOrigin);
|
|
63
|
+
if (origin)
|
|
64
|
+
window.uwcParentOrigin = origin;
|
|
31
65
|
return;
|
|
32
66
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
67
|
+
catch (err) {
|
|
68
|
+
if (err instanceof BridgeReadTimeout) {
|
|
69
|
+
await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
// Older BridgeParent that throws on parentOrigin — ignore.
|
|
39
73
|
return;
|
|
40
74
|
}
|
|
41
|
-
|
|
42
|
-
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
pollForWallets() {
|
|
78
|
+
const startTime = Date.now();
|
|
79
|
+
const poll = async () => {
|
|
80
|
+
if (!this.parentAPI)
|
|
81
|
+
return;
|
|
82
|
+
if (Date.now() - startTime > MAX_POLL_MS) {
|
|
83
|
+
this.fillEmptyDefaults();
|
|
43
84
|
return;
|
|
44
85
|
}
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
86
|
+
// Run all four namespace marshals concurrently. Each short-circuits if
|
|
87
|
+
// already done or not yet ready, so the cost is a single
|
|
88
|
+
// `await ready` round-trip per pending namespace per tick.
|
|
89
|
+
await Promise.all([
|
|
90
|
+
this.tryMarshalEip6963(),
|
|
91
|
+
this.tryMarshalSolana(),
|
|
92
|
+
this.tryMarshalTron(),
|
|
93
|
+
this.tryMarshalTon()
|
|
94
|
+
]);
|
|
95
|
+
// Tron/TON have no early default: tryMarshal{Tron,Ton} writes the real
|
|
96
|
+
// wallets (or [] on a ready-with-empty / unsupported parent), and the
|
|
97
|
+
// MAX_POLL_MS fillEmptyDefaults backstop covers a parent that never
|
|
98
|
+
// reports ready. Writing [] earlier would race a still-pending discovery
|
|
99
|
+
// and make the consumer's one-shot poll miss a wallet that lands a tick
|
|
100
|
+
// later.
|
|
101
|
+
if (this.eip6963Done &&
|
|
102
|
+
this.solanaDone &&
|
|
103
|
+
this.tronDone &&
|
|
104
|
+
this.tonDone) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
setTimeout(poll, POLL_INTERVAL_MS);
|
|
62
108
|
};
|
|
63
|
-
//
|
|
109
|
+
// Kick off synchronously — no first-tick delay.
|
|
64
110
|
poll();
|
|
65
111
|
}
|
|
66
|
-
|
|
112
|
+
fillEmptyDefaults() {
|
|
113
|
+
if (window.eip6963Wallets === undefined)
|
|
114
|
+
window.eip6963Wallets = [];
|
|
115
|
+
if (window.walletStandardWallets === undefined) {
|
|
116
|
+
window.walletStandardWallets = [];
|
|
117
|
+
}
|
|
118
|
+
if (window.tronWallets === undefined)
|
|
119
|
+
window.tronWallets = [];
|
|
120
|
+
if (window.tonWallets === undefined)
|
|
121
|
+
window.tonWallets = [];
|
|
122
|
+
}
|
|
123
|
+
async tryMarshalEip6963() {
|
|
124
|
+
if (this.eip6963Done || !this.parentAPI)
|
|
125
|
+
return;
|
|
67
126
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
eip6963Wallets.push(wallet);
|
|
87
|
-
}
|
|
127
|
+
const ready = await raceParentRead(this.parentAPI.eip6963WalletsReady);
|
|
128
|
+
if (!ready)
|
|
129
|
+
return;
|
|
130
|
+
const len = await this.parentAPI.eip6963Wallets.length;
|
|
131
|
+
const wallets = [];
|
|
132
|
+
if (len > 0) {
|
|
133
|
+
const indices = Array.from({ length: len }, (_, i) => i);
|
|
134
|
+
const marshalled = await Promise.all(indices.map(async (i) => {
|
|
135
|
+
const entry = this.parentAPI.eip6963Wallets[i];
|
|
136
|
+
const [uuid, name, icon, rdns] = await Promise.all([
|
|
137
|
+
entry.uuid,
|
|
138
|
+
entry.name,
|
|
139
|
+
entry.icon,
|
|
140
|
+
entry.rdns
|
|
141
|
+
]);
|
|
142
|
+
return { uuid, name, icon, rdns, provider: entry.provider };
|
|
143
|
+
}));
|
|
144
|
+
wallets.push(...marshalled);
|
|
88
145
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
146
|
+
window.eip6963Wallets = wallets;
|
|
147
|
+
this.eip6963Done = true;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// retry on next tick
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async tryMarshalSolana() {
|
|
154
|
+
if (this.solanaDone || !this.parentAPI)
|
|
155
|
+
return;
|
|
156
|
+
try {
|
|
157
|
+
const ready = await raceParentRead(this.parentAPI.walletStandardWalletsReady);
|
|
158
|
+
if (!ready)
|
|
159
|
+
return;
|
|
160
|
+
const len = await this.parentAPI.walletStandardWallets.length;
|
|
161
|
+
const wallets = [];
|
|
162
|
+
if (len > 0) {
|
|
163
|
+
const indices = Array.from({ length: len }, (_, i) => i);
|
|
164
|
+
const marshalled = await Promise.all(indices.map(async (i) => {
|
|
165
|
+
const entry = this.parentAPI.walletStandardWallets[i];
|
|
166
|
+
const [uuid, name, chains, features] = await Promise.all([
|
|
167
|
+
entry.uuid,
|
|
168
|
+
entry.name,
|
|
169
|
+
entry.chains,
|
|
170
|
+
entry.features
|
|
171
|
+
]);
|
|
172
|
+
return { uuid, name, chains, features, adapter: entry.adapter };
|
|
173
|
+
}));
|
|
174
|
+
wallets.push(...marshalled);
|
|
103
175
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
176
|
+
window.walletStandardWallets = wallets;
|
|
177
|
+
this.solanaDone = true;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// retry on next tick
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async tryMarshalTron() {
|
|
184
|
+
if (this.tronDone || !this.parentAPI)
|
|
185
|
+
return;
|
|
186
|
+
// (Re-)ask the parent to run Tron discovery on every tick. A one-shot
|
|
187
|
+
// trigger is silently lost if posted before the parent's Comlink.expose (the
|
|
188
|
+
// request hangs, never rejects), so re-issuing mirrors EIP-6963's per-tick
|
|
189
|
+
// resilience. Comlink calls return a Promise and never throw synchronously,
|
|
190
|
+
// so an unsupported parent is handled by the tronWalletsReady read below (or
|
|
191
|
+
// the MAX_POLL_MS backstop) — not here. The try only guards a non-Comlink
|
|
192
|
+
// stub whose call throws synchronously.
|
|
193
|
+
// Each pre-expose reissue leaves one lightweight Comlink pending-listener
|
|
194
|
+
// Map entry (requestResponseMessage — not a DOM listener or MessageChannel
|
|
195
|
+
// port); bounded by the expose delay and GC'd. An in-flight guard is
|
|
196
|
+
// intentionally avoided: it would deadlock recovery, since a never-settling
|
|
197
|
+
// pre-expose call would block all subsequent re-issues.
|
|
198
|
+
//
|
|
199
|
+
// Fired in a detached async IIFE so that the await — needed to make the
|
|
200
|
+
// try/catch absorb both sync throws (test stubs) and async rejections —
|
|
201
|
+
// does not block this tick. A pre-expose hang sits inside the IIFE
|
|
202
|
+
// harmlessly until the parent comes up or GC reaps it.
|
|
203
|
+
void (async () => {
|
|
107
204
|
try {
|
|
108
|
-
|
|
109
|
-
await this.parentAPI?.discoverTronWallets?.(this.tronInjectedIds);
|
|
110
|
-
this.tronDiscoveryTriggered = true;
|
|
111
|
-
}
|
|
112
|
-
const tronReady = await this.parentAPI?.tronWalletsReady;
|
|
113
|
-
if (tronReady) {
|
|
114
|
-
const availableTronWallets = await this.parentAPI.tronWallets.length;
|
|
115
|
-
if (availableTronWallets > 0) {
|
|
116
|
-
for (let index = 0; index < availableTronWallets; index++) {
|
|
117
|
-
const wallet = {
|
|
118
|
-
uuid: await this.parentAPI.tronWallets[index].uuid,
|
|
119
|
-
name: await this.parentAPI.tronWallets[index].name,
|
|
120
|
-
injectedId: await this.parentAPI.tronWallets[index].injectedId,
|
|
121
|
-
provider: this.parentAPI.tronWallets[index].provider
|
|
122
|
-
};
|
|
123
|
-
tronWallets.push(wallet);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
205
|
+
await this.parentAPI.discoverTronWallets?.(this.tronInjectedIds);
|
|
127
206
|
}
|
|
128
207
|
catch {
|
|
129
|
-
//
|
|
130
|
-
tronWallets = [];
|
|
208
|
+
// absorb — the readiness read below governs the outcome
|
|
131
209
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const availableTonWallets = await this.parentAPI.tonWallets.length;
|
|
143
|
-
if (availableTonWallets > 0) {
|
|
144
|
-
for (let index = 0; index < availableTonWallets; index++) {
|
|
145
|
-
const wallet = {
|
|
146
|
-
uuid: await this.parentAPI.tonWallets[index].uuid,
|
|
147
|
-
name: await this.parentAPI.tonWallets[index].name,
|
|
148
|
-
icon: await this.parentAPI.tonWallets[index].icon,
|
|
149
|
-
jsBridgeKey: await this.parentAPI.tonWallets[index].jsBridgeKey,
|
|
150
|
-
provider: this.parentAPI.tonWallets[index].provider
|
|
151
|
-
};
|
|
152
|
-
tonWallets.push(wallet);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
210
|
+
})();
|
|
211
|
+
let ready;
|
|
212
|
+
try {
|
|
213
|
+
ready = await raceParentRead(this.parentAPI.tronWalletsReady);
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
// Read timed out → parent not live yet, retry next tick. Any other error
|
|
217
|
+
// (older parent throwing on the property) → no Tron support.
|
|
218
|
+
if (err instanceof BridgeReadTimeout) {
|
|
219
|
+
return;
|
|
156
220
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
221
|
+
window.tronWallets = [];
|
|
222
|
+
this.tronDone = true;
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (!ready)
|
|
226
|
+
return;
|
|
227
|
+
try {
|
|
228
|
+
const len = await this.parentAPI.tronWallets.length;
|
|
229
|
+
const wallets = [];
|
|
230
|
+
if (len > 0) {
|
|
231
|
+
const indices = Array.from({ length: len }, (_, i) => i);
|
|
232
|
+
const marshalled = await Promise.all(indices.map(async (i) => {
|
|
233
|
+
const entry = this.parentAPI.tronWallets[i];
|
|
234
|
+
const [uuid, name, injectedId] = await Promise.all([
|
|
235
|
+
entry.uuid,
|
|
236
|
+
entry.name,
|
|
237
|
+
entry.injectedId
|
|
238
|
+
]);
|
|
239
|
+
return { uuid, name, injectedId, provider: entry.provider };
|
|
240
|
+
}));
|
|
241
|
+
wallets.push(...marshalled);
|
|
160
242
|
}
|
|
161
|
-
|
|
243
|
+
window.tronWallets = wallets;
|
|
244
|
+
this.tronDone = true;
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
window.tronWallets = [];
|
|
248
|
+
this.tronDone = true;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async tryMarshalTon() {
|
|
252
|
+
if (this.tonDone || !this.parentAPI)
|
|
253
|
+
return;
|
|
254
|
+
// Re-issue discovery each tick — same expose-race resilience as Tron.
|
|
255
|
+
// See tryMarshalTron for the detached-IIFE rationale.
|
|
256
|
+
void (async () => {
|
|
162
257
|
try {
|
|
163
|
-
|
|
164
|
-
if (origin) {
|
|
165
|
-
window.uwcParentOrigin = origin;
|
|
166
|
-
}
|
|
258
|
+
await this.parentAPI.discoverTonWallets?.(this.tonJsBridgeKeys);
|
|
167
259
|
}
|
|
168
260
|
catch {
|
|
169
|
-
//
|
|
261
|
+
// absorb — the readiness read below governs the outcome
|
|
170
262
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
263
|
+
})();
|
|
264
|
+
let ready;
|
|
265
|
+
try {
|
|
266
|
+
ready = await raceParentRead(this.parentAPI.tonWalletsReady);
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
if (err instanceof BridgeReadTimeout)
|
|
270
|
+
return;
|
|
271
|
+
window.tonWallets = [];
|
|
272
|
+
this.tonDone = true;
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
if (!ready)
|
|
276
|
+
return;
|
|
277
|
+
try {
|
|
278
|
+
const len = await this.parentAPI.tonWallets.length;
|
|
279
|
+
const wallets = [];
|
|
280
|
+
if (len > 0) {
|
|
281
|
+
const indices = Array.from({ length: len }, (_, i) => i);
|
|
282
|
+
const marshalled = await Promise.all(indices.map(async (i) => {
|
|
283
|
+
const entry = this.parentAPI.tonWallets[i];
|
|
284
|
+
const [uuid, name, icon, jsBridgeKey] = await Promise.all([
|
|
285
|
+
entry.uuid,
|
|
286
|
+
entry.name,
|
|
287
|
+
entry.icon,
|
|
288
|
+
entry.jsBridgeKey
|
|
289
|
+
]);
|
|
290
|
+
return { uuid, name, icon, jsBridgeKey, provider: entry.provider };
|
|
291
|
+
}));
|
|
292
|
+
wallets.push(...marshalled);
|
|
293
|
+
}
|
|
294
|
+
window.tonWallets = wallets;
|
|
295
|
+
// Shim window[jsBridgeKey].tonconnect so @tonconnect/sdk finds the
|
|
296
|
+
// Comlink proxy. Static props must be sync, but Comlink returns
|
|
297
|
+
// Promises — so we prefetch them here in parallel.
|
|
298
|
+
await Promise.all(wallets.map(async (wallet) => {
|
|
182
299
|
if (!wallet.jsBridgeKey || !wallet.provider)
|
|
183
|
-
|
|
184
|
-
//
|
|
185
|
-
// iframe origin; shimming
|
|
300
|
+
return;
|
|
301
|
+
// Keep the real in-frame provider so connect() attributes to the
|
|
302
|
+
// iframe origin; shimming would attribute to the parent, which the
|
|
186
303
|
// wallet's manifest origin check rejects.
|
|
187
304
|
if (hasInFrameTonBridge(wallet.jsBridgeKey))
|
|
188
|
-
|
|
305
|
+
return;
|
|
189
306
|
const proxy = wallet.provider;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
307
|
+
const [deviceInfo, walletInfo, protocolVersion, isWalletBrowser] = await Promise.all([
|
|
308
|
+
proxy.deviceInfo,
|
|
309
|
+
proxy.walletInfo,
|
|
310
|
+
proxy.protocolVersion,
|
|
311
|
+
proxy.isWalletBrowser
|
|
312
|
+
]);
|
|
195
313
|
window[wallet.jsBridgeKey] = {
|
|
196
314
|
tonconnect: {
|
|
197
315
|
deviceInfo,
|
|
@@ -205,7 +323,6 @@ export class BridgeChild {
|
|
|
205
323
|
const proxiedCallback = Comlink.proxy(callback);
|
|
206
324
|
let unsubscribe = null;
|
|
207
325
|
const result = proxy.listen(proxiedCallback);
|
|
208
|
-
// Comlink returns a Promise; direct calls return the value
|
|
209
326
|
Promise.resolve(result).then((unsub) => {
|
|
210
327
|
unsubscribe = typeof unsub === 'function' ? unsub : () => { };
|
|
211
328
|
});
|
|
@@ -217,11 +334,13 @@ export class BridgeChild {
|
|
|
217
334
|
disconnect: () => proxy.disconnect?.()
|
|
218
335
|
}
|
|
219
336
|
};
|
|
220
|
-
}
|
|
221
|
-
|
|
337
|
+
}));
|
|
338
|
+
this.tonDone = true;
|
|
222
339
|
}
|
|
223
340
|
catch {
|
|
224
|
-
|
|
341
|
+
// Parent doesn't support TON — mark done with empty list.
|
|
342
|
+
window.tonWallets = [];
|
|
343
|
+
this.tonDone = true;
|
|
225
344
|
}
|
|
226
345
|
}
|
|
227
346
|
}
|
package/dist/BridgeChild.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeChild.js","sourceRoot":"","sources":["../src/BridgeChild.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BridgeChild.js","sourceRoot":"","sources":["../src/BridgeChild.ts"],"names":[],"mappings":"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"}
|