@meshconnect/uwc-bridge-parent 1.3.1 → 1.4.0-snapshot.2c887a2

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, connectedAddress?: string) => 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,16 @@ export class BridgeParent {
165
166
  customFunctions: [
166
167
  'sendSerializedTransaction',
167
168
  'signAllSerializedTransactions',
168
- 'signSerializedTransaction'
169
+ 'signSerializedTransaction',
170
+ 'signSolanaTransactionBytes'
169
171
  ],
172
+ // Sign on the parent (where the wallet is) so only bytes cross
173
+ // Comlink — a Transaction object loses its prototype via
174
+ // structured clone. connectedAddress (from the child) wins over
175
+ // the parent publicKey, which may have drifted.
176
+ signSolanaTransactionBytes: async (transaction, connectedAddress) => {
177
+ return signSolanaBytes(adapter, new Uint8Array(transaction), connectedAddress);
178
+ },
170
179
  sendSerializedTransaction: async (transaction, rpcUrl) => {
171
180
  const connection = new Connection(rpcUrl);
172
181
  const uint8Array = new Uint8Array(transaction);
@@ -308,8 +317,15 @@ export class BridgeParent {
308
317
  customFunctions: [
309
318
  'sendSerializedTransaction',
310
319
  'signAllSerializedTransactions',
311
- 'signSerializedTransaction'
320
+ 'signSerializedTransaction',
321
+ 'signSolanaTransactionBytes'
312
322
  ],
323
+ // Legacy base adapter (no Wallet Standard feature) — signSolanaBytes
324
+ // falls back to deserialize → sign → reserialize. See Standard
325
+ // wrapper above for the connectedAddress rationale.
326
+ signSolanaTransactionBytes: async (transaction, connectedAddress) => {
327
+ return signSolanaBytes(baseAdapter, new Uint8Array(transaction), connectedAddress);
328
+ },
313
329
  sendSerializedTransaction: async (transaction, rpcUrl) => {
314
330
  const connection = new Connection(rpcUrl);
315
331
  const uint8Array = new Uint8Array(transaction);
@@ -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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"}
@@ -0,0 +1,23 @@
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 tx bytes → raw signed bytes. Sign-only (the relay broadcasts).
16
+ * Prefers the Wallet Standard feature (no Transaction object → avoids the
17
+ * serialize() crash on some mobile WebViews); falls back to the adapter signer
18
+ * for legacy wallets. `connectedAddress` (from the iframe child) wins over the
19
+ * adapter publicKey, which can drift. The caller verifies the message wasn't
20
+ * altered (see InjectedConnector Path 1).
21
+ */
22
+ export declare function signSolanaBytes(adapter: SignableSolanaAdapter, serializedTx: Uint8Array, connectedAddress?: string): Promise<Uint8Array>;
23
+ //# 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;AAanE,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;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,UAAU,EACxB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAuCrB"}
@@ -0,0 +1,74 @@
1
+ import { Transaction, VersionedTransaction } from '@solana/web3.js';
2
+ const SOLANA_SIGN_FEATURE = 'solana:signTransaction';
3
+ /**
4
+ * Sign raw Solana tx bytes → raw signed bytes. Sign-only (the relay broadcasts).
5
+ * Prefers the Wallet Standard feature (no Transaction object → avoids the
6
+ * serialize() crash on some mobile WebViews); falls back to the adapter signer
7
+ * for legacy wallets. `connectedAddress` (from the iframe child) wins over the
8
+ * adapter publicKey, which can drift. The caller verifies the message wasn't
9
+ * altered (see InjectedConnector Path 1).
10
+ */
11
+ export async function signSolanaBytes(adapter, serializedTx, connectedAddress) {
12
+ const wallet = adapter.wallet;
13
+ if (wallet &&
14
+ SOLANA_SIGN_FEATURE in wallet.features &&
15
+ wallet.accounts.length > 0) {
16
+ const account = resolveSigningAccount(wallet.accounts, connectedAddress ?? adapter.publicKey?.toBase58());
17
+ const feature = wallet.features[SOLANA_SIGN_FEATURE];
18
+ const [output] = await feature.signTransaction({
19
+ account,
20
+ transaction: serializedTx
21
+ });
22
+ if (!output?.signedTransaction) {
23
+ throw new Error('Wallet returned no signed transaction');
24
+ }
25
+ // Caller (InjectedConnector Path 1) verifies the message — keeps this
26
+ // package @meshconnect-free.
27
+ return output.signedTransaction;
28
+ }
29
+ // Legacy fallback: build a Transaction and use the adapter's signer.
30
+ if (adapter.signTransaction === undefined) {
31
+ throw new Error('Adapter does not support signTransaction');
32
+ }
33
+ const tx = deserialize(serializedTx);
34
+ const signed = await adapter.signTransaction(tx);
35
+ // Serialize without the fee-payer's signature — the relay fills that slot.
36
+ return signed instanceof VersionedTransaction
37
+ ? signed.serialize()
38
+ : new Uint8Array(signed.serialize({
39
+ requireAllSignatures: false,
40
+ verifySignatures: false
41
+ }));
42
+ }
43
+ /**
44
+ * Pick which account signs. We must sign with the account the user connected —
45
+ * never guess. A wrong signer produces a useless signature for a payment, so we
46
+ * throw instead of silently falling back to the first account.
47
+ */
48
+ function resolveSigningAccount(accounts, connectedAddress) {
49
+ if (connectedAddress) {
50
+ const match = accounts.find(a => a.address === connectedAddress);
51
+ if (!match) {
52
+ throw new Error('Connected Solana account not found in the wallet — refusing to sign with a different account');
53
+ }
54
+ return match;
55
+ }
56
+ // No explicit selection is only safe when the wallet has exactly one account.
57
+ if (accounts.length === 1)
58
+ return accounts[0];
59
+ throw new Error('Cannot determine which Solana account to sign with — multiple accounts and none selected');
60
+ }
61
+ function deserialize(bytes) {
62
+ try {
63
+ return VersionedTransaction.deserialize(bytes);
64
+ }
65
+ catch {
66
+ try {
67
+ return Transaction.from(bytes);
68
+ }
69
+ catch {
70
+ throw new Error('Failed to deserialize transaction as either versioned or legacy format');
71
+ }
72
+ }
73
+ }
74
+ //# 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;AA0BpD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA8B,EAC9B,YAAwB,EACxB,gBAAyB;IAEzB,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,gBAAgB,IAAI,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,CAClD,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,sEAAsE;QACtE,6BAA6B;QAC7B,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,194 @@
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('prefers the explicit connectedAddress over the adapter publicKey', async () => {
90
+ // The parent's publicKey may have drifted; the caller-supplied address wins.
91
+ const signedBytes = buildSignedV0Bytes();
92
+ const featureSignTx = vi
93
+ .fn()
94
+ .mockResolvedValue([{ signedTransaction: signedBytes }]);
95
+ const accountAAA = { address: 'AAA' };
96
+ const accountBBB = { address: 'BBB' };
97
+ const adapter = {
98
+ publicKey: { toBase58: () => 'AAA' }, // parent's current account
99
+ wallet: {
100
+ accounts: [accountAAA, accountBBB],
101
+ features: {
102
+ 'solana:signTransaction': { signTransaction: featureSignTx }
103
+ }
104
+ }
105
+ };
106
+ await signSolanaBytes(adapter, buildSerializedV0Tx(), 'BBB');
107
+ expect(featureSignTx.mock.calls[0]?.[0]?.account).toBe(accountBBB);
108
+ });
109
+ it('throws when the explicit connectedAddress is not in the wallet, even if publicKey is', async () => {
110
+ const featureSignTx = vi.fn();
111
+ const adapter = {
112
+ publicKey: { toBase58: () => 'AAA' }, // in the wallet, but not what we asked for
113
+ wallet: {
114
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
115
+ features: {
116
+ 'solana:signTransaction': { signTransaction: featureSignTx }
117
+ }
118
+ }
119
+ };
120
+ await expect(signSolanaBytes(adapter, buildSerializedV0Tx(), 'NOT_IN_WALLET')).rejects.toThrow('Connected Solana account not found in the wallet');
121
+ expect(featureSignTx).not.toHaveBeenCalled();
122
+ });
123
+ it('throws when the connected account is not in the wallet (never signs with a different account)', async () => {
124
+ const featureSignTx = vi.fn();
125
+ const adapter = {
126
+ publicKey: { toBase58: () => 'NOT_IN_WALLET' },
127
+ wallet: {
128
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
129
+ features: {
130
+ 'solana:signTransaction': { signTransaction: featureSignTx }
131
+ }
132
+ }
133
+ };
134
+ await expect(signSolanaBytes(adapter, buildSerializedV0Tx())).rejects.toThrow('Connected Solana account not found in the wallet');
135
+ expect(featureSignTx).not.toHaveBeenCalled();
136
+ });
137
+ it('throws when no account is selected and several exist', async () => {
138
+ const featureSignTx = vi.fn();
139
+ const adapter = {
140
+ publicKey: null, // toBase58 yields undefined → no selection
141
+ wallet: {
142
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
143
+ features: {
144
+ 'solana:signTransaction': { signTransaction: featureSignTx }
145
+ }
146
+ }
147
+ };
148
+ await expect(signSolanaBytes(adapter, buildSerializedV0Tx())).rejects.toThrow('Cannot determine which Solana account to sign with');
149
+ });
150
+ // ── Legacy fallback: deserialize → adapter.signTransaction → reserialize ───
151
+ it('falls back to adapter.signTransaction when the wallet has no Standard feature', async () => {
152
+ const adapterSignTx = vi
153
+ .fn()
154
+ .mockResolvedValue(VersionedTransaction.deserialize(buildSignedV0Bytes()));
155
+ const adapter = {
156
+ // No `wallet` → legacy base adapter shape.
157
+ signTransaction: adapterSignTx
158
+ };
159
+ const result = await signSolanaBytes(adapter, buildSerializedV0Tx());
160
+ expect(adapterSignTx).toHaveBeenCalledOnce();
161
+ // The adapter receives a deserialized Transaction object, not raw bytes.
162
+ expect(adapterSignTx.mock.calls[0]?.[0]).toBeInstanceOf(VersionedTransaction);
163
+ expect(result).toBeInstanceOf(Uint8Array);
164
+ expect(result.length).toBeGreaterThan(0);
165
+ });
166
+ it('throws when a legacy adapter cannot sign at all', async () => {
167
+ const adapter = {}; // no feature, no signTransaction
168
+ await expect(signSolanaBytes(adapter, buildSerializedV0Tx())).rejects.toThrow('Adapter does not support signTransaction');
169
+ });
170
+ // ── Invariant: sign-only, never broadcasts ────────────────────────────────
171
+ it('INVARIANT: never invokes any send/broadcast method', async () => {
172
+ const signAndSend = vi.fn();
173
+ const sendTransaction = vi.fn();
174
+ const featureSignTx = vi
175
+ .fn()
176
+ .mockResolvedValue([{ signedTransaction: buildSignedV0Bytes() }]);
177
+ const adapter = {
178
+ publicKey: { toBase58: () => payer.publicKey.toBase58() },
179
+ signTransaction: vi.fn(),
180
+ sendTransaction,
181
+ signAndSendTransaction: signAndSend,
182
+ wallet: {
183
+ accounts: [{ address: payer.publicKey.toBase58() }],
184
+ features: {
185
+ 'solana:signTransaction': { signTransaction: featureSignTx }
186
+ }
187
+ }
188
+ };
189
+ await signSolanaBytes(adapter, buildSerializedV0Tx());
190
+ expect(signAndSend).not.toHaveBeenCalled();
191
+ expect(sendTransaction).not.toHaveBeenCalled();
192
+ });
193
+ });
194
+ //# sourceMappingURL=signSolanaBytes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signSolanaBytes.test.js","sourceRoot":"","sources":["../src/signSolanaBytes.test.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,EAAE;AACF,kFAAkF;AAClF,8EAA8E;AAC9E,4EAA4E;AAC5E,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EACL,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAA8B,MAAM,mBAAmB,CAAA;AAE/E,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;AAChC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAA;AAE9C,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC;QACjC,QAAQ,EAAE,KAAK,CAAC,SAAS;QACzB,eAAe,EAAE,kCAAkC;QACnD,YAAY,EAAE;YACZ,aAAa,CAAC,QAAQ,CAAC;gBACrB,UAAU,EAAE,KAAK,CAAC,SAAS;gBAC3B,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,CAAC;aACZ,CAAC;SACH;KACF,CAAC,CAAC,kBAAkB,EAAE,CAAA;IACvB,OAAO,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAA;AAClD,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC;QACjC,QAAQ,EAAE,KAAK,CAAC,SAAS;QACzB,eAAe,EAAE,kCAAkC;QACnD,YAAY,EAAE;YACZ,aAAa,CAAC,QAAQ,CAAC;gBACrB,UAAU,EAAE,KAAK,CAAC,SAAS;gBAC3B,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,CAAC;aACZ,CAAC;SACH;KACF,CAAC,CAAC,kBAAkB,EAAE,CAAA;IACvB,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACxC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAChB,OAAO,EAAE,CAAC,SAAS,EAAE,CAAA;AACvB,CAAC;AAED,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,6EAA6E;IAE7E,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;QACzG,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;QACxC,MAAM,aAAa,GAAG,EAAE;aACrB,EAAE,EAAE;aACJ,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QAC1D,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAA;QACvD,MAAM,OAAO,GAA0B;YACrC,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;YACzD,wEAAwE;YACxE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,QAAQ,EAAE;oBACR,wBAAwB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;iBAC7D;aACF;SACF,CAAA;QAED,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAEzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAChC,wEAAwE;QACxE,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC;YACzC,OAAO;YACP,WAAW,EAAE,UAAU;SACxB,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;QACxC,MAAM,aAAa,GAAG,EAAE;aACrB,EAAE,EAAE;aACJ,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACrC,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACrC,MAAM,OAAO,GAA0B;YACrC,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;YACpC,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;gBAClC,QAAQ,EAAE;oBACR,wBAAwB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;iBAC7D;aACF;SACF,CAAA;QAED,MAAM,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;QAErD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,6EAA6E;QAC7E,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;QACxC,MAAM,aAAa,GAAG,EAAE;aACrB,EAAE,EAAE;aACJ,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACrC,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACrC,MAAM,OAAO,GAA0B;YACrC,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,2BAA2B;YACjE,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;gBAClC,QAAQ,EAAE;oBACR,wBAAwB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;iBAC7D;aACF;SACF,CAAA;QAED,MAAM,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,KAAK,CAAC,CAAA;QAE5D,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAC7B,MAAM,OAAO,GAA0B;YACrC,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,2CAA2C;YACjF,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClD,QAAQ,EAAE;oBACR,wBAAwB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;iBAC7D;aACF;SACF,CAAA;QAED,MAAM,MAAM,CACV,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,eAAe,CAAC,CACjE,CAAC,OAAO,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAA;QACrE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;QAC7G,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAC7B,MAAM,OAAO,GAA0B;YACrC,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE;YAC9C,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClD,QAAQ,EAAE;oBACR,wBAAwB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;iBAC7D;aACF;SACF,CAAA;QAED,MAAM,MAAM,CACV,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAChD,CAAC,OAAO,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAA;QACrE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAC7B,MAAM,OAAO,GAA0B;YACrC,SAAS,EAAE,IAAI,EAAE,2CAA2C;YAC5D,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAClD,QAAQ,EAAE;oBACR,wBAAwB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;iBAC7D;aACF;SACF,CAAA;QAED,MAAM,MAAM,CACV,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAChD,CAAC,OAAO,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,8EAA8E;IAE9E,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,aAAa,GAAG,EAAE;aACrB,EAAE,EAAE;aACJ,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;QAC5E,MAAM,OAAO,GAA0B;YACrC,2CAA2C;YAC3C,eAAe,EAAE,aAAa;SAC/B,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;QAEpE,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,EAAE,CAAA;QAC5C,yEAAyE;QACzE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CACrD,oBAAoB,CACrB,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACzC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAA0B,EAAE,CAAA,CAAC,iCAAiC;QAE3E,MAAM,MAAM,CACV,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAChD,CAAC,OAAO,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,6EAA6E;IAE7E,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAC3B,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAC/B,MAAM,aAAa,GAAG,EAAE;aACrB,EAAE,EAAE;aACJ,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;YACzD,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;YACxB,eAAe;YACf,sBAAsB,EAAE,WAAW;YACnC,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACnD,QAAQ,EAAE;oBACR,wBAAwB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;iBAC7D;aACF;SACkC,CAAA;QAErC,MAAM,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;QAErD,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QAC1C,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/uwc-bridge-parent",
3
- "version": "1.3.1",
3
+ "version": "1.4.0-snapshot.2c887a2",
4
4
  "description": "Parent window bridge for Universal Wallet Connector",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -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,10 @@ interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
34
36
  signAllSerializedTransactions: (
35
37
  transactions: ArrayBufferLike[]
36
38
  ) => Promise<Error | Transaction[]>
39
+ signSolanaTransactionBytes: (
40
+ transaction: ArrayBufferLike,
41
+ connectedAddress?: string
42
+ ) => Promise<Uint8Array>
37
43
  }
38
44
 
39
45
  export interface WalletStandardInfo {
@@ -304,8 +310,23 @@ export class BridgeParent {
304
310
  customFunctions: [
305
311
  'sendSerializedTransaction',
306
312
  'signAllSerializedTransactions',
307
- 'signSerializedTransaction'
313
+ 'signSerializedTransaction',
314
+ 'signSolanaTransactionBytes'
308
315
  ],
316
+ // Sign on the parent (where the wallet is) so only bytes cross
317
+ // Comlink — a Transaction object loses its prototype via
318
+ // structured clone. connectedAddress (from the child) wins over
319
+ // the parent publicKey, which may have drifted.
320
+ signSolanaTransactionBytes: async (
321
+ transaction: ArrayBufferLike,
322
+ connectedAddress?: string
323
+ ): Promise<Uint8Array> => {
324
+ return signSolanaBytes(
325
+ adapter,
326
+ new Uint8Array(transaction),
327
+ connectedAddress
328
+ )
329
+ },
309
330
  sendSerializedTransaction: async (
310
331
  transaction: ArrayBufferLike,
311
332
  rpcUrl: string
@@ -481,8 +502,22 @@ export class BridgeParent {
481
502
  customFunctions: [
482
503
  'sendSerializedTransaction',
483
504
  'signAllSerializedTransactions',
484
- 'signSerializedTransaction'
505
+ 'signSerializedTransaction',
506
+ 'signSolanaTransactionBytes'
485
507
  ],
508
+ // Legacy base adapter (no Wallet Standard feature) — signSolanaBytes
509
+ // falls back to deserialize → sign → reserialize. See Standard
510
+ // wrapper above for the connectedAddress rationale.
511
+ signSolanaTransactionBytes: async (
512
+ transaction: ArrayBufferLike,
513
+ connectedAddress?: string
514
+ ): Promise<Uint8Array> => {
515
+ return signSolanaBytes(
516
+ baseAdapter,
517
+ new Uint8Array(transaction),
518
+ connectedAddress
519
+ )
520
+ },
486
521
  sendSerializedTransaction: async (
487
522
  transaction: ArrayBufferLike,
488
523
  rpcUrl: string
@@ -0,0 +1,237 @@
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('prefers the explicit connectedAddress over the adapter publicKey', async () => {
106
+ // The parent's publicKey may have drifted; the caller-supplied address wins.
107
+ const signedBytes = buildSignedV0Bytes()
108
+ const featureSignTx = vi
109
+ .fn()
110
+ .mockResolvedValue([{ signedTransaction: signedBytes }])
111
+ const accountAAA = { address: 'AAA' }
112
+ const accountBBB = { address: 'BBB' }
113
+ const adapter: SignableSolanaAdapter = {
114
+ publicKey: { toBase58: () => 'AAA' }, // parent's current account
115
+ wallet: {
116
+ accounts: [accountAAA, accountBBB],
117
+ features: {
118
+ 'solana:signTransaction': { signTransaction: featureSignTx }
119
+ }
120
+ }
121
+ }
122
+
123
+ await signSolanaBytes(adapter, buildSerializedV0Tx(), 'BBB')
124
+
125
+ expect(featureSignTx.mock.calls[0]?.[0]?.account).toBe(accountBBB)
126
+ })
127
+
128
+ it('throws when the explicit connectedAddress is not in the wallet, even if publicKey is', async () => {
129
+ const featureSignTx = vi.fn()
130
+ const adapter: SignableSolanaAdapter = {
131
+ publicKey: { toBase58: () => 'AAA' }, // in the wallet, but not what we asked for
132
+ wallet: {
133
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
134
+ features: {
135
+ 'solana:signTransaction': { signTransaction: featureSignTx }
136
+ }
137
+ }
138
+ }
139
+
140
+ await expect(
141
+ signSolanaBytes(adapter, buildSerializedV0Tx(), 'NOT_IN_WALLET')
142
+ ).rejects.toThrow('Connected Solana account not found in the wallet')
143
+ expect(featureSignTx).not.toHaveBeenCalled()
144
+ })
145
+
146
+ it('throws when the connected account is not in the wallet (never signs with a different account)', async () => {
147
+ const featureSignTx = vi.fn()
148
+ const adapter: SignableSolanaAdapter = {
149
+ publicKey: { toBase58: () => 'NOT_IN_WALLET' },
150
+ wallet: {
151
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
152
+ features: {
153
+ 'solana:signTransaction': { signTransaction: featureSignTx }
154
+ }
155
+ }
156
+ }
157
+
158
+ await expect(
159
+ signSolanaBytes(adapter, buildSerializedV0Tx())
160
+ ).rejects.toThrow('Connected Solana account not found in the wallet')
161
+ expect(featureSignTx).not.toHaveBeenCalled()
162
+ })
163
+
164
+ it('throws when no account is selected and several exist', async () => {
165
+ const featureSignTx = vi.fn()
166
+ const adapter: SignableSolanaAdapter = {
167
+ publicKey: null, // toBase58 yields undefined → no selection
168
+ wallet: {
169
+ accounts: [{ address: 'AAA' }, { address: 'BBB' }],
170
+ features: {
171
+ 'solana:signTransaction': { signTransaction: featureSignTx }
172
+ }
173
+ }
174
+ }
175
+
176
+ await expect(
177
+ signSolanaBytes(adapter, buildSerializedV0Tx())
178
+ ).rejects.toThrow('Cannot determine which Solana account to sign with')
179
+ })
180
+
181
+ // ── Legacy fallback: deserialize → adapter.signTransaction → reserialize ───
182
+
183
+ it('falls back to adapter.signTransaction when the wallet has no Standard feature', async () => {
184
+ const adapterSignTx = vi
185
+ .fn()
186
+ .mockResolvedValue(VersionedTransaction.deserialize(buildSignedV0Bytes()))
187
+ const adapter: SignableSolanaAdapter = {
188
+ // No `wallet` → legacy base adapter shape.
189
+ signTransaction: adapterSignTx
190
+ }
191
+
192
+ const result = await signSolanaBytes(adapter, buildSerializedV0Tx())
193
+
194
+ expect(adapterSignTx).toHaveBeenCalledOnce()
195
+ // The adapter receives a deserialized Transaction object, not raw bytes.
196
+ expect(adapterSignTx.mock.calls[0]?.[0]).toBeInstanceOf(
197
+ VersionedTransaction
198
+ )
199
+ expect(result).toBeInstanceOf(Uint8Array)
200
+ expect(result.length).toBeGreaterThan(0)
201
+ })
202
+
203
+ it('throws when a legacy adapter cannot sign at all', async () => {
204
+ const adapter: SignableSolanaAdapter = {} // no feature, no signTransaction
205
+
206
+ await expect(
207
+ signSolanaBytes(adapter, buildSerializedV0Tx())
208
+ ).rejects.toThrow('Adapter does not support signTransaction')
209
+ })
210
+
211
+ // ── Invariant: sign-only, never broadcasts ────────────────────────────────
212
+
213
+ it('INVARIANT: never invokes any send/broadcast method', async () => {
214
+ const signAndSend = vi.fn()
215
+ const sendTransaction = vi.fn()
216
+ const featureSignTx = vi
217
+ .fn()
218
+ .mockResolvedValue([{ signedTransaction: buildSignedV0Bytes() }])
219
+ const adapter = {
220
+ publicKey: { toBase58: () => payer.publicKey.toBase58() },
221
+ signTransaction: vi.fn(),
222
+ sendTransaction,
223
+ signAndSendTransaction: signAndSend,
224
+ wallet: {
225
+ accounts: [{ address: payer.publicKey.toBase58() }],
226
+ features: {
227
+ 'solana:signTransaction': { signTransaction: featureSignTx }
228
+ }
229
+ }
230
+ } as unknown as SignableSolanaAdapter
231
+
232
+ await signSolanaBytes(adapter, buildSerializedV0Tx())
233
+
234
+ expect(signAndSend).not.toHaveBeenCalled()
235
+ expect(sendTransaction).not.toHaveBeenCalled()
236
+ })
237
+ })
@@ -0,0 +1,119 @@
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
+ // Minimal Solana adapter shape. `wallet` exists only on Wallet Standard adapters.
14
+ export interface SignableSolanaAdapter {
15
+ publicKey?: { toBase58(): string } | null
16
+ signTransaction?:
17
+ | ((
18
+ tx: Transaction | VersionedTransaction
19
+ ) => Promise<Transaction | VersionedTransaction>)
20
+ | undefined
21
+ wallet?:
22
+ | {
23
+ accounts: ReadonlyArray<{ address: string }>
24
+ features: Record<string, unknown>
25
+ }
26
+ | undefined
27
+ }
28
+
29
+ /**
30
+ * Sign raw Solana tx bytes → raw signed bytes. Sign-only (the relay broadcasts).
31
+ * Prefers the Wallet Standard feature (no Transaction object → avoids the
32
+ * serialize() crash on some mobile WebViews); falls back to the adapter signer
33
+ * for legacy wallets. `connectedAddress` (from the iframe child) wins over the
34
+ * adapter publicKey, which can drift. The caller verifies the message wasn't
35
+ * altered (see InjectedConnector Path 1).
36
+ */
37
+ export async function signSolanaBytes(
38
+ adapter: SignableSolanaAdapter,
39
+ serializedTx: Uint8Array,
40
+ connectedAddress?: string
41
+ ): Promise<Uint8Array> {
42
+ const wallet = adapter.wallet
43
+ if (
44
+ wallet &&
45
+ SOLANA_SIGN_FEATURE in wallet.features &&
46
+ wallet.accounts.length > 0
47
+ ) {
48
+ const account = resolveSigningAccount(
49
+ wallet.accounts,
50
+ connectedAddress ?? adapter.publicKey?.toBase58()
51
+ )
52
+ const feature = wallet.features[SOLANA_SIGN_FEATURE] as SolanaSignFeature
53
+ const [output] = await feature.signTransaction({
54
+ account,
55
+ transaction: serializedTx
56
+ })
57
+ if (!output?.signedTransaction) {
58
+ throw new Error('Wallet returned no signed transaction')
59
+ }
60
+ // Caller (InjectedConnector Path 1) verifies the message — keeps this
61
+ // package @meshconnect-free.
62
+ return output.signedTransaction
63
+ }
64
+
65
+ // Legacy fallback: build a Transaction and use the adapter's signer.
66
+ if (adapter.signTransaction === undefined) {
67
+ throw new Error('Adapter does not support signTransaction')
68
+ }
69
+ const tx = deserialize(serializedTx)
70
+ const signed = await adapter.signTransaction(tx)
71
+ // Serialize without the fee-payer's signature — the relay fills that slot.
72
+ return signed instanceof VersionedTransaction
73
+ ? signed.serialize()
74
+ : new Uint8Array(
75
+ signed.serialize({
76
+ requireAllSignatures: false,
77
+ verifySignatures: false
78
+ })
79
+ )
80
+ }
81
+
82
+ /**
83
+ * Pick which account signs. We must sign with the account the user connected —
84
+ * never guess. A wrong signer produces a useless signature for a payment, so we
85
+ * throw instead of silently falling back to the first account.
86
+ */
87
+ function resolveSigningAccount<T extends { address: string }>(
88
+ accounts: ReadonlyArray<T>,
89
+ connectedAddress: string | undefined
90
+ ): T {
91
+ if (connectedAddress) {
92
+ const match = accounts.find(a => a.address === connectedAddress)
93
+ if (!match) {
94
+ throw new Error(
95
+ 'Connected Solana account not found in the wallet — refusing to sign with a different account'
96
+ )
97
+ }
98
+ return match
99
+ }
100
+ // No explicit selection is only safe when the wallet has exactly one account.
101
+ if (accounts.length === 1) return accounts[0]!
102
+ throw new Error(
103
+ 'Cannot determine which Solana account to sign with — multiple accounts and none selected'
104
+ )
105
+ }
106
+
107
+ function deserialize(bytes: Uint8Array): Transaction | VersionedTransaction {
108
+ try {
109
+ return VersionedTransaction.deserialize(bytes)
110
+ } catch {
111
+ try {
112
+ return Transaction.from(bytes)
113
+ } catch {
114
+ throw new Error(
115
+ 'Failed to deserialize transaction as either versioned or legacy format'
116
+ )
117
+ }
118
+ }
119
+ }