@meshconnect/uwc-core 0.7.4 → 0.7.5-snapshot.c90b3e8

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.
Files changed (50) hide show
  1. package/README.md +924 -0
  2. package/dist/events.d.ts +71 -0
  3. package/dist/events.d.ts.map +1 -0
  4. package/dist/events.js +2 -0
  5. package/dist/events.js.map +1 -0
  6. package/dist/index.d.ts +2 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/managers/event-manager.d.ts +22 -3
  11. package/dist/managers/event-manager.d.ts.map +1 -1
  12. package/dist/managers/event-manager.js +63 -7
  13. package/dist/managers/event-manager.js.map +1 -1
  14. package/dist/services/connection-service.d.ts +5 -2
  15. package/dist/services/connection-service.d.ts.map +1 -1
  16. package/dist/services/connection-service.js +19 -7
  17. package/dist/services/connection-service.js.map +1 -1
  18. package/dist/services/network-switch-service.d.ts +2 -1
  19. package/dist/services/network-switch-service.d.ts.map +1 -1
  20. package/dist/services/network-switch-service.js +15 -3
  21. package/dist/services/network-switch-service.js.map +1 -1
  22. package/dist/services/signature-service.d.ts +3 -1
  23. package/dist/services/signature-service.d.ts.map +1 -1
  24. package/dist/services/signature-service.js +10 -5
  25. package/dist/services/signature-service.js.map +1 -1
  26. package/dist/services/transaction-service.d.ts +3 -1
  27. package/dist/services/transaction-service.d.ts.map +1 -1
  28. package/dist/services/transaction-service.js +10 -5
  29. package/dist/services/transaction-service.js.map +1 -1
  30. package/dist/services/wallet-capabilities-service.d.ts +2 -1
  31. package/dist/services/wallet-capabilities-service.d.ts.map +1 -1
  32. package/dist/services/wallet-capabilities-service.js +9 -2
  33. package/dist/services/wallet-capabilities-service.js.map +1 -1
  34. package/dist/universal-wallet-connector.d.ts +52 -6
  35. package/dist/universal-wallet-connector.d.ts.map +1 -1
  36. package/dist/universal-wallet-connector.js +271 -177
  37. package/dist/universal-wallet-connector.js.map +1 -1
  38. package/package.json +5 -5
  39. package/src/events.ts +73 -0
  40. package/src/index.ts +11 -3
  41. package/src/managers/event-manager.test.ts +70 -0
  42. package/src/managers/event-manager.ts +80 -9
  43. package/src/services/connection-service.test.ts +11 -3
  44. package/src/services/connection-service.ts +34 -7
  45. package/src/services/network-switch-service.ts +22 -3
  46. package/src/services/signature-service.ts +13 -5
  47. package/src/services/transaction-service.ts +13 -5
  48. package/src/services/wallet-capabilities-service.ts +14 -2
  49. package/src/universal-wallet-connector.test.ts +87 -3
  50. package/src/universal-wallet-connector.ts +395 -204
@@ -29,7 +29,11 @@ const mockSessionManager = {
29
29
 
30
30
  const mockEventManager = {
31
31
  subscribe: vi.fn().mockReturnValue(() => {}),
32
- notify: vi.fn()
32
+ notify: vi.fn(),
33
+ emit: vi.fn(),
34
+ on: vi.fn().mockReturnValue(() => {}),
35
+ off: vi.fn(),
36
+ once: vi.fn().mockReturnValue(() => {})
33
37
  }
34
38
 
35
39
  const mockConnectionService = {
@@ -117,8 +121,7 @@ describe('UniversalWalletConnector', () => {
117
121
  let mockWalletConnectConfig: WalletConnectConfig
118
122
 
119
123
  beforeEach(() => {
120
- ;(UniversalWalletConnector as any).instanceCount = 0
121
- ;(UniversalWalletConnector as any).hasWarnedAboutMultipleInstances = false
124
+ UniversalWalletConnector.resetInstance()
122
125
 
123
126
  mockNetworks = [
124
127
  {
@@ -402,6 +405,87 @@ describe('UniversalWalletConnector', () => {
402
405
  expect(typeof connector.sendTransaction).toBe('function')
403
406
  expect(typeof connector.isConnectionModeAvailable).toBe('function')
404
407
  expect(typeof connector.getActiveWalletCapabilities).toBe('function')
408
+ expect(typeof connector.on).toBe('function')
409
+ expect(typeof connector.once).toBe('function')
410
+ expect(typeof connector.off).toBe('function')
411
+ })
412
+ })
413
+
414
+ describe('getInstance singleton factory', () => {
415
+ it('creates an instance on first call and reuses it afterwards', () => {
416
+ const a = UniversalWalletConnector.getInstance({
417
+ networks: mockNetworks,
418
+ wallets: mockWallets
419
+ })
420
+ const b = UniversalWalletConnector.getInstance({
421
+ networks: mockNetworks,
422
+ wallets: mockWallets
423
+ })
424
+ expect(a).toBe(b)
425
+ })
426
+
427
+ it('throws when called before any instance exists and no config is given', () => {
428
+ expect(() => UniversalWalletConnector.getInstance()).toThrow(
429
+ /getInstance.*before an instance existed/
430
+ )
431
+ })
432
+
433
+ it('resetInstance() clears the shared reference', () => {
434
+ const first = UniversalWalletConnector.getInstance({
435
+ networks: mockNetworks,
436
+ wallets: mockWallets
437
+ })
438
+ UniversalWalletConnector.resetInstance()
439
+ const second = UniversalWalletConnector.getInstance({
440
+ networks: mockNetworks,
441
+ wallets: mockWallets
442
+ })
443
+ expect(second).not.toBe(first)
444
+ })
445
+
446
+ it('adopts a `new`-constructed instance as the singleton', () => {
447
+ const created = new UniversalWalletConnector(mockNetworks, mockWallets)
448
+ expect(UniversalWalletConnector.getInstance()).toBe(created)
449
+ })
450
+ })
451
+
452
+ describe('config-object constructor', () => {
453
+ it('accepts the { networks, wallets, ... } form', () => {
454
+ const connector = new UniversalWalletConnector({
455
+ networks: mockNetworks,
456
+ wallets: mockWallets,
457
+ walletConnectConfig: mockWalletConnectConfig
458
+ })
459
+ expect(connector).toBeInstanceOf(UniversalWalletConnector)
460
+ })
461
+ })
462
+
463
+ describe('AbortSignal support', () => {
464
+ it('connect rejects immediately when signal is already aborted', async () => {
465
+ const connector = new UniversalWalletConnector(mockNetworks, mockWallets)
466
+ const controller = new AbortController()
467
+ controller.abort()
468
+
469
+ // ConnectionService.connect is mocked to return undefined by default,
470
+ // so the abort check is what surfaces the error.
471
+ mockConnectionService.connect = vi.fn().mockImplementation(
472
+ async (
473
+ _m: unknown,
474
+ _w: unknown,
475
+ _n: unknown,
476
+ options?: {
477
+ signal?: AbortSignal
478
+ }
479
+ ) => {
480
+ options?.signal?.throwIfAborted()
481
+ }
482
+ )
483
+
484
+ await expect(
485
+ connector.connect('injected', 'metamask', undefined, {
486
+ signal: controller.signal
487
+ })
488
+ ).rejects.toThrow()
405
489
  })
406
490
  })
407
491