@meshconnect/uwc-core 0.9.0 → 0.9.1-snapshot.95b8dbe

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 +13 -19
  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
@@ -39,7 +39,11 @@ const mockSessionManager = {
39
39
 
40
40
  const mockEventManager = {
41
41
  subscribe: vi.fn().mockReturnValue(() => {}),
42
- notify: vi.fn()
42
+ notify: vi.fn(),
43
+ emit: vi.fn(),
44
+ on: vi.fn().mockReturnValue(() => {}),
45
+ off: vi.fn(),
46
+ once: vi.fn().mockReturnValue(() => {})
43
47
  }
44
48
 
45
49
  const mockConnectionService = {
@@ -139,8 +143,7 @@ describe('UniversalWalletConnector', () => {
139
143
  let mockWalletConnectConfig: WalletConnectConfig
140
144
 
141
145
  beforeEach(() => {
142
- ;(UniversalWalletConnector as any).instanceCount = 0
143
- ;(UniversalWalletConnector as any).hasWarnedAboutMultipleInstances = false
146
+ UniversalWalletConnector.resetInstance()
144
147
 
145
148
  mockNetworks = [
146
149
  {
@@ -424,6 +427,87 @@ describe('UniversalWalletConnector', () => {
424
427
  expect(typeof connector.sendTransaction).toBe('function')
425
428
  expect(typeof connector.isConnectionModeAvailable).toBe('function')
426
429
  expect(typeof connector.getActiveWalletCapabilities).toBe('function')
430
+ expect(typeof connector.on).toBe('function')
431
+ expect(typeof connector.once).toBe('function')
432
+ expect(typeof connector.off).toBe('function')
433
+ })
434
+ })
435
+
436
+ describe('getInstance singleton factory', () => {
437
+ it('creates an instance on first call and reuses it afterwards', () => {
438
+ const a = UniversalWalletConnector.getInstance({
439
+ networks: mockNetworks,
440
+ wallets: mockWallets
441
+ })
442
+ const b = UniversalWalletConnector.getInstance({
443
+ networks: mockNetworks,
444
+ wallets: mockWallets
445
+ })
446
+ expect(a).toBe(b)
447
+ })
448
+
449
+ it('throws when called before any instance exists and no config is given', () => {
450
+ expect(() => UniversalWalletConnector.getInstance()).toThrow(
451
+ /getInstance.*before an instance existed/
452
+ )
453
+ })
454
+
455
+ it('resetInstance() clears the shared reference', () => {
456
+ const first = UniversalWalletConnector.getInstance({
457
+ networks: mockNetworks,
458
+ wallets: mockWallets
459
+ })
460
+ UniversalWalletConnector.resetInstance()
461
+ const second = UniversalWalletConnector.getInstance({
462
+ networks: mockNetworks,
463
+ wallets: mockWallets
464
+ })
465
+ expect(second).not.toBe(first)
466
+ })
467
+
468
+ it('adopts a `new`-constructed instance as the singleton', () => {
469
+ const created = new UniversalWalletConnector(mockNetworks, mockWallets)
470
+ expect(UniversalWalletConnector.getInstance()).toBe(created)
471
+ })
472
+ })
473
+
474
+ describe('config-object constructor', () => {
475
+ it('accepts the { networks, wallets, ... } form', () => {
476
+ const connector = new UniversalWalletConnector({
477
+ networks: mockNetworks,
478
+ wallets: mockWallets,
479
+ walletConnectConfig: mockWalletConnectConfig
480
+ })
481
+ expect(connector).toBeInstanceOf(UniversalWalletConnector)
482
+ })
483
+ })
484
+
485
+ describe('AbortSignal support', () => {
486
+ it('connect rejects immediately when signal is already aborted', async () => {
487
+ const connector = new UniversalWalletConnector(mockNetworks, mockWallets)
488
+ const controller = new AbortController()
489
+ controller.abort()
490
+
491
+ // ConnectionService.connect is mocked to return undefined by default,
492
+ // so the abort check is what surfaces the error.
493
+ mockConnectionService.connect = vi.fn().mockImplementation(
494
+ async (
495
+ _m: unknown,
496
+ _w: unknown,
497
+ _n: unknown,
498
+ options?: {
499
+ signal?: AbortSignal
500
+ }
501
+ ) => {
502
+ options?.signal?.throwIfAborted()
503
+ }
504
+ )
505
+
506
+ await expect(
507
+ connector.connect('injected', 'metamask', undefined, {
508
+ signal: controller.signal
509
+ })
510
+ ).rejects.toThrow()
427
511
  })
428
512
  })
429
513