@meshconnect/uwc-core 1.4.0 → 1.4.1-snapshot.089e410

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"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;AAW1D;;;;;;;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;IAqC7B;;;;OAIG;IACG,0BAA0B,CAC9B,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;CAqBvB"}
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;AAmB1D;;;;;;;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;IAsD7B;;;;OAIG;IACG,0BAA0B,CAC9B,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;CAqBvB"}
@@ -1,6 +1,12 @@
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
+ /**
5
+ * Token-2022 (SPL Token Extensions) program id. Kept as a literal so core takes
6
+ * no @solana/spl-token dependency — used only to tag an observability
7
+ * breadcrumb, never to build a transaction.
8
+ */
9
+ const SOLANA_TOKEN_2022_PROGRAM_ID = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
4
10
  /**
5
11
  * Service for handling transaction operations across different connector types.
6
12
  *
@@ -42,6 +48,20 @@ export class TransactionService {
42
48
  // Validation, not wallet work — a missing provider must not enter the funnel.
43
49
  // undefined only for tonConnect, whose connector resolves its own provider.
44
50
  const provider = resolveSessionProvider(session, this.usingIntegratedBrowser);
51
+ // Breadcrumb: a Token-2022 transfer is about to be handed to the wallet.
52
+ // The Solana builder emits a bare transferChecked (no transfer-hook
53
+ // extra-account-metas); if a mint ever enables a transfer hook, that
54
+ // transfer fails at the wallet with a generic error. This log lets us spot
55
+ // Token-2022 transfer volume — and correlate any failure spike — in
56
+ // telemetry without adding an RPC lookup here. See ONC-57.
57
+ if ('tokenMint' in request &&
58
+ request.tokenProgram === SOLANA_TOKEN_2022_PROGRAM_ID) {
59
+ this.eventManager.emit('log', {
60
+ level: 'info',
61
+ message: 'solana token-2022 transfer',
62
+ args: []
63
+ });
64
+ }
45
65
  const result = await instrumentHandoff({
46
66
  eventManager: this.eventManager,
47
67
  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.4.0";
1
+ export declare const UWC_CORE_VERSION = "1.4.1";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Generated from package.json by scripts/generate-version.mjs — do not edit.
2
- export const UWC_CORE_VERSION = '1.4.0';
2
+ export const UWC_CORE_VERSION = '1.4.1';
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/uwc-core",
3
- "version": "1.4.0",
3
+ "version": "1.4.1-snapshot.089e410",
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.5",
20
- "@meshconnect/uwc-ton-connector": "0.7.3",
21
- "@meshconnect/uwc-types": "0.20.0",
22
- "@meshconnect/uwc-wallet-connect-connector": "0.10.0"
19
+ "@meshconnect/uwc-ton-connector": "0.7.3-snapshot.089e410",
20
+ "@meshconnect/uwc-types": "0.20.0-snapshot.089e410",
21
+ "@meshconnect/uwc-wallet-connect-connector": "0.11.0-snapshot.089e410",
22
+ "@meshconnect/uwc-injected-connector": "0.16.5-snapshot.089e410"
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,51 @@ 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
+ })
220
268
  })
221
269
 
222
270
  describe('TransactionService.signSolanaTransactionBytes', () => {
@@ -17,6 +17,14 @@ import {
17
17
  getSessionConnector
18
18
  } from '../utils/validate-wallet-session'
19
19
 
20
+ /**
21
+ * Token-2022 (SPL Token Extensions) program id. Kept as a literal so core takes
22
+ * no @solana/spl-token dependency — used only to tag an observability
23
+ * breadcrumb, never to build a transaction.
24
+ */
25
+ const SOLANA_TOKEN_2022_PROGRAM_ID =
26
+ 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'
27
+
20
28
  /**
21
29
  * Service for handling transaction operations across different connector types.
22
30
  *
@@ -62,6 +70,23 @@ export class TransactionService {
62
70
  this.usingIntegratedBrowser
63
71
  )
64
72
 
73
+ // Breadcrumb: a Token-2022 transfer is about to be handed to the wallet.
74
+ // The Solana builder emits a bare transferChecked (no transfer-hook
75
+ // extra-account-metas); if a mint ever enables a transfer hook, that
76
+ // transfer fails at the wallet with a generic error. This log lets us spot
77
+ // Token-2022 transfer volume — and correlate any failure spike — in
78
+ // telemetry without adding an RPC lookup here. See ONC-57.
79
+ if (
80
+ 'tokenMint' in request &&
81
+ request.tokenProgram === SOLANA_TOKEN_2022_PROGRAM_ID
82
+ ) {
83
+ this.eventManager.emit('log', {
84
+ level: 'info',
85
+ message: 'solana token-2022 transfer',
86
+ args: []
87
+ })
88
+ }
89
+
65
90
  const result = await instrumentHandoff(
66
91
  {
67
92
  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.4.0'
2
+ export const UWC_CORE_VERSION = '1.4.1'