@meshconnect/uwc-bridge-parent 1.3.0 → 1.3.1-snapshot.01e5115

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.
@@ -9,10 +9,11 @@ export interface EthereumProvider {
9
9
  removeListener?: (event: string, handler: (...args: any[]) => void) => void;
10
10
  }
11
11
  interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
12
- customFunctions: ('sendSerializedTransaction' | 'signSerializedTransaction' | 'signAllSerializedTransactions')[];
12
+ customFunctions: ('sendSerializedTransaction' | 'signSerializedTransaction' | 'signAllSerializedTransactions' | 'signSolanaTransactionBytes')[];
13
13
  sendSerializedTransaction: (transaction: ArrayBufferLike, rpcUrl: string) => Promise<string>;
14
14
  signSerializedTransaction: (transaction: ArrayBufferLike) => Promise<Error | Transaction>;
15
15
  signAllSerializedTransactions: (transactions: ArrayBufferLike[]) => Promise<Error | Transaction[]>;
16
+ signSolanaTransactionBytes: (transaction: ArrayBufferLike) => Promise<Uint8Array>;
16
17
  }
17
18
  export interface WalletStandardInfo {
18
19
  uuid: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeParent.d.ts","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BridgeParent.d.ts","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { isWalletAdapterCompatibleStandardWallet, WalletReadyState } from '@sola
4
4
  import { Connection, Transaction, VersionedTransaction } from '@solana/web3.js';
5
5
  import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base';
6
6
  import { BaseWalletAdapter } from './BaseWalletAdapter';
7
+ import { signSolanaBytes } from './signSolanaBytes';
7
8
  export class BridgeParent {
8
9
  iframe;
9
10
  parentAPI = null;
@@ -165,8 +166,18 @@ export class BridgeParent {
165
166
  customFunctions: [
166
167
  'sendSerializedTransaction',
167
168
  'signAllSerializedTransactions',
168
- 'signSerializedTransaction'
169
+ 'signSerializedTransaction',
170
+ 'signSolanaTransactionBytes'
169
171
  ],
172
+ // Sign-only, returns raw signed bytes. Runs the sign on the
173
+ // parent (where the real wallet lives) so only bytes cross
174
+ // Comlink — a Transaction object would lose its prototype when
175
+ // structured-cloned to the child. signSolanaBytes prefers the
176
+ // raw-bytes Wallet Standard feature, which avoids the serialize
177
+ // crash some mobile wallets hit. Never broadcasts.
178
+ signSolanaTransactionBytes: async (transaction) => {
179
+ return signSolanaBytes(adapter, new Uint8Array(transaction));
180
+ },
170
181
  sendSerializedTransaction: async (transaction, rpcUrl) => {
171
182
  const connection = new Connection(rpcUrl);
172
183
  const uint8Array = new Uint8Array(transaction);
@@ -308,8 +319,15 @@ export class BridgeParent {
308
319
  customFunctions: [
309
320
  'sendSerializedTransaction',
310
321
  'signAllSerializedTransactions',
311
- 'signSerializedTransaction'
322
+ 'signSerializedTransaction',
323
+ 'signSolanaTransactionBytes'
312
324
  ],
325
+ // Sign-only, returns raw signed bytes (serialized on the parent).
326
+ // Legacy base adapters have no Wallet Standard feature map, so
327
+ // signSolanaBytes uses its deserialize → sign → reserialize fallback.
328
+ signSolanaTransactionBytes: async (transaction) => {
329
+ return signSolanaBytes(baseAdapter, new Uint8Array(transaction));
330
+ },
313
331
  sendSerializedTransaction: async (transaction, rpcUrl) => {
314
332
  const connection = new Connection(rpcUrl);
315
333
  const uint8Array = new Uint8Array(transaction);
@@ -488,9 +506,16 @@ export class BridgeParent {
488
506
  jsBridgeKey: key,
489
507
  provider: Comlink.proxy({
490
508
  deviceInfo: actualBridge.deviceInfo,
509
+ walletInfo: actualBridge.walletInfo,
510
+ protocolVersion: actualBridge.protocolVersion ?? 2,
511
+ isWalletBrowser: actualBridge.isWalletBrowser ?? false,
491
512
  connect: async (protocolVersion, message) => await actualBridge.connect(protocolVersion, message),
513
+ restoreConnection: async () => await actualBridge.restoreConnection(),
492
514
  send: async (message) => await actualBridge.send(message),
493
- listen: (callback) => actualBridge.listen(callback),
515
+ listen: (callback) => {
516
+ const unsub = actualBridge.listen(callback);
517
+ return Comlink.proxy(unsub);
518
+ },
494
519
  disconnect: actualBridge.disconnect
495
520
  ? async () => await actualBridge.disconnect()
496
521
  : undefined
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeParent.js","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BridgeParent.js","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"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"}
@@ -319,6 +319,131 @@ describe('BridgeParent', () => {
319
319
  delete window.tronLink;
320
320
  });
321
321
  });
322
+ describe('TON wallet discovery', () => {
323
+ it('should start with empty ton wallets and not ready', async () => {
324
+ const Comlink = await import('comlink');
325
+ const { BridgeParent } = await import('./BridgeParent');
326
+ new BridgeParent(mockIframe);
327
+ await vi.advanceTimersByTimeAsync(200);
328
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0];
329
+ expect(exposedAPI.tonWallets).toEqual([]);
330
+ expect(exposedAPI.tonWalletsReady).toBe(false);
331
+ });
332
+ it('should discover TON wallets when discoverTonWallets is called', async () => {
333
+ const Comlink = await import('comlink');
334
+ const { BridgeParent } = await import('./BridgeParent');
335
+ window.trustwalletTon = {
336
+ tonconnect: {
337
+ deviceInfo: {
338
+ platform: 'chrome',
339
+ appName: 'Trust Wallet',
340
+ appVersion: '1.0',
341
+ maxProtocolVersion: 2,
342
+ features: []
343
+ },
344
+ walletInfo: {
345
+ name: 'Trust Wallet',
346
+ app_name: 'trustwallet',
347
+ image: 'https://example.com/icon.png',
348
+ about_url: 'https://example.com',
349
+ tondns: '',
350
+ platforms: ['chrome'],
351
+ features: []
352
+ },
353
+ protocolVersion: 2,
354
+ isWalletBrowser: false,
355
+ connect: vi.fn(),
356
+ restoreConnection: vi.fn(),
357
+ send: vi.fn(),
358
+ listen: vi.fn(() => vi.fn()),
359
+ disconnect: vi.fn()
360
+ }
361
+ };
362
+ new BridgeParent(mockIframe);
363
+ await vi.advanceTimersByTimeAsync(200);
364
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0];
365
+ exposedAPI.discoverTonWallets(['trustwalletTon']);
366
+ expect(exposedAPI.tonWalletsReady).toBe(true);
367
+ expect(exposedAPI.tonWallets).toHaveLength(1);
368
+ expect(exposedAPI.tonWallets[0].jsBridgeKey).toBe('trustwalletTon');
369
+ expect(exposedAPI.tonWallets[0].uuid).toBe('ton-trustwalletton');
370
+ delete window.trustwalletTon;
371
+ });
372
+ it('should proxy walletInfo for isJSBridgeWithMetadata compatibility', async () => {
373
+ const Comlink = await import('comlink');
374
+ const { BridgeParent } = await import('./BridgeParent');
375
+ window.trustwalletTon = {
376
+ tonconnect: {
377
+ deviceInfo: {
378
+ platform: 'chrome',
379
+ appName: 'Trust Wallet',
380
+ appVersion: '1.0',
381
+ maxProtocolVersion: 2,
382
+ features: []
383
+ },
384
+ walletInfo: {
385
+ name: 'Trust Wallet',
386
+ app_name: 'trustwallet',
387
+ image: 'https://icon.png',
388
+ about_url: 'https://tw.com',
389
+ tondns: '',
390
+ platforms: ['chrome'],
391
+ features: []
392
+ },
393
+ protocolVersion: 2,
394
+ isWalletBrowser: false,
395
+ connect: vi.fn(),
396
+ restoreConnection: vi.fn(),
397
+ send: vi.fn(),
398
+ listen: vi.fn(() => vi.fn()),
399
+ disconnect: vi.fn()
400
+ }
401
+ };
402
+ new BridgeParent(mockIframe);
403
+ await vi.advanceTimersByTimeAsync(200);
404
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0];
405
+ exposedAPI.discoverTonWallets(['trustwalletTon']);
406
+ const provider = exposedAPI.tonWallets[0].provider;
407
+ // Comlink.proxy mock returns the object as-is
408
+ expect(provider.walletInfo).toBeDefined();
409
+ expect(provider.walletInfo.name).toBe('Trust Wallet');
410
+ expect(provider.walletInfo.app_name).toBe('trustwallet');
411
+ expect(provider.walletInfo.platforms).toEqual(['chrome']);
412
+ expect(provider.protocolVersion).toBe(2);
413
+ expect(provider.isWalletBrowser).toBe(false);
414
+ expect(typeof provider.restoreConnection).toBe('function');
415
+ delete window.trustwalletTon;
416
+ });
417
+ it('should skip wallets without valid tonconnect bridge', async () => {
418
+ const Comlink = await import('comlink');
419
+ const { BridgeParent } = await import('./BridgeParent');
420
+ window.fakeTon = { tonconnect: { notABridge: true } };
421
+ new BridgeParent(mockIframe);
422
+ await vi.advanceTimersByTimeAsync(200);
423
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0];
424
+ exposedAPI.discoverTonWallets(['fakeTon']);
425
+ expect(exposedAPI.tonWallets).toEqual([]);
426
+ delete window.fakeTon;
427
+ });
428
+ it('should deduplicate TON wallets by jsBridgeKey', async () => {
429
+ const Comlink = await import('comlink');
430
+ const { BridgeParent } = await import('./BridgeParent');
431
+ window.trustwalletTon = {
432
+ tonconnect: {
433
+ connect: vi.fn(),
434
+ send: vi.fn(),
435
+ listen: vi.fn(() => vi.fn()),
436
+ deviceInfo: { appName: 'Trust Wallet' }
437
+ }
438
+ };
439
+ new BridgeParent(mockIframe);
440
+ await vi.advanceTimersByTimeAsync(200);
441
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0];
442
+ exposedAPI.discoverTonWallets(['trustwalletTon', 'trustwalletTon']);
443
+ expect(exposedAPI.tonWallets).toHaveLength(1);
444
+ delete window.trustwalletTon;
445
+ });
446
+ });
322
447
  describe('Base Wallet detection', () => {
323
448
  beforeEach(async () => {
324
449
  baseAdapterMock.readyState = 'NotDetected';
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeParent.test.js","sourceRoot":"","sources":["../src/BridgeParent.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BridgeParent.test.js","sourceRoot":"","sources":["../src/BridgeParent.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Transaction, VersionedTransaction } from '@solana/web3.js';
2
+ export interface SignableSolanaAdapter {
3
+ publicKey?: {
4
+ toBase58(): string;
5
+ } | null;
6
+ signTransaction?: ((tx: Transaction | VersionedTransaction) => Promise<Transaction | VersionedTransaction>) | undefined;
7
+ wallet?: {
8
+ accounts: ReadonlyArray<{
9
+ address: string;
10
+ }>;
11
+ features: Record<string, unknown>;
12
+ } | undefined;
13
+ }
14
+ /**
15
+ * Sign raw Solana transaction bytes and return raw signed bytes.
16
+ *
17
+ * Prefers the Wallet Standard `solana:signTransaction` feature (bytes in, bytes
18
+ * out). That path never builds a Transaction object, so it sidesteps the
19
+ * .serialize() chain that crashes some mobile wallet WebViews. Only falls back
20
+ * to the adapter's signTransaction (deserialize → sign → reserialize) for legacy
21
+ * adapters that don't expose the feature.
22
+ *
23
+ * Sign-only: never broadcasts. The fee-payer relay owns submission.
24
+ */
25
+ export declare function signSolanaBytes(adapter: SignableSolanaAdapter, serializedTx: Uint8Array): Promise<Uint8Array>;
26
+ //# sourceMappingURL=signSolanaBytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signSolanaBytes.d.ts","sourceRoot":"","sources":["../src/signSolanaBytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAcnE,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACzC,eAAe,CAAC,EACZ,CAAC,CACC,EAAE,EAAE,WAAW,GAAG,oBAAoB,KACnC,OAAO,CAAC,WAAW,GAAG,oBAAoB,CAAC,CAAC,GACjD,SAAS,CAAA;IACb,MAAM,CAAC,EACH;QACE,QAAQ,EAAE,aAAa,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAClC,GACD,SAAS,CAAA;CACd;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC,CAqCrB"}
@@ -0,0 +1,75 @@
1
+ import { Transaction, VersionedTransaction } from '@solana/web3.js';
2
+ const SOLANA_SIGN_FEATURE = 'solana:signTransaction';
3
+ /**
4
+ * Sign raw Solana transaction bytes and return raw signed bytes.
5
+ *
6
+ * Prefers the Wallet Standard `solana:signTransaction` feature (bytes in, bytes
7
+ * out). That path never builds a Transaction object, so it sidesteps the
8
+ * .serialize() chain that crashes some mobile wallet WebViews. Only falls back
9
+ * to the adapter's signTransaction (deserialize → sign → reserialize) for legacy
10
+ * adapters that don't expose the feature.
11
+ *
12
+ * Sign-only: never broadcasts. The fee-payer relay owns submission.
13
+ */
14
+ export async function signSolanaBytes(adapter, serializedTx) {
15
+ const wallet = adapter.wallet;
16
+ if (wallet &&
17
+ SOLANA_SIGN_FEATURE in wallet.features &&
18
+ wallet.accounts.length > 0) {
19
+ const account = resolveSigningAccount(wallet.accounts, adapter.publicKey?.toBase58());
20
+ const feature = wallet.features[SOLANA_SIGN_FEATURE];
21
+ const [output] = await feature.signTransaction({
22
+ account,
23
+ transaction: serializedTx
24
+ });
25
+ if (!output?.signedTransaction) {
26
+ throw new Error('Wallet returned no signed transaction');
27
+ }
28
+ return output.signedTransaction;
29
+ }
30
+ // Legacy fallback: build a Transaction and use the adapter's signer.
31
+ if (adapter.signTransaction === undefined) {
32
+ throw new Error('Adapter does not support signTransaction');
33
+ }
34
+ const tx = deserialize(serializedTx);
35
+ const signed = await adapter.signTransaction(tx);
36
+ // Serialize without the fee-payer's signature — the relay fills that slot.
37
+ return signed instanceof VersionedTransaction
38
+ ? signed.serialize()
39
+ : new Uint8Array(signed.serialize({
40
+ requireAllSignatures: false,
41
+ verifySignatures: false
42
+ }));
43
+ }
44
+ /**
45
+ * Pick which account signs. We must sign with the account the user connected —
46
+ * never guess. A wrong signer produces a useless signature for a payment, so we
47
+ * throw instead of silently falling back to the first account.
48
+ */
49
+ function resolveSigningAccount(accounts, connectedAddress) {
50
+ if (connectedAddress) {
51
+ const match = accounts.find(a => a.address === connectedAddress);
52
+ if (!match) {
53
+ throw new Error('Connected Solana account not found in the wallet — refusing to sign with a different account');
54
+ }
55
+ return match;
56
+ }
57
+ // No explicit selection is only safe when the wallet has exactly one account.
58
+ if (accounts.length === 1)
59
+ return accounts[0];
60
+ throw new Error('Cannot determine which Solana account to sign with — multiple accounts and none selected');
61
+ }
62
+ function deserialize(bytes) {
63
+ try {
64
+ return VersionedTransaction.deserialize(bytes);
65
+ }
66
+ catch {
67
+ try {
68
+ return Transaction.from(bytes);
69
+ }
70
+ catch {
71
+ throw new Error('Failed to deserialize transaction as either versioned or legacy format');
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=signSolanaBytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signSolanaBytes.js","sourceRoot":"","sources":["../src/signSolanaBytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,MAAM,mBAAmB,GAAG,wBAAwB,CAAA;AA2BpD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA8B,EAC9B,YAAwB;IAExB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,IACE,MAAM;QACN,mBAAmB,IAAI,MAAM,CAAC,QAAQ;QACtC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAC1B,CAAC;QACD,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,QAAQ,EACf,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,CAC9B,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAsB,CAAA;QACzE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC;YAC7C,OAAO;YACP,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC,iBAAiB,CAAA;IACjC,CAAC;IAED,qEAAqE;IACrE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IACD,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAChD,2EAA2E;IAC3E,OAAO,MAAM,YAAY,oBAAoB;QAC3C,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;QACpB,CAAC,CAAC,IAAI,UAAU,CACZ,MAAM,CAAC,SAAS,CAAC;YACf,oBAAoB,EAAE,KAAK;YAC3B,gBAAgB,EAAE,KAAK;SACxB,CAAC,CACH,CAAA;AACP,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,QAA0B,EAC1B,gBAAoC;IAEpC,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAA;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,8EAA8E;IAC9E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAE,CAAA;IAC9C,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signSolanaBytes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signSolanaBytes.test.d.ts","sourceRoot":"","sources":["../src/signSolanaBytes.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,160 @@
1
+ // @vitest-environment node
2
+ //
3
+ // Node env (not jsdom): @solana/web3.js's VersionedTransaction.deserialize relies
4
+ // on a Uint8Array prototype check that fails under jsdom's polyfilled Buffer.
5
+ // Same reason as injected-connector/src/signSolanaTransactionBytes.test.ts.
6
+ import { describe, it, expect, vi } from 'vitest';
7
+ import { Keypair, SystemProgram, TransactionMessage, VersionedTransaction } from '@solana/web3.js';
8
+ import { signSolanaBytes } from './signSolanaBytes';
9
+ const payer = Keypair.generate();
10
+ const recipient = Keypair.generate().publicKey;
11
+ function buildSerializedV0Tx() {
12
+ const msg = new TransactionMessage({
13
+ payerKey: payer.publicKey,
14
+ recentBlockhash: '11111111111111111111111111111111',
15
+ instructions: [
16
+ SystemProgram.transfer({
17
+ fromPubkey: payer.publicKey,
18
+ toPubkey: recipient,
19
+ lamports: 1
20
+ })
21
+ ]
22
+ }).compileToV0Message();
23
+ return new VersionedTransaction(msg).serialize();
24
+ }
25
+ function buildSignedV0Bytes() {
26
+ const msg = new TransactionMessage({
27
+ payerKey: payer.publicKey,
28
+ recentBlockhash: '11111111111111111111111111111111',
29
+ instructions: [
30
+ SystemProgram.transfer({
31
+ fromPubkey: payer.publicKey,
32
+ toPubkey: recipient,
33
+ lamports: 1
34
+ })
35
+ ]
36
+ }).compileToV0Message();
37
+ const tx = new VersionedTransaction(msg);
38
+ tx.sign([payer]);
39
+ return tx.serialize();
40
+ }
41
+ describe('signSolanaBytes (uwc-bridge-parent)', () => {
42
+ // ── Preferred path: raw Wallet Standard feature ───────────────────────────
43
+ it('signs via the solana:signTransaction feature with raw bytes (no Transaction object built)', async () => {
44
+ const signedBytes = buildSignedV0Bytes();
45
+ const featureSignTx = vi
46
+ .fn()
47
+ .mockResolvedValue([{ signedTransaction: signedBytes }]);
48
+ const account = { address: payer.publicKey.toBase58() };
49
+ const adapter = {
50
+ publicKey: { toBase58: () => payer.publicKey.toBase58() },
51
+ // adapter.signTransaction is present but must NOT be used on this path.
52
+ signTransaction: vi.fn(),
53
+ wallet: {
54
+ accounts: [account],
55
+ features: {
56
+ 'solana:signTransaction': { signTransaction: featureSignTx }
57
+ }
58
+ }
59
+ };
60
+ const serialized = buildSerializedV0Tx();
61
+ const result = await signSolanaBytes(adapter, serialized);
62
+ expect(result).toBe(signedBytes);
63
+ // Raw bytes in — the exact same reference, never a deserialized object.
64
+ expect(featureSignTx).toHaveBeenCalledWith({
65
+ account,
66
+ transaction: serialized
67
+ });
68
+ expect(adapter.signTransaction).not.toHaveBeenCalled();
69
+ });
70
+ it('signs with the connected account, not blindly the first one', async () => {
71
+ const signedBytes = buildSignedV0Bytes();
72
+ const featureSignTx = vi
73
+ .fn()
74
+ .mockResolvedValue([{ signedTransaction: signedBytes }]);
75
+ const accountAAA = { address: 'AAA' };
76
+ const accountBBB = { address: 'BBB' };
77
+ const adapter = {
78
+ publicKey: { toBase58: () => 'BBB' },
79
+ wallet: {
80
+ accounts: [accountAAA, accountBBB],
81
+ features: {
82
+ 'solana:signTransaction': { signTransaction: featureSignTx }
83
+ }
84
+ }
85
+ };
86
+ await signSolanaBytes(adapter, buildSerializedV0Tx());
87
+ expect(featureSignTx.mock.calls[0]?.[0]?.account).toBe(accountBBB);
88
+ });
89
+ it('throws when the connected account is not in the wallet (never signs with a different account)', async () => {
90
+ const featureSignTx = vi.fn();
91
+ const adapter = {
92
+ publicKey: { toBase58: () => 'NOT_IN_WALLET' },
93
+ wallet: {
94
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
95
+ features: {
96
+ 'solana:signTransaction': { signTransaction: featureSignTx }
97
+ }
98
+ }
99
+ };
100
+ await expect(signSolanaBytes(adapter, buildSerializedV0Tx())).rejects.toThrow('Connected Solana account not found in the wallet');
101
+ expect(featureSignTx).not.toHaveBeenCalled();
102
+ });
103
+ it('throws when no account is selected and several exist', async () => {
104
+ const featureSignTx = vi.fn();
105
+ const adapter = {
106
+ publicKey: null, // toBase58 yields undefined → no selection
107
+ wallet: {
108
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
109
+ features: {
110
+ 'solana:signTransaction': { signTransaction: featureSignTx }
111
+ }
112
+ }
113
+ };
114
+ await expect(signSolanaBytes(adapter, buildSerializedV0Tx())).rejects.toThrow('Cannot determine which Solana account to sign with');
115
+ });
116
+ // ── Legacy fallback: deserialize → adapter.signTransaction → reserialize ───
117
+ it('falls back to adapter.signTransaction when the wallet has no Standard feature', async () => {
118
+ const adapterSignTx = vi
119
+ .fn()
120
+ .mockResolvedValue(VersionedTransaction.deserialize(buildSignedV0Bytes()));
121
+ const adapter = {
122
+ // No `wallet` → legacy base adapter shape.
123
+ signTransaction: adapterSignTx
124
+ };
125
+ const result = await signSolanaBytes(adapter, buildSerializedV0Tx());
126
+ expect(adapterSignTx).toHaveBeenCalledOnce();
127
+ // The adapter receives a deserialized Transaction object, not raw bytes.
128
+ expect(adapterSignTx.mock.calls[0]?.[0]).toBeInstanceOf(VersionedTransaction);
129
+ expect(result).toBeInstanceOf(Uint8Array);
130
+ expect(result.length).toBeGreaterThan(0);
131
+ });
132
+ it('throws when a legacy adapter cannot sign at all', async () => {
133
+ const adapter = {}; // no feature, no signTransaction
134
+ await expect(signSolanaBytes(adapter, buildSerializedV0Tx())).rejects.toThrow('Adapter does not support signTransaction');
135
+ });
136
+ // ── Invariant: sign-only, never broadcasts ────────────────────────────────
137
+ it('INVARIANT: never invokes any send/broadcast method', async () => {
138
+ const signAndSend = vi.fn();
139
+ const sendTransaction = vi.fn();
140
+ const featureSignTx = vi
141
+ .fn()
142
+ .mockResolvedValue([{ signedTransaction: buildSignedV0Bytes() }]);
143
+ const adapter = {
144
+ publicKey: { toBase58: () => payer.publicKey.toBase58() },
145
+ signTransaction: vi.fn(),
146
+ sendTransaction,
147
+ signAndSendTransaction: signAndSend,
148
+ wallet: {
149
+ accounts: [{ address: payer.publicKey.toBase58() }],
150
+ features: {
151
+ 'solana:signTransaction': { signTransaction: featureSignTx }
152
+ }
153
+ }
154
+ };
155
+ await signSolanaBytes(adapter, buildSerializedV0Tx());
156
+ expect(signAndSend).not.toHaveBeenCalled();
157
+ expect(sendTransaction).not.toHaveBeenCalled();
158
+ });
159
+ });
160
+ //# sourceMappingURL=signSolanaBytes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signSolanaBytes.test.js","sourceRoot":"","sources":["../src/signSolanaBytes.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/uwc-bridge-parent",
3
- "version": "1.3.0",
3
+ "version": "1.3.1-snapshot.01e5115",
4
4
  "description": "Parent window bridge for Universal Wallet Connector",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -414,6 +414,158 @@ describe('BridgeParent', () => {
414
414
  })
415
415
  })
416
416
 
417
+ describe('TON wallet discovery', () => {
418
+ it('should start with empty ton wallets and not ready', async () => {
419
+ const Comlink = await import('comlink')
420
+ const { BridgeParent } = await import('./BridgeParent')
421
+
422
+ new BridgeParent(mockIframe)
423
+ await vi.advanceTimersByTimeAsync(200)
424
+
425
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0] as any
426
+ expect(exposedAPI.tonWallets).toEqual([])
427
+ expect(exposedAPI.tonWalletsReady).toBe(false)
428
+ })
429
+
430
+ it('should discover TON wallets when discoverTonWallets is called', async () => {
431
+ const Comlink = await import('comlink')
432
+ const { BridgeParent } = await import('./BridgeParent')
433
+
434
+ ;(window as any).trustwalletTon = {
435
+ tonconnect: {
436
+ deviceInfo: {
437
+ platform: 'chrome',
438
+ appName: 'Trust Wallet',
439
+ appVersion: '1.0',
440
+ maxProtocolVersion: 2,
441
+ features: []
442
+ },
443
+ walletInfo: {
444
+ name: 'Trust Wallet',
445
+ app_name: 'trustwallet',
446
+ image: 'https://example.com/icon.png',
447
+ about_url: 'https://example.com',
448
+ tondns: '',
449
+ platforms: ['chrome'],
450
+ features: []
451
+ },
452
+ protocolVersion: 2,
453
+ isWalletBrowser: false,
454
+ connect: vi.fn(),
455
+ restoreConnection: vi.fn(),
456
+ send: vi.fn(),
457
+ listen: vi.fn(() => vi.fn()),
458
+ disconnect: vi.fn()
459
+ }
460
+ }
461
+
462
+ new BridgeParent(mockIframe)
463
+ await vi.advanceTimersByTimeAsync(200)
464
+
465
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0] as any
466
+ exposedAPI.discoverTonWallets(['trustwalletTon'])
467
+
468
+ expect(exposedAPI.tonWalletsReady).toBe(true)
469
+ expect(exposedAPI.tonWallets).toHaveLength(1)
470
+ expect(exposedAPI.tonWallets[0].jsBridgeKey).toBe('trustwalletTon')
471
+ expect(exposedAPI.tonWallets[0].uuid).toBe('ton-trustwalletton')
472
+
473
+ delete (window as any).trustwalletTon
474
+ })
475
+
476
+ it('should proxy walletInfo for isJSBridgeWithMetadata compatibility', async () => {
477
+ const Comlink = await import('comlink')
478
+ const { BridgeParent } = await import('./BridgeParent')
479
+
480
+ ;(window as any).trustwalletTon = {
481
+ tonconnect: {
482
+ deviceInfo: {
483
+ platform: 'chrome',
484
+ appName: 'Trust Wallet',
485
+ appVersion: '1.0',
486
+ maxProtocolVersion: 2,
487
+ features: []
488
+ },
489
+ walletInfo: {
490
+ name: 'Trust Wallet',
491
+ app_name: 'trustwallet',
492
+ image: 'https://icon.png',
493
+ about_url: 'https://tw.com',
494
+ tondns: '',
495
+ platforms: ['chrome'],
496
+ features: []
497
+ },
498
+ protocolVersion: 2,
499
+ isWalletBrowser: false,
500
+ connect: vi.fn(),
501
+ restoreConnection: vi.fn(),
502
+ send: vi.fn(),
503
+ listen: vi.fn(() => vi.fn()),
504
+ disconnect: vi.fn()
505
+ }
506
+ }
507
+
508
+ new BridgeParent(mockIframe)
509
+ await vi.advanceTimersByTimeAsync(200)
510
+
511
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0] as any
512
+ exposedAPI.discoverTonWallets(['trustwalletTon'])
513
+
514
+ const provider = exposedAPI.tonWallets[0].provider
515
+ // Comlink.proxy mock returns the object as-is
516
+ expect(provider.walletInfo).toBeDefined()
517
+ expect(provider.walletInfo.name).toBe('Trust Wallet')
518
+ expect(provider.walletInfo.app_name).toBe('trustwallet')
519
+ expect(provider.walletInfo.platforms).toEqual(['chrome'])
520
+ expect(provider.protocolVersion).toBe(2)
521
+ expect(provider.isWalletBrowser).toBe(false)
522
+ expect(typeof provider.restoreConnection).toBe('function')
523
+
524
+ delete (window as any).trustwalletTon
525
+ })
526
+
527
+ it('should skip wallets without valid tonconnect bridge', async () => {
528
+ const Comlink = await import('comlink')
529
+ const { BridgeParent } = await import('./BridgeParent')
530
+
531
+ ;(window as any).fakeTon = { tonconnect: { notABridge: true } }
532
+
533
+ new BridgeParent(mockIframe)
534
+ await vi.advanceTimersByTimeAsync(200)
535
+
536
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0] as any
537
+ exposedAPI.discoverTonWallets(['fakeTon'])
538
+
539
+ expect(exposedAPI.tonWallets).toEqual([])
540
+
541
+ delete (window as any).fakeTon
542
+ })
543
+
544
+ it('should deduplicate TON wallets by jsBridgeKey', async () => {
545
+ const Comlink = await import('comlink')
546
+ const { BridgeParent } = await import('./BridgeParent')
547
+
548
+ ;(window as any).trustwalletTon = {
549
+ tonconnect: {
550
+ connect: vi.fn(),
551
+ send: vi.fn(),
552
+ listen: vi.fn(() => vi.fn()),
553
+ deviceInfo: { appName: 'Trust Wallet' }
554
+ }
555
+ }
556
+
557
+ new BridgeParent(mockIframe)
558
+ await vi.advanceTimersByTimeAsync(200)
559
+
560
+ const exposedAPI = vi.mocked(Comlink.expose).mock.calls[0]?.[0] as any
561
+ exposedAPI.discoverTonWallets(['trustwalletTon', 'trustwalletTon'])
562
+
563
+ expect(exposedAPI.tonWallets).toHaveLength(1)
564
+
565
+ delete (window as any).trustwalletTon
566
+ })
567
+ })
568
+
417
569
  describe('Base Wallet detection', () => {
418
570
  beforeEach(async () => {
419
571
  baseAdapterMock.readyState = 'NotDetected'
@@ -8,6 +8,7 @@ import {
8
8
  import { Connection, Transaction, VersionedTransaction } from '@solana/web3.js'
9
9
  import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base'
10
10
  import { BaseWalletAdapter } from './BaseWalletAdapter'
11
+ import { signSolanaBytes } from './signSolanaBytes'
11
12
 
12
13
  export interface EthereumProvider {
13
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -23,6 +24,7 @@ interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
23
24
  | 'sendSerializedTransaction'
24
25
  | 'signSerializedTransaction'
25
26
  | 'signAllSerializedTransactions'
27
+ | 'signSolanaTransactionBytes'
26
28
  )[]
27
29
  sendSerializedTransaction: (
28
30
  transaction: ArrayBufferLike,
@@ -34,6 +36,9 @@ interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
34
36
  signAllSerializedTransactions: (
35
37
  transactions: ArrayBufferLike[]
36
38
  ) => Promise<Error | Transaction[]>
39
+ signSolanaTransactionBytes: (
40
+ transaction: ArrayBufferLike
41
+ ) => Promise<Uint8Array>
37
42
  }
38
43
 
39
44
  export interface WalletStandardInfo {
@@ -304,8 +309,20 @@ export class BridgeParent {
304
309
  customFunctions: [
305
310
  'sendSerializedTransaction',
306
311
  'signAllSerializedTransactions',
307
- 'signSerializedTransaction'
312
+ 'signSerializedTransaction',
313
+ 'signSolanaTransactionBytes'
308
314
  ],
315
+ // Sign-only, returns raw signed bytes. Runs the sign on the
316
+ // parent (where the real wallet lives) so only bytes cross
317
+ // Comlink — a Transaction object would lose its prototype when
318
+ // structured-cloned to the child. signSolanaBytes prefers the
319
+ // raw-bytes Wallet Standard feature, which avoids the serialize
320
+ // crash some mobile wallets hit. Never broadcasts.
321
+ signSolanaTransactionBytes: async (
322
+ transaction: ArrayBufferLike
323
+ ): Promise<Uint8Array> => {
324
+ return signSolanaBytes(adapter, new Uint8Array(transaction))
325
+ },
309
326
  sendSerializedTransaction: async (
310
327
  transaction: ArrayBufferLike,
311
328
  rpcUrl: string
@@ -481,8 +498,17 @@ export class BridgeParent {
481
498
  customFunctions: [
482
499
  'sendSerializedTransaction',
483
500
  'signAllSerializedTransactions',
484
- 'signSerializedTransaction'
501
+ 'signSerializedTransaction',
502
+ 'signSolanaTransactionBytes'
485
503
  ],
504
+ // Sign-only, returns raw signed bytes (serialized on the parent).
505
+ // Legacy base adapters have no Wallet Standard feature map, so
506
+ // signSolanaBytes uses its deserialize → sign → reserialize fallback.
507
+ signSolanaTransactionBytes: async (
508
+ transaction: ArrayBufferLike
509
+ ): Promise<Uint8Array> => {
510
+ return signSolanaBytes(baseAdapter, new Uint8Array(transaction))
511
+ },
486
512
  sendSerializedTransaction: async (
487
513
  transaction: ArrayBufferLike,
488
514
  rpcUrl: string
@@ -721,11 +747,17 @@ export class BridgeParent {
721
747
  jsBridgeKey: key,
722
748
  provider: Comlink.proxy({
723
749
  deviceInfo: actualBridge.deviceInfo,
750
+ walletInfo: actualBridge.walletInfo,
751
+ protocolVersion: actualBridge.protocolVersion ?? 2,
752
+ isWalletBrowser: actualBridge.isWalletBrowser ?? false,
724
753
  connect: async (protocolVersion: number, message: string) =>
725
754
  await actualBridge.connect(protocolVersion, message),
755
+ restoreConnection: async () => await actualBridge.restoreConnection(),
726
756
  send: async (message: string) => await actualBridge.send(message),
727
- listen: (callback: (event: string) => void) =>
728
- actualBridge.listen(callback),
757
+ listen: (callback: (event: string) => void) => {
758
+ const unsub = actualBridge.listen(callback)
759
+ return Comlink.proxy(unsub)
760
+ },
729
761
  disconnect: actualBridge.disconnect
730
762
  ? async () => await actualBridge.disconnect()
731
763
  : undefined
@@ -0,0 +1,196 @@
1
+ // @vitest-environment node
2
+ //
3
+ // Node env (not jsdom): @solana/web3.js's VersionedTransaction.deserialize relies
4
+ // on a Uint8Array prototype check that fails under jsdom's polyfilled Buffer.
5
+ // Same reason as injected-connector/src/signSolanaTransactionBytes.test.ts.
6
+ import { describe, it, expect, vi } from 'vitest'
7
+ import {
8
+ Keypair,
9
+ SystemProgram,
10
+ TransactionMessage,
11
+ VersionedTransaction
12
+ } from '@solana/web3.js'
13
+ import { signSolanaBytes, type SignableSolanaAdapter } from './signSolanaBytes'
14
+
15
+ const payer = Keypair.generate()
16
+ const recipient = Keypair.generate().publicKey
17
+
18
+ function buildSerializedV0Tx(): Uint8Array {
19
+ const msg = new TransactionMessage({
20
+ payerKey: payer.publicKey,
21
+ recentBlockhash: '11111111111111111111111111111111',
22
+ instructions: [
23
+ SystemProgram.transfer({
24
+ fromPubkey: payer.publicKey,
25
+ toPubkey: recipient,
26
+ lamports: 1
27
+ })
28
+ ]
29
+ }).compileToV0Message()
30
+ return new VersionedTransaction(msg).serialize()
31
+ }
32
+
33
+ function buildSignedV0Bytes(): Uint8Array {
34
+ const msg = new TransactionMessage({
35
+ payerKey: payer.publicKey,
36
+ recentBlockhash: '11111111111111111111111111111111',
37
+ instructions: [
38
+ SystemProgram.transfer({
39
+ fromPubkey: payer.publicKey,
40
+ toPubkey: recipient,
41
+ lamports: 1
42
+ })
43
+ ]
44
+ }).compileToV0Message()
45
+ const tx = new VersionedTransaction(msg)
46
+ tx.sign([payer])
47
+ return tx.serialize()
48
+ }
49
+
50
+ describe('signSolanaBytes (uwc-bridge-parent)', () => {
51
+ // ── Preferred path: raw Wallet Standard feature ───────────────────────────
52
+
53
+ it('signs via the solana:signTransaction feature with raw bytes (no Transaction object built)', async () => {
54
+ const signedBytes = buildSignedV0Bytes()
55
+ const featureSignTx = vi
56
+ .fn()
57
+ .mockResolvedValue([{ signedTransaction: signedBytes }])
58
+ const account = { address: payer.publicKey.toBase58() }
59
+ const adapter: SignableSolanaAdapter = {
60
+ publicKey: { toBase58: () => payer.publicKey.toBase58() },
61
+ // adapter.signTransaction is present but must NOT be used on this path.
62
+ signTransaction: vi.fn(),
63
+ wallet: {
64
+ accounts: [account],
65
+ features: {
66
+ 'solana:signTransaction': { signTransaction: featureSignTx }
67
+ }
68
+ }
69
+ }
70
+
71
+ const serialized = buildSerializedV0Tx()
72
+ const result = await signSolanaBytes(adapter, serialized)
73
+
74
+ expect(result).toBe(signedBytes)
75
+ // Raw bytes in — the exact same reference, never a deserialized object.
76
+ expect(featureSignTx).toHaveBeenCalledWith({
77
+ account,
78
+ transaction: serialized
79
+ })
80
+ expect(adapter.signTransaction).not.toHaveBeenCalled()
81
+ })
82
+
83
+ it('signs with the connected account, not blindly the first one', async () => {
84
+ const signedBytes = buildSignedV0Bytes()
85
+ const featureSignTx = vi
86
+ .fn()
87
+ .mockResolvedValue([{ signedTransaction: signedBytes }])
88
+ const accountAAA = { address: 'AAA' }
89
+ const accountBBB = { address: 'BBB' }
90
+ const adapter: SignableSolanaAdapter = {
91
+ publicKey: { toBase58: () => 'BBB' },
92
+ wallet: {
93
+ accounts: [accountAAA, accountBBB],
94
+ features: {
95
+ 'solana:signTransaction': { signTransaction: featureSignTx }
96
+ }
97
+ }
98
+ }
99
+
100
+ await signSolanaBytes(adapter, buildSerializedV0Tx())
101
+
102
+ expect(featureSignTx.mock.calls[0]?.[0]?.account).toBe(accountBBB)
103
+ })
104
+
105
+ it('throws when the connected account is not in the wallet (never signs with a different account)', async () => {
106
+ const featureSignTx = vi.fn()
107
+ const adapter: SignableSolanaAdapter = {
108
+ publicKey: { toBase58: () => 'NOT_IN_WALLET' },
109
+ wallet: {
110
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
111
+ features: {
112
+ 'solana:signTransaction': { signTransaction: featureSignTx }
113
+ }
114
+ }
115
+ }
116
+
117
+ await expect(
118
+ signSolanaBytes(adapter, buildSerializedV0Tx())
119
+ ).rejects.toThrow('Connected Solana account not found in the wallet')
120
+ expect(featureSignTx).not.toHaveBeenCalled()
121
+ })
122
+
123
+ it('throws when no account is selected and several exist', async () => {
124
+ const featureSignTx = vi.fn()
125
+ const adapter: SignableSolanaAdapter = {
126
+ publicKey: null, // toBase58 yields undefined → no selection
127
+ wallet: {
128
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
129
+ features: {
130
+ 'solana:signTransaction': { signTransaction: featureSignTx }
131
+ }
132
+ }
133
+ }
134
+
135
+ await expect(
136
+ signSolanaBytes(adapter, buildSerializedV0Tx())
137
+ ).rejects.toThrow('Cannot determine which Solana account to sign with')
138
+ })
139
+
140
+ // ── Legacy fallback: deserialize → adapter.signTransaction → reserialize ───
141
+
142
+ it('falls back to adapter.signTransaction when the wallet has no Standard feature', async () => {
143
+ const adapterSignTx = vi
144
+ .fn()
145
+ .mockResolvedValue(VersionedTransaction.deserialize(buildSignedV0Bytes()))
146
+ const adapter: SignableSolanaAdapter = {
147
+ // No `wallet` → legacy base adapter shape.
148
+ signTransaction: adapterSignTx
149
+ }
150
+
151
+ const result = await signSolanaBytes(adapter, buildSerializedV0Tx())
152
+
153
+ expect(adapterSignTx).toHaveBeenCalledOnce()
154
+ // The adapter receives a deserialized Transaction object, not raw bytes.
155
+ expect(adapterSignTx.mock.calls[0]?.[0]).toBeInstanceOf(
156
+ VersionedTransaction
157
+ )
158
+ expect(result).toBeInstanceOf(Uint8Array)
159
+ expect(result.length).toBeGreaterThan(0)
160
+ })
161
+
162
+ it('throws when a legacy adapter cannot sign at all', async () => {
163
+ const adapter: SignableSolanaAdapter = {} // no feature, no signTransaction
164
+
165
+ await expect(
166
+ signSolanaBytes(adapter, buildSerializedV0Tx())
167
+ ).rejects.toThrow('Adapter does not support signTransaction')
168
+ })
169
+
170
+ // ── Invariant: sign-only, never broadcasts ────────────────────────────────
171
+
172
+ it('INVARIANT: never invokes any send/broadcast method', async () => {
173
+ const signAndSend = vi.fn()
174
+ const sendTransaction = vi.fn()
175
+ const featureSignTx = vi
176
+ .fn()
177
+ .mockResolvedValue([{ signedTransaction: buildSignedV0Bytes() }])
178
+ const adapter = {
179
+ publicKey: { toBase58: () => payer.publicKey.toBase58() },
180
+ signTransaction: vi.fn(),
181
+ sendTransaction,
182
+ signAndSendTransaction: signAndSend,
183
+ wallet: {
184
+ accounts: [{ address: payer.publicKey.toBase58() }],
185
+ features: {
186
+ 'solana:signTransaction': { signTransaction: featureSignTx }
187
+ }
188
+ }
189
+ } as unknown as SignableSolanaAdapter
190
+
191
+ await signSolanaBytes(adapter, buildSerializedV0Tx())
192
+
193
+ expect(signAndSend).not.toHaveBeenCalled()
194
+ expect(sendTransaction).not.toHaveBeenCalled()
195
+ })
196
+ })
@@ -0,0 +1,120 @@
1
+ import { Transaction, VersionedTransaction } from '@solana/web3.js'
2
+
3
+ const SOLANA_SIGN_FEATURE = 'solana:signTransaction'
4
+
5
+ // Wallet Standard `solana:signTransaction` feature: raw bytes in, raw bytes out.
6
+ interface SolanaSignFeature {
7
+ signTransaction: (input: {
8
+ account: { address: string }
9
+ transaction: Uint8Array
10
+ }) => Promise<Array<{ signedTransaction: Uint8Array }>>
11
+ }
12
+
13
+ // The slice of a Solana wallet adapter this helper needs. `wallet` is present
14
+ // only on Wallet Standard adapters; legacy (base) adapters omit it.
15
+ export interface SignableSolanaAdapter {
16
+ publicKey?: { toBase58(): string } | null
17
+ signTransaction?:
18
+ | ((
19
+ tx: Transaction | VersionedTransaction
20
+ ) => Promise<Transaction | VersionedTransaction>)
21
+ | undefined
22
+ wallet?:
23
+ | {
24
+ accounts: ReadonlyArray<{ address: string }>
25
+ features: Record<string, unknown>
26
+ }
27
+ | undefined
28
+ }
29
+
30
+ /**
31
+ * Sign raw Solana transaction bytes and return raw signed bytes.
32
+ *
33
+ * Prefers the Wallet Standard `solana:signTransaction` feature (bytes in, bytes
34
+ * out). That path never builds a Transaction object, so it sidesteps the
35
+ * .serialize() chain that crashes some mobile wallet WebViews. Only falls back
36
+ * to the adapter's signTransaction (deserialize → sign → reserialize) for legacy
37
+ * adapters that don't expose the feature.
38
+ *
39
+ * Sign-only: never broadcasts. The fee-payer relay owns submission.
40
+ */
41
+ export async function signSolanaBytes(
42
+ adapter: SignableSolanaAdapter,
43
+ serializedTx: Uint8Array
44
+ ): Promise<Uint8Array> {
45
+ const wallet = adapter.wallet
46
+ if (
47
+ wallet &&
48
+ SOLANA_SIGN_FEATURE in wallet.features &&
49
+ wallet.accounts.length > 0
50
+ ) {
51
+ const account = resolveSigningAccount(
52
+ wallet.accounts,
53
+ adapter.publicKey?.toBase58()
54
+ )
55
+ const feature = wallet.features[SOLANA_SIGN_FEATURE] as SolanaSignFeature
56
+ const [output] = await feature.signTransaction({
57
+ account,
58
+ transaction: serializedTx
59
+ })
60
+ if (!output?.signedTransaction) {
61
+ throw new Error('Wallet returned no signed transaction')
62
+ }
63
+ return output.signedTransaction
64
+ }
65
+
66
+ // Legacy fallback: build a Transaction and use the adapter's signer.
67
+ if (adapter.signTransaction === undefined) {
68
+ throw new Error('Adapter does not support signTransaction')
69
+ }
70
+ const tx = deserialize(serializedTx)
71
+ const signed = await adapter.signTransaction(tx)
72
+ // Serialize without the fee-payer's signature — the relay fills that slot.
73
+ return signed instanceof VersionedTransaction
74
+ ? signed.serialize()
75
+ : new Uint8Array(
76
+ signed.serialize({
77
+ requireAllSignatures: false,
78
+ verifySignatures: false
79
+ })
80
+ )
81
+ }
82
+
83
+ /**
84
+ * Pick which account signs. We must sign with the account the user connected —
85
+ * never guess. A wrong signer produces a useless signature for a payment, so we
86
+ * throw instead of silently falling back to the first account.
87
+ */
88
+ function resolveSigningAccount<T extends { address: string }>(
89
+ accounts: ReadonlyArray<T>,
90
+ connectedAddress: string | undefined
91
+ ): T {
92
+ if (connectedAddress) {
93
+ const match = accounts.find(a => a.address === connectedAddress)
94
+ if (!match) {
95
+ throw new Error(
96
+ 'Connected Solana account not found in the wallet — refusing to sign with a different account'
97
+ )
98
+ }
99
+ return match
100
+ }
101
+ // No explicit selection is only safe when the wallet has exactly one account.
102
+ if (accounts.length === 1) return accounts[0]!
103
+ throw new Error(
104
+ 'Cannot determine which Solana account to sign with — multiple accounts and none selected'
105
+ )
106
+ }
107
+
108
+ function deserialize(bytes: Uint8Array): Transaction | VersionedTransaction {
109
+ try {
110
+ return VersionedTransaction.deserialize(bytes)
111
+ } catch {
112
+ try {
113
+ return Transaction.from(bytes)
114
+ } catch {
115
+ throw new Error(
116
+ 'Failed to deserialize transaction as either versioned or legacy format'
117
+ )
118
+ }
119
+ }
120
+ }