@meshconnect/uwc-core 1.4.1 → 1.5.0-snapshot.23bf25b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/transaction-service.d.ts.map +1 -1
- package/dist/services/transaction-service.js +17 -0
- package/dist/services/transaction-service.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -5
- package/src/services/transaction-service.test.ts +72 -0
- package/src/services/transaction-service.ts +22 -0
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAe1D;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,uBAAuB;gBALvB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1C,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,YAAY,EAE1B,uBAAuB,EAAE,MAAM;IAGzC;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAuD7B;;;;OAIG;IACG,0BAA0B,CAC9B,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;CAqBvB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { instrumentHandoff, sessionHandoffContext } from '../observability/instrument-handoff';
|
|
2
2
|
import { resolveSessionProvider } from '../utils/resolve-session-provider';
|
|
3
3
|
import { validateWalletSession, getSessionConnector } from '../utils/validate-wallet-session';
|
|
4
|
+
// Token-2022 program id — a literal to avoid an @solana/spl-token dep in core.
|
|
5
|
+
const SOLANA_TOKEN_2022_PROGRAM_ID = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
|
|
4
6
|
/**
|
|
5
7
|
* Service for handling transaction operations across different connector types.
|
|
6
8
|
*
|
|
@@ -42,6 +44,21 @@ export class TransactionService {
|
|
|
42
44
|
// Validation, not wallet work — a missing provider must not enter the funnel.
|
|
43
45
|
// undefined only for tonConnect, whose connector resolves its own provider.
|
|
44
46
|
const provider = resolveSessionProvider(session, this.usingIntegratedBrowser);
|
|
47
|
+
// Breadcrumb: Token-2022 transfers use a bare transferChecked (no
|
|
48
|
+
// transfer-hook extra-account-metas) — log them to correlate any failures.
|
|
49
|
+
// Covers both a direct token transfer and a smart-funding request, whose
|
|
50
|
+
// Token-2022 transfer is nested in `additionalRequests`.
|
|
51
|
+
const isToken2022 = (req) => 'tokenMint' in req && req.tokenProgram === SOLANA_TOKEN_2022_PROGRAM_ID;
|
|
52
|
+
const sendsToken2022 = isToken2022(request) ||
|
|
53
|
+
('additionalRequests' in request &&
|
|
54
|
+
(request.additionalRequests ?? []).some(isToken2022));
|
|
55
|
+
if (sendsToken2022) {
|
|
56
|
+
this.eventManager.emit('log', {
|
|
57
|
+
level: 'info',
|
|
58
|
+
message: 'solana token-2022 transfer',
|
|
59
|
+
args: []
|
|
60
|
+
});
|
|
61
|
+
}
|
|
45
62
|
const result = await instrumentHandoff({
|
|
46
63
|
eventManager: this.eventManager,
|
|
47
64
|
timeoutMs: this.walletResponseTimeoutMs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-service.js","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"AASA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,kCAAkC,CAAA;AAEzC;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IAEnB;IACA;IACA;IACA;IAEA;IANV,YACU,cAA8B,EAC9B,UAA0C,EAC1C,sBAA+B,EAC/B,YAA0B;IAClC,yEAAyE;IACjE,uBAA+B;QAL/B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,eAAU,GAAV,UAAU,CAAgC;QAC1C,2BAAsB,GAAtB,sBAAsB,CAAS;QAC/B,iBAAY,GAAZ,YAAY,CAAc;QAE1B,4BAAuB,GAAvB,uBAAuB,CAAQ;IACtC,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CACnB,OAA2B,EAC3B,OAAwB;QAExB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;QACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE;YACzD,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC/D,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QAED,8EAA8E;QAC9E,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,sBAAsB,CACrC,OAAO,EACP,IAAI,CAAC,sBAAsB,CAC5B,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;YACE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,uBAAuB;YACvC,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,EACD,qBAAqB,CAAC,iBAAiB,EAAE,OAAO,CAAC;QACjD,uEAAuE;QACvE,GAAG,EAAE,CACH,QAAQ,KAAK,SAAS;YACpB,CAAC,CAAC,SAAS,CAAC,eAAgB,CAAC,OAAO,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC,eAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpD,CAAA;QACD,0EAA0E;QAC1E,0EAA0E;QAC1E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;QACjC,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,0BAA0B,CAC9B,YAAwB;QAExB,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE;YACzD,cAAc,EAAE,KAAK;SACtB,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,cAAe,CAAC,CAAA;QAC9D,IAAI,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,+DAA+D,OAAO,CAAC,cAAc,GAAG,CACzF,CAAA;QACH,CAAC;QAED,OAAO,MAAM,iBAAiB,CAC5B;YACE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,uBAAuB;SACxC,EACD,qBAAqB,CAAC,uBAAuB,EAAE,OAAO,CAAC,EACvD,GAAG,EAAE,CAAC,SAAS,CAAC,0BAA2B,CAAC,YAAY,CAAC,CAC1D,CAAA;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"transaction-service.js","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const UWC_CORE_VERSION = "1.
|
|
1
|
+
export declare const UWC_CORE_VERSION = "1.5.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0-snapshot.23bf25b",
|
|
4
4
|
"description": "Core functionality for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"src"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@meshconnect/uwc-injected-connector": "0.16.
|
|
20
|
-
"@meshconnect/uwc-ton-connector": "0.7.3",
|
|
21
|
-
"@meshconnect/uwc-types": "0.20.0",
|
|
22
|
-
"@meshconnect/uwc-wallet-connect-connector": "0.11.
|
|
19
|
+
"@meshconnect/uwc-injected-connector": "0.16.6-snapshot.23bf25b",
|
|
20
|
+
"@meshconnect/uwc-ton-connector": "0.7.3-snapshot.23bf25b",
|
|
21
|
+
"@meshconnect/uwc-types": "0.20.0-snapshot.23bf25b",
|
|
22
|
+
"@meshconnect/uwc-wallet-connect-connector": "0.11.1-snapshot.23bf25b"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"typescript": "^5.9.3"
|
|
@@ -37,6 +37,7 @@ describe('TransactionService.sendTransaction', () => {
|
|
|
37
37
|
let mockConnector: Connector
|
|
38
38
|
let connectors: Map<ConnectionMode, Connector>
|
|
39
39
|
let events: string[]
|
|
40
|
+
let logs: { message: string }[]
|
|
40
41
|
|
|
41
42
|
const connectSession = (
|
|
42
43
|
mode: ConnectionMode = 'injected',
|
|
@@ -52,6 +53,7 @@ describe('TransactionService.sendTransaction', () => {
|
|
|
52
53
|
sessionManager = new SessionManager()
|
|
53
54
|
eventManager = new EventManager()
|
|
54
55
|
events = []
|
|
56
|
+
logs = []
|
|
55
57
|
for (const name of [
|
|
56
58
|
'awaitingWallet',
|
|
57
59
|
'walletSucceeded',
|
|
@@ -60,6 +62,7 @@ describe('TransactionService.sendTransaction', () => {
|
|
|
60
62
|
] as const) {
|
|
61
63
|
eventManager.on(name, () => events.push(name))
|
|
62
64
|
}
|
|
65
|
+
eventManager.on('log', d => logs.push(d))
|
|
63
66
|
|
|
64
67
|
mockConnector = {
|
|
65
68
|
connect: vi.fn(),
|
|
@@ -217,6 +220,75 @@ describe('TransactionService.sendTransaction', () => {
|
|
|
217
220
|
expect(mockConnector.sendTransaction).toHaveBeenCalledWith(request)
|
|
218
221
|
expect(events).toEqual(['awaitingWallet', 'walletSucceeded'])
|
|
219
222
|
})
|
|
223
|
+
|
|
224
|
+
// ONC-57: observability breadcrumb for Token-2022 transfers (the builder
|
|
225
|
+
// emits a bare transferChecked, which would fail at the wallet if a mint ever
|
|
226
|
+
// enabled a transfer hook — this log lets us spot/correlate that in prod).
|
|
227
|
+
it('emits a token-2022 breadcrumb when sending a Token-2022 Solana transfer', async () => {
|
|
228
|
+
connectSession()
|
|
229
|
+
const token2022Request = {
|
|
230
|
+
from: '0x123',
|
|
231
|
+
to: 'destOwner',
|
|
232
|
+
amount: BigInt(1),
|
|
233
|
+
blockhash: 'bh',
|
|
234
|
+
tokenMint: 'mint',
|
|
235
|
+
tokenDecimals: 6,
|
|
236
|
+
tokenProgram: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'
|
|
237
|
+
} as unknown as TransactionRequest
|
|
238
|
+
|
|
239
|
+
await transactionService.sendTransaction(token2022Request)
|
|
240
|
+
|
|
241
|
+
expect(logs.map(l => l.message)).toContain('solana token-2022 transfer')
|
|
242
|
+
// The breadcrumb does not interfere with the normal handoff.
|
|
243
|
+
expect(events).toEqual(['awaitingWallet', 'walletSucceeded'])
|
|
244
|
+
})
|
|
245
|
+
|
|
246
|
+
it('does NOT emit the breadcrumb for a legacy SPL (TOKEN_PROGRAM) transfer', async () => {
|
|
247
|
+
connectSession()
|
|
248
|
+
const legacyRequest = {
|
|
249
|
+
from: '0x123',
|
|
250
|
+
to: 'destOwner',
|
|
251
|
+
amount: BigInt(1),
|
|
252
|
+
blockhash: 'bh',
|
|
253
|
+
tokenMint: 'mint',
|
|
254
|
+
tokenDecimals: 6,
|
|
255
|
+
tokenProgram: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
|
|
256
|
+
} as unknown as TransactionRequest
|
|
257
|
+
|
|
258
|
+
await transactionService.sendTransaction(legacyRequest)
|
|
259
|
+
|
|
260
|
+
expect(logs.map(l => l.message)).not.toContain('solana token-2022 transfer')
|
|
261
|
+
})
|
|
262
|
+
|
|
263
|
+
it('does NOT emit the breadcrumb for a non-Solana (EVM) transfer', async () => {
|
|
264
|
+
connectSession()
|
|
265
|
+
await transactionService.sendTransaction(request)
|
|
266
|
+
expect(logs.map(l => l.message)).not.toContain('solana token-2022 transfer')
|
|
267
|
+
})
|
|
268
|
+
|
|
269
|
+
it('emits the breadcrumb for a smart-funding request carrying a Token-2022 sub-transfer', async () => {
|
|
270
|
+
connectSession()
|
|
271
|
+
const genericRequest = {
|
|
272
|
+
feePayer: '0x123',
|
|
273
|
+
blockhash: 'bh',
|
|
274
|
+
instructions: [],
|
|
275
|
+
additionalRequests: [
|
|
276
|
+
{
|
|
277
|
+
from: '0x123',
|
|
278
|
+
to: 'destOwner',
|
|
279
|
+
amount: BigInt(1),
|
|
280
|
+
blockhash: 'bh',
|
|
281
|
+
tokenMint: 'mint',
|
|
282
|
+
tokenDecimals: 6,
|
|
283
|
+
tokenProgram: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
} as unknown as TransactionRequest
|
|
287
|
+
|
|
288
|
+
await transactionService.sendTransaction(genericRequest)
|
|
289
|
+
|
|
290
|
+
expect(logs.map(l => l.message)).toContain('solana token-2022 transfer')
|
|
291
|
+
})
|
|
220
292
|
})
|
|
221
293
|
|
|
222
294
|
describe('TransactionService.signSolanaTransactionBytes', () => {
|
|
@@ -17,6 +17,10 @@ import {
|
|
|
17
17
|
getSessionConnector
|
|
18
18
|
} from '../utils/validate-wallet-session'
|
|
19
19
|
|
|
20
|
+
// Token-2022 program id — a literal to avoid an @solana/spl-token dep in core.
|
|
21
|
+
const SOLANA_TOKEN_2022_PROGRAM_ID =
|
|
22
|
+
'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'
|
|
23
|
+
|
|
20
24
|
/**
|
|
21
25
|
* Service for handling transaction operations across different connector types.
|
|
22
26
|
*
|
|
@@ -62,6 +66,24 @@ export class TransactionService {
|
|
|
62
66
|
this.usingIntegratedBrowser
|
|
63
67
|
)
|
|
64
68
|
|
|
69
|
+
// Breadcrumb: Token-2022 transfers use a bare transferChecked (no
|
|
70
|
+
// transfer-hook extra-account-metas) — log them to correlate any failures.
|
|
71
|
+
// Covers both a direct token transfer and a smart-funding request, whose
|
|
72
|
+
// Token-2022 transfer is nested in `additionalRequests`.
|
|
73
|
+
const isToken2022 = (req: TransactionRequest): boolean =>
|
|
74
|
+
'tokenMint' in req && req.tokenProgram === SOLANA_TOKEN_2022_PROGRAM_ID
|
|
75
|
+
const sendsToken2022 =
|
|
76
|
+
isToken2022(request) ||
|
|
77
|
+
('additionalRequests' in request &&
|
|
78
|
+
(request.additionalRequests ?? []).some(isToken2022))
|
|
79
|
+
if (sendsToken2022) {
|
|
80
|
+
this.eventManager.emit('log', {
|
|
81
|
+
level: 'info',
|
|
82
|
+
message: 'solana token-2022 transfer',
|
|
83
|
+
args: []
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
|
|
65
87
|
const result = await instrumentHandoff(
|
|
66
88
|
{
|
|
67
89
|
eventManager: this.eventManager,
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated from package.json by scripts/generate-version.mjs — do not edit.
|
|
2
|
-
export const UWC_CORE_VERSION = '1.
|
|
2
|
+
export const UWC_CORE_VERSION = '1.5.0'
|