@meshconnect/uwc-injected-connector 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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;AAE5D,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;AA+ED,wBAAsB,aAAa,CACjC,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAwB9B"}
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;AAE5D,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;AA+ED,wBAAsB,aAAa,CACjC,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B"}
@@ -75,15 +75,17 @@ export async function getTonWallets(expectedWallets = []) {
75
75
  const jsBridgeKeys = expectedWallets
76
76
  .map(w => w.extensionInjectedProvider?.namespaceMetaData?.tvm?.jsBridgeKey)
77
77
  .filter((key) => !!key);
78
- // Bridge mode (in iframe): poll for bridge-proxied wallets
78
+ // Bridge mode: prefer this frame's own provider (window[jsBridgeKey]) so connect
79
+ // attributes to the iframe origin; fall back to the parent list only
80
+ // when none is present.
79
81
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
80
82
  // @ts-ignore - window.UWCBridgeChildInitialized is set by the bridge
81
83
  if (window.UWCBridgeChildInitialized === true) {
82
- const wallets = await pollForBridgeTonWallets();
83
- if (wallets.length > 0) {
84
- return wallets;
84
+ const local = discoverTonProviders(jsBridgeKeys);
85
+ if (local.length > 0) {
86
+ return local;
85
87
  }
86
- return [];
88
+ return pollForBridgeTonWallets();
87
89
  }
88
90
  // Native discovery: direct window[key].tonconnect access
89
91
  return discoverTonProviders(jsBridgeKeys);
@@ -1 +1 @@
1
- {"version":3,"file":"ton-discovery.js","sourceRoot":"","sources":["../src/ton-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ton-discovery.js","sourceRoot":"","sources":["../src/ton-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.14.0",
3
+ "version": "0.14.2",
4
4
  "description": "Injected connector for Universal Wallet Connector",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,10 +27,10 @@
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.1",
31
- "@meshconnect/uwc-constants": "0.6.4",
32
- "@meshconnect/uwc-ton-connector": "0.6.3",
33
- "@meshconnect/uwc-types": "0.15.0"
30
+ "@meshconnect/uwc-bridge-child": "0.2.2",
31
+ "@meshconnect/uwc-constants": "0.6.5",
32
+ "@meshconnect/uwc-ton-connector": "0.6.4",
33
+ "@meshconnect/uwc-types": "0.15.1"
34
34
  },
35
35
  "devDependencies": {
36
36
  "typescript": "^5.9.3"
@@ -153,9 +153,10 @@ describe('getTonWallets / bridge polling', () => {
153
153
  vi.restoreAllMocks()
154
154
  })
155
155
 
156
- it('prefers bridge wallets when UWCBridgeChildInitialized is true', async () => {
156
+ it('prefers the in-frame (local) provider over the bridge when both are present', async () => {
157
157
  mockWindow.UWCBridgeChildInitialized = true
158
158
 
159
+ // Parent-proxied wallet reported by the bridge...
159
160
  const bridgeWallet = {
160
161
  uuid: 'ton-tonkeeper',
161
162
  name: 'Tonkeeper',
@@ -165,13 +166,18 @@ describe('getTonWallets / bridge polling', () => {
165
166
  }
166
167
  mockWindow.tonWallets = [bridgeWallet]
167
168
 
168
- // Native wallet also present should be ignored in bridge mode
169
- mockWindow.tonkeeper = { tonconnect: makeBridge('Tonkeeper') }
169
+ // ...and the extension's real provider injected into THIS frame. The local
170
+ // one must win so the connection attributes to the iframe origin.
171
+ const localBridge = makeBridge('Tonkeeper')
172
+ mockWindow.tonkeeper = { tonconnect: localBridge }
170
173
 
171
174
  const { getTonWallets } = await import('./ton-discovery')
172
175
  const wallets = await getTonWallets([makeWalletMeta('tonkeeper')])
173
176
 
174
- expect(wallets).toEqual([bridgeWallet])
177
+ expect(wallets).toHaveLength(1)
178
+ expect(wallets[0].jsBridgeKey).toBe('tonkeeper')
179
+ expect(wallets[0].provider).toBe(localBridge)
180
+ expect(wallets[0].provider).not.toBe(bridgeWallet.provider)
175
181
  })
176
182
 
177
183
  it('returns empty array when bridge polling times out', async () => {
@@ -184,16 +190,50 @@ describe('getTonWallets / bridge polling', () => {
184
190
  expect(wallets).toEqual([])
185
191
  }, 3000)
186
192
 
187
- it('does not fall back to native discovery in bridge mode', async () => {
193
+ it('uses the in-frame (local) provider in bridge mode without waiting for the parent', async () => {
188
194
  mockWindow.UWCBridgeChildInitialized = true
189
- // Native wallet is available, but bridge returns nothing
190
- mockWindow.tonkeeper = { tonconnect: makeBridge('Tonkeeper') }
191
- // No bridge wallets
195
+ // In-frame provider present; parent never reports any wallets.
196
+ const localBridge = makeBridge('Tonkeeper')
197
+ mockWindow.tonkeeper = { tonconnect: localBridge }
192
198
 
193
199
  const { getTonWallets } = await import('./ton-discovery')
194
200
  const wallets = await getTonWallets([makeWalletMeta('tonkeeper')])
195
201
 
196
- expect(wallets).toEqual([])
202
+ expect(wallets).toHaveLength(1)
203
+ expect(wallets[0].jsBridgeKey).toBe('tonkeeper')
204
+ expect(wallets[0].provider).toBe(localBridge)
205
+ })
206
+
207
+ it('prefers the in-frame OKX provider in bridge mode (detection is generic, not Tonkeeper-only)', async () => {
208
+ mockWindow.UWCBridgeChildInitialized = true
209
+ const localBridge = makeBridge('OKX Wallet')
210
+ mockWindow.okxTonWallet = { tonconnect: localBridge }
211
+
212
+ const { getTonWallets } = await import('./ton-discovery')
213
+ const wallets = await getTonWallets([makeWalletMeta('okxTonWallet')])
214
+
215
+ expect(wallets).toHaveLength(1)
216
+ expect(wallets[0].jsBridgeKey).toBe('okxTonWallet')
217
+ expect(wallets[0].provider).toBe(localBridge)
218
+ })
219
+
220
+ it('falls back to the parent-proxied list when nothing is present at window[jsBridgeKey] yet', async () => {
221
+ mockWindow.UWCBridgeChildInitialized = true
222
+ // Nothing at window.tonkeeper yet (before BridgeChild shims, or an old
223
+ // bridge-parent without TON support).
224
+ const bridgeWallet = {
225
+ uuid: 'ton-tonkeeper',
226
+ name: 'Tonkeeper',
227
+ icon: '',
228
+ jsBridgeKey: 'tonkeeper',
229
+ provider: makeBridge('Tonkeeper')
230
+ }
231
+ mockWindow.tonWallets = [bridgeWallet]
232
+
233
+ const { getTonWallets } = await import('./ton-discovery')
234
+ const wallets = await getTonWallets([makeWalletMeta('tonkeeper')])
235
+
236
+ expect(wallets).toEqual([bridgeWallet])
197
237
  }, 3000)
198
238
 
199
239
  it('picks up bridge wallets that appear after a delay', async () => {
@@ -112,15 +112,17 @@ export async function getTonWallets(
112
112
  )
113
113
  .filter((key): key is string => !!key)
114
114
 
115
- // Bridge mode (in iframe): poll for bridge-proxied wallets
115
+ // Bridge mode: prefer this frame's own provider (window[jsBridgeKey]) so connect
116
+ // attributes to the iframe origin; fall back to the parent list only
117
+ // when none is present.
116
118
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
117
119
  // @ts-ignore - window.UWCBridgeChildInitialized is set by the bridge
118
120
  if (window.UWCBridgeChildInitialized === true) {
119
- const wallets = await pollForBridgeTonWallets()
120
- if (wallets.length > 0) {
121
- return wallets
121
+ const local = discoverTonProviders(jsBridgeKeys)
122
+ if (local.length > 0) {
123
+ return local
122
124
  }
123
- return []
125
+ return pollForBridgeTonWallets()
124
126
  }
125
127
 
126
128
  // Native discovery: direct window[key].tonconnect access