@spacesops/wdk-react-native-core 1.0.0-beta.69 → 1.0.0-beta.70

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 (140) hide show
  1. package/dist/hooks/useBalance.js +50 -7
  2. package/dist/hooks/useBalance.js.map +1 -1
  3. package/dist/hooks/useTransactions.d.ts +21 -0
  4. package/dist/hooks/useTransactions.js +64 -0
  5. package/dist/hooks/useTransactions.js.map +1 -0
  6. package/dist/index.d.ts +5 -2
  7. package/dist/index.js +3 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/provider/WdkAppProvider.d.ts +7 -2
  10. package/dist/provider/WdkAppProvider.js +6 -1
  11. package/dist/provider/WdkAppProvider.js.map +1 -1
  12. package/dist/services/transactionService.d.ts +27 -0
  13. package/dist/services/transactionService.js +154 -0
  14. package/dist/services/transactionService.js.map +1 -0
  15. package/dist/store/indexerConfigStore.d.ts +7 -0
  16. package/dist/store/indexerConfigStore.js +14 -0
  17. package/dist/store/indexerConfigStore.js.map +1 -0
  18. package/dist/types.d.ts +33 -0
  19. package/dist/utils/constants.d.ts +18 -0
  20. package/dist/utils/constants.js +18 -0
  21. package/dist/utils/constants.js.map +1 -1
  22. package/dist/utils/mmkvKeyManager.js +3 -3
  23. package/dist/utils/mmkvKeyManager.js.map +1 -1
  24. package/dist/utils/operationMutex.js.map +1 -1
  25. package/dist/utils/retryUtils.d.ts +19 -0
  26. package/dist/utils/retryUtils.js +55 -0
  27. package/dist/utils/retryUtils.js.map +1 -0
  28. package/dist/utils/schemas.d.ts +15 -3
  29. package/dist/utils/schemas.js +27 -2
  30. package/dist/utils/schemas.js.map +1 -1
  31. package/dist/utils/typeGuards.d.ts +1 -1
  32. package/dist/utils/typeGuards.js +3 -3
  33. package/dist/utils/typeGuards.js.map +1 -1
  34. package/package.json +2 -1
  35. package/src/hooks/useBalance.ts +2 -3
  36. package/src/services/transactionService.ts +2 -1
  37. package/src/utils/mmkvKeyManager.ts +3 -3
  38. package/src/utils/operationMutex.ts +1 -1
  39. package/dist/__mocks__/react.d.ts +0 -40
  40. package/dist/__mocks__/react.js +0 -33
  41. package/dist/__mocks__/react.js.map +0 -1
  42. package/dist/__mocks__/secureStorage.d.ts +0 -27
  43. package/dist/__mocks__/secureStorage.js +0 -81
  44. package/dist/__mocks__/secureStorage.js.map +0 -1
  45. package/dist/__tests__/hooks/useBalance.test.d.ts +0 -6
  46. package/dist/__tests__/hooks/useBalance.test.js +0 -217
  47. package/dist/__tests__/hooks/useBalance.test.js.map +0 -1
  48. package/dist/__tests__/hooks/useWallet.test.d.ts +0 -6
  49. package/dist/__tests__/hooks/useWallet.test.js +0 -105
  50. package/dist/__tests__/hooks/useWallet.test.js.map +0 -1
  51. package/dist/__tests__/hooks/useWalletManager.test.d.ts +0 -6
  52. package/dist/__tests__/hooks/useWalletManager.test.js +0 -193
  53. package/dist/__tests__/hooks/useWalletManager.test.js.map +0 -1
  54. package/dist/__tests__/hooks/useWdkApp.test.d.ts +0 -6
  55. package/dist/__tests__/hooks/useWdkApp.test.js +0 -55
  56. package/dist/__tests__/hooks/useWdkApp.test.js.map +0 -1
  57. package/dist/__tests__/hooks/useWorklet.test.d.ts +0 -6
  58. package/dist/__tests__/hooks/useWorklet.test.js +0 -168
  59. package/dist/__tests__/hooks/useWorklet.test.js.map +0 -1
  60. package/dist/__tests__/provider/WdkAppProvider.test.d.ts +0 -6
  61. package/dist/__tests__/provider/WdkAppProvider.test.js +0 -57
  62. package/dist/__tests__/provider/WdkAppProvider.test.js.map +0 -1
  63. package/dist/__tests__/services/accountService.test.d.ts +0 -6
  64. package/dist/__tests__/services/accountService.test.js +0 -263
  65. package/dist/__tests__/services/accountService.test.js.map +0 -1
  66. package/dist/__tests__/services/addressService.test.d.ts +0 -6
  67. package/dist/__tests__/services/addressService.test.js +0 -258
  68. package/dist/__tests__/services/addressService.test.js.map +0 -1
  69. package/dist/__tests__/services/balanceService.test.d.ts +0 -6
  70. package/dist/__tests__/services/balanceService.test.js +0 -333
  71. package/dist/__tests__/services/balanceService.test.js.map +0 -1
  72. package/dist/__tests__/services/walletSetupService.test.d.ts +0 -6
  73. package/dist/__tests__/services/walletSetupService.test.js +0 -304
  74. package/dist/__tests__/services/walletSetupService.test.js.map +0 -1
  75. package/dist/__tests__/services/walletSwitchingService.test.d.ts +0 -6
  76. package/dist/__tests__/services/walletSwitchingService.test.js +0 -209
  77. package/dist/__tests__/services/walletSwitchingService.test.js.map +0 -1
  78. package/dist/__tests__/services/workletLifecycleService.test.d.ts +0 -6
  79. package/dist/__tests__/services/workletLifecycleService.test.js +0 -451
  80. package/dist/__tests__/services/workletLifecycleService.test.js.map +0 -1
  81. package/dist/__tests__/setup.d.ts +0 -4
  82. package/dist/__tests__/setup.js +0 -49
  83. package/dist/__tests__/setup.js.map +0 -1
  84. package/dist/__tests__/storage/mmkvStorage.test.d.ts +0 -6
  85. package/dist/__tests__/storage/mmkvStorage.test.js +0 -213
  86. package/dist/__tests__/storage/mmkvStorage.test.js.map +0 -1
  87. package/dist/__tests__/store/walletStore.test.d.ts +0 -4
  88. package/dist/__tests__/store/walletStore.test.js +0 -86
  89. package/dist/__tests__/store/walletStore.test.js.map +0 -1
  90. package/dist/__tests__/store/workletStore.test.d.ts +0 -4
  91. package/dist/__tests__/store/workletStore.test.js +0 -255
  92. package/dist/__tests__/store/workletStore.test.js.map +0 -1
  93. package/dist/__tests__/types/hrpc.test.d.ts +0 -4
  94. package/dist/__tests__/types/hrpc.test.js +0 -99
  95. package/dist/__tests__/types/hrpc.test.js.map +0 -1
  96. package/dist/__tests__/utils/balanceUtils.test.d.ts +0 -4
  97. package/dist/__tests__/utils/balanceUtils.test.js +0 -133
  98. package/dist/__tests__/utils/balanceUtils.test.js.map +0 -1
  99. package/dist/__tests__/utils/errorHandling.test.d.ts +0 -6
  100. package/dist/__tests__/utils/errorHandling.test.js +0 -119
  101. package/dist/__tests__/utils/errorHandling.test.js.map +0 -1
  102. package/dist/__tests__/utils/errorUtils.test.d.ts +0 -4
  103. package/dist/__tests__/utils/errorUtils.test.js +0 -133
  104. package/dist/__tests__/utils/errorUtils.test.js.map +0 -1
  105. package/dist/__tests__/utils/initializationState.test.d.ts +0 -6
  106. package/dist/__tests__/utils/initializationState.test.js +0 -243
  107. package/dist/__tests__/utils/initializationState.test.js.map +0 -1
  108. package/dist/__tests__/utils/jsonUtils.test.d.ts +0 -4
  109. package/dist/__tests__/utils/jsonUtils.test.js +0 -118
  110. package/dist/__tests__/utils/jsonUtils.test.js.map +0 -1
  111. package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +0 -6
  112. package/dist/__tests__/utils/mmkvKeyManager.test.js +0 -158
  113. package/dist/__tests__/utils/mmkvKeyManager.test.js.map +0 -1
  114. package/dist/__tests__/utils/mnemonicUtils.test.d.ts +0 -4
  115. package/dist/__tests__/utils/mnemonicUtils.test.js +0 -40
  116. package/dist/__tests__/utils/mnemonicUtils.test.js.map +0 -1
  117. package/dist/__tests__/utils/raceConditions.test.d.ts +0 -6
  118. package/dist/__tests__/utils/raceConditions.test.js +0 -239
  119. package/dist/__tests__/utils/raceConditions.test.js.map +0 -1
  120. package/dist/__tests__/utils/result.test.d.ts +0 -4
  121. package/dist/__tests__/utils/result.test.js +0 -66
  122. package/dist/__tests__/utils/result.test.js.map +0 -1
  123. package/dist/__tests__/utils/schemas.test.d.ts +0 -4
  124. package/dist/__tests__/utils/schemas.test.js +0 -66
  125. package/dist/__tests__/utils/schemas.test.js.map +0 -1
  126. package/dist/__tests__/utils/storeHelpers.test.d.ts +0 -4
  127. package/dist/__tests__/utils/storeHelpers.test.js +0 -227
  128. package/dist/__tests__/utils/storeHelpers.test.js.map +0 -1
  129. package/dist/__tests__/utils/typeGuards.test.d.ts +0 -4
  130. package/dist/__tests__/utils/typeGuards.test.js +0 -175
  131. package/dist/__tests__/utils/typeGuards.test.js.map +0 -1
  132. package/dist/__tests__/utils/validation.test.d.ts +0 -4
  133. package/dist/__tests__/utils/validation.test.js +0 -167
  134. package/dist/__tests__/utils/validation.test.js.map +0 -1
  135. package/dist/__tests__/utils/walletUtils.test.d.ts +0 -4
  136. package/dist/__tests__/utils/walletUtils.test.js +0 -156
  137. package/dist/__tests__/utils/walletUtils.test.js.map +0 -1
  138. package/dist/utils/types.js +0 -6
  139. package/dist/utils/utils/schemas.js +0 -173
  140. package/dist/utils/utils/validation.js +0 -151
@@ -1,239 +0,0 @@
1
- /**
2
- * Tests for race conditions in wallet operations
3
- *
4
- * Tests concurrent operations, state synchronization, and mutex behavior
5
- */
6
- import { WalletSwitchingService } from '../../services/walletSwitchingService';
7
- import { getWalletStore } from '../../store/walletStore';
8
- import { acquireOperationMutex, withOperationMutex, isOperationInProgress } from '../../utils/operationMutex';
9
- // Mock dependencies
10
- jest.mock('../../services/walletSetupService', () => ({
11
- WalletSetupService: {
12
- hasWallet: jest.fn(),
13
- loadExistingWallet: jest.fn(),
14
- clearCredentialsCache: jest.fn(),
15
- },
16
- }));
17
- jest.mock('../../services/workletLifecycleService', () => ({
18
- WorkletLifecycleService: {
19
- ensureWorkletStarted: jest.fn(),
20
- initializeWDK: jest.fn(),
21
- },
22
- }));
23
- jest.mock('../../store/walletStore', () => {
24
- const actual = jest.requireActual('../../store/walletStore');
25
- return {
26
- ...actual,
27
- getWalletStore: jest.fn(),
28
- };
29
- });
30
- jest.mock('../../utils/logger', () => ({
31
- log: jest.fn(),
32
- logError: jest.fn(),
33
- logWarn: jest.fn(),
34
- }));
35
- describe('Race Conditions', () => {
36
- let mockWalletStore;
37
- beforeEach(() => {
38
- jest.clearAllMocks();
39
- mockWalletStore = {
40
- getState: jest.fn(() => ({
41
- activeWalletId: null,
42
- walletLoadingState: { type: 'not_loaded' },
43
- isOperationInProgress: false,
44
- currentOperation: null,
45
- })),
46
- setState: jest.fn((updater) => {
47
- const currentState = mockWalletStore.getState();
48
- const newState = typeof updater === 'function' ? updater(currentState) : updater;
49
- const updatedState = { ...currentState, ...newState };
50
- mockWalletStore.getState.mockReturnValue(updatedState);
51
- }),
52
- };
53
- getWalletStore.mockReturnValue(mockWalletStore);
54
- });
55
- describe('Operation Mutex', () => {
56
- it('should prevent concurrent operations', () => {
57
- const mutex1 = acquireOperationMutex('operation1');
58
- expect(mutex1.acquired).toBe(true);
59
- expect(isOperationInProgress()).toBe(true);
60
- const mutex2 = acquireOperationMutex('operation2');
61
- expect(mutex2.acquired).toBe(false);
62
- expect(mutex2.currentOperation).toBe('operation1');
63
- mutex1.release();
64
- expect(isOperationInProgress()).toBe(false);
65
- const mutex3 = acquireOperationMutex('operation2');
66
- expect(mutex3.acquired).toBe(true);
67
- });
68
- it('should allow operation after release', () => {
69
- const mutex1 = acquireOperationMutex('operation1');
70
- expect(mutex1.acquired).toBe(true);
71
- mutex1.release();
72
- expect(isOperationInProgress()).toBe(false);
73
- const mutex2 = acquireOperationMutex('operation2');
74
- expect(mutex2.acquired).toBe(true);
75
- });
76
- it('should prevent release of wrong operation', () => {
77
- const mutex1 = acquireOperationMutex('operation1');
78
- expect(mutex1.acquired).toBe(true);
79
- const mutex2 = acquireOperationMutex('operation2');
80
- expect(mutex2.acquired).toBe(false);
81
- // Try to release with wrong operation - should be no-op
82
- mutex2.release();
83
- expect(isOperationInProgress()).toBe(true);
84
- // Correct release
85
- mutex1.release();
86
- expect(isOperationInProgress()).toBe(false);
87
- });
88
- it('should handle withOperationMutex correctly', async () => {
89
- const operation = jest.fn().mockResolvedValue('result');
90
- const result = await withOperationMutex('test-operation', operation);
91
- expect(result).toBe('result');
92
- expect(operation).toHaveBeenCalledTimes(1);
93
- expect(isOperationInProgress()).toBe(false);
94
- });
95
- it('should prevent concurrent withOperationMutex calls', async () => {
96
- let operation1Resolved = false;
97
- let operation2Resolved = false;
98
- const operation1 = jest.fn().mockImplementation(async () => {
99
- await new Promise((resolve) => setTimeout(resolve, 100));
100
- operation1Resolved = true;
101
- return 'result1';
102
- });
103
- const operation2 = jest.fn().mockImplementation(async () => {
104
- await new Promise((resolve) => setTimeout(resolve, 50));
105
- operation2Resolved = true;
106
- return 'result2';
107
- });
108
- // Start both operations concurrently
109
- const promise1 = withOperationMutex('test-operation', operation1);
110
- const promise2 = withOperationMutex('test-operation', operation2);
111
- // Second operation should be blocked
112
- await expect(promise2).rejects.toThrow('Another operation is in progress');
113
- // First operation should complete
114
- const result1 = await promise1;
115
- expect(result1).toBe('result1');
116
- expect(operation1Resolved).toBe(true);
117
- expect(operation2Resolved).toBe(false);
118
- expect(operation2).not.toHaveBeenCalled();
119
- });
120
- });
121
- describe('Wallet Switching Race Conditions', () => {
122
- it('should prevent concurrent wallet switches', async () => {
123
- const { WalletSetupService } = require('../../services/walletSetupService');
124
- const { WorkletLifecycleService } = require('../../services/workletLifecycleService');
125
- const walletId1 = 'wallet-1';
126
- const walletId2 = 'wallet-2';
127
- const credentials = {
128
- encryptionKey: 'test-key',
129
- encryptedSeed: 'test-seed',
130
- };
131
- mockWalletStore.getState.mockReturnValue({
132
- activeWalletId: null,
133
- walletLoadingState: { type: 'not_loaded' },
134
- isOperationInProgress: false,
135
- currentOperation: null,
136
- });
137
- WalletSetupService.hasWallet.mockResolvedValue(true);
138
- WorkletLifecycleService.ensureWorkletStarted.mockResolvedValue(undefined);
139
- WalletSetupService.loadExistingWallet.mockResolvedValue(credentials);
140
- WorkletLifecycleService.initializeWDK.mockImplementation(async () => {
141
- // Simulate slow operation
142
- await new Promise((resolve) => setTimeout(resolve, 100));
143
- });
144
- // Start two concurrent switches
145
- const promise1 = WalletSwitchingService.switchToWallet(walletId1);
146
- const promise2 = WalletSwitchingService.switchToWallet(walletId2);
147
- // Second switch should be blocked by mutex
148
- await expect(promise2).rejects.toThrow('Another operation is in progress');
149
- // First switch should complete
150
- await promise1;
151
- expect(WalletSetupService.loadExistingWallet).toHaveBeenCalledWith(walletId1);
152
- expect(WalletSetupService.loadExistingWallet).not.toHaveBeenCalledWith(walletId2);
153
- });
154
- it('should handle rapid sequential wallet switches', async () => {
155
- const { WalletSetupService } = require('../../services/walletSetupService');
156
- const { WorkletLifecycleService } = require('../../services/workletLifecycleService');
157
- const walletId1 = 'wallet-1';
158
- const walletId2 = 'wallet-2';
159
- const credentials = {
160
- encryptionKey: 'test-key',
161
- encryptedSeed: 'test-seed',
162
- };
163
- WalletSetupService.hasWallet.mockResolvedValue(true);
164
- WorkletLifecycleService.ensureWorkletStarted.mockResolvedValue(undefined);
165
- WalletSetupService.loadExistingWallet.mockResolvedValue(credentials);
166
- WorkletLifecycleService.initializeWDK.mockResolvedValue(undefined);
167
- // First switch
168
- mockWalletStore.getState.mockReturnValue({
169
- activeWalletId: null,
170
- walletLoadingState: { type: 'not_loaded' },
171
- isOperationInProgress: false,
172
- currentOperation: null,
173
- });
174
- await WalletSwitchingService.switchToWallet(walletId1);
175
- // Second switch (after first completes)
176
- mockWalletStore.getState.mockReturnValue({
177
- activeWalletId: walletId1,
178
- walletLoadingState: { type: 'ready', identifier: walletId1 },
179
- isOperationInProgress: false,
180
- currentOperation: null,
181
- });
182
- await WalletSwitchingService.switchToWallet(walletId2);
183
- expect(WalletSetupService.loadExistingWallet).toHaveBeenCalledWith(walletId1);
184
- expect(WalletSetupService.loadExistingWallet).toHaveBeenCalledWith(walletId2);
185
- });
186
- });
187
- describe('State Synchronization', () => {
188
- it('should maintain consistent state during concurrent updates', () => {
189
- const stateUpdates = [];
190
- mockWalletStore.setState.mockImplementation((updater) => {
191
- const currentState = mockWalletStore.getState();
192
- const newState = typeof updater === 'function' ? updater(currentState) : updater;
193
- stateUpdates.push(newState);
194
- Object.assign(currentState, newState);
195
- mockWalletStore.getState.mockReturnValue({ ...currentState });
196
- });
197
- // Simulate concurrent state updates
198
- const mutex1 = acquireOperationMutex('update1');
199
- if (mutex1.acquired) {
200
- mockWalletStore.setState({ activeWalletId: 'wallet-1' });
201
- mutex1.release();
202
- }
203
- const mutex2 = acquireOperationMutex('update2');
204
- if (mutex2.acquired) {
205
- mockWalletStore.setState({ activeWalletId: 'wallet-2' });
206
- mutex2.release();
207
- }
208
- // State should be consistent (last update wins, but no corruption)
209
- const finalState = mockWalletStore.getState();
210
- expect(finalState.activeWalletId).toBe('wallet-2');
211
- expect(stateUpdates.length).toBeGreaterThan(0);
212
- });
213
- it('should prevent state corruption during rapid mutations', () => {
214
- let operationCount = 0;
215
- mockWalletStore.setState.mockImplementation((updater) => {
216
- operationCount++;
217
- const currentState = mockWalletStore.getState();
218
- const newState = typeof updater === 'function' ? updater(currentState) : updater;
219
- Object.assign(currentState, newState);
220
- mockWalletStore.getState.mockReturnValue({ ...currentState });
221
- });
222
- // Rapid mutations
223
- for (let i = 0; i < 10; i++) {
224
- const mutex = acquireOperationMutex(`operation-${i}`);
225
- if (mutex.acquired) {
226
- mockWalletStore.setState({ activeWalletId: `wallet-${i}` });
227
- mutex.release();
228
- }
229
- }
230
- // State should be consistent
231
- const finalState = mockWalletStore.getState();
232
- expect(finalState.activeWalletId).toBe('wallet-9');
233
- // setState may be called more than 10 times due to internal state updates (walletLoadingState, etc.)
234
- // The important thing is that the final state is correct
235
- expect(operationCount).toBeGreaterThanOrEqual(10);
236
- });
237
- });
238
- });
239
- //# sourceMappingURL=raceConditions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"raceConditions.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/raceConditions.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAE7G,oBAAoB;AACpB,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;QACpB,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;KACjC;CACF,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,uBAAuB,EAAE;QACvB,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;KACzB;CACF,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAA;IAC5D,OAAO;QACL,GAAG,MAAM;QACT,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;KAC1B,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;IACd,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;IACnB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;CACnB,CAAC,CAAC,CAAA;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,eAAoB,CAAA;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;QAEpB,eAAe,GAAG;YAChB,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC1C,qBAAqB,EAAE,KAAK;gBAC5B,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YACH,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5B,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAA;gBAC/C,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBAChF,MAAM,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,QAAQ,EAAE,CAAA;gBACrD,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YACxD,CAAC,CAAC;SACH,CAEA;QAAC,cAA4B,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAClC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAElD,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAE3C,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAElC,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAE3C,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAElC,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEnC,wDAAwD;YACxD,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE1C,kBAAkB;YAClB,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;YAEvD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;YAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC7B,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,IAAI,kBAAkB,GAAG,KAAK,CAAA;YAC9B,IAAI,kBAAkB,GAAG,KAAK,CAAA;YAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBACzD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;gBACxD,kBAAkB,GAAG,IAAI,CAAA;gBACzB,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC,CAAA;YAEF,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBACzD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;gBACvD,kBAAkB,GAAG,IAAI,CAAA;gBACzB,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC,CAAA;YAEF,qCAAqC;YACrC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;YACjE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;YAEjE,qCAAqC;YACrC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAA;YAE1E,kCAAkC;YAClC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAA;YAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC/B,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QAC3C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAA;YAC3E,MAAM,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAA;YAErF,MAAM,SAAS,GAAG,UAAU,CAAA;YAC5B,MAAM,SAAS,GAAG,UAAU,CAAA;YAC5B,MAAM,WAAW,GAAG;gBAClB,aAAa,EAAE,UAAU;gBACzB,aAAa,EAAE,WAAW;aAC3B,CAAA;YAED,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACvC,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC1C,qBAAqB,EAAE,KAAK;gBAC5B,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAED;YAAC,kBAAkB,CAAC,SAAuB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CACnE;YAAC,uBAAuB,CAAC,oBAAkC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CACxF;YAAC,kBAAkB,CAAC,kBAAgC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CACnF;YAAC,uBAAuB,CAAC,aAA2B,CAAC,kBAAkB,CACtE,KAAK,IAAI,EAAE;gBACT,0BAA0B;gBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YAC1D,CAAC,CACF,CAAA;YAED,gCAAgC;YAChC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;YACjE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;YAEjE,2CAA2C;YAC3C,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAA;YAE1E,+BAA+B;YAC/B,MAAM,QAAQ,CAAA;YACd,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;YAC7E,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAA;YAC3E,MAAM,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAA;YAErF,MAAM,SAAS,GAAG,UAAU,CAAA;YAC5B,MAAM,SAAS,GAAG,UAAU,CAAA;YAC5B,MAAM,WAAW,GAAG;gBAClB,aAAa,EAAE,UAAU;gBACzB,aAAa,EAAE,WAAW;aAC3B,CAEA;YAAC,kBAAkB,CAAC,SAAuB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CACnE;YAAC,uBAAuB,CAAC,oBAAkC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CACxF;YAAC,kBAAkB,CAAC,kBAAgC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CACnF;YAAC,uBAAuB,CAAC,aAA2B,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;YAElF,eAAe;YACf,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACvC,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC1C,qBAAqB,EAAE,KAAK;gBAC5B,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,sBAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;YAEtD,wCAAwC;YACxC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACvC,cAAc,EAAE,SAAS;gBACzB,kBAAkB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;gBAC5D,qBAAqB,EAAE,KAAK;gBAC5B,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,sBAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;YAEtD,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;YAC7E,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QAC/E,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,YAAY,GAAU,EAAE,CAAA;YAE9B,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,OAAY,EAAE,EAAE;gBAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAA;gBAC/C,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBAChF,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC3B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;gBACrC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,CAAA;YAC/D,CAAC,CAAC,CAAA;YAEF,oCAAoC;YACpC,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;YAC/C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAA;gBACxD,MAAM,CAAC,OAAO,EAAE,CAAA;YAClB,CAAC;YAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;YAC/C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAA;gBACxD,MAAM,CAAC,OAAO,EAAE,CAAA;YAClB,CAAC;YAED,mEAAmE;YACnE,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAA;YAC7C,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAClD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,IAAI,cAAc,GAAG,CAAC,CAAA;YAEtB,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,OAAY,EAAE,EAAE;gBAC3D,cAAc,EAAE,CAAA;gBAChB,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAA;gBAC/C,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBAChF,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;gBACrC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,CAAA;YAC/D,CAAC,CAAC,CAAA;YAEF,kBAAkB;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;gBACrD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3D,KAAK,CAAC,OAAO,EAAE,CAAA;gBACjB,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAA;YAC7C,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAClD,qGAAqG;YACrG,yDAAyD;YACzD,MAAM,CAAC,cAAc,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Tests for Result type utilities
3
- */
4
- export {};
@@ -1,66 +0,0 @@
1
- /**
2
- * Tests for Result type utilities
3
- */
4
- import { ok, err, toResult, toResultSync } from '../../utils/result';
5
- describe('result', () => {
6
- describe('ok', () => {
7
- it('should create a success result', () => {
8
- const result = ok('test data');
9
- expect(result.success).toBe(true);
10
- expect(result.data).toBe('test data');
11
- expect(result.error).toBeUndefined();
12
- });
13
- });
14
- describe('err', () => {
15
- it('should create an error result', () => {
16
- const error = new Error('test error');
17
- const result = err(error);
18
- expect(result.success).toBe(false);
19
- expect(result.error).toBe(error);
20
- expect(result.data).toBeUndefined();
21
- });
22
- });
23
- describe('toResult', () => {
24
- it('should return ok result for successful async function', async () => {
25
- const fn = async () => 'success';
26
- const result = await toResult(fn);
27
- expect(result.success).toBe(true);
28
- if (result.success) {
29
- expect(result.data).toBe('success');
30
- }
31
- });
32
- it('should return err result for failed async function', async () => {
33
- const fn = async () => {
34
- throw new Error('async error');
35
- };
36
- const result = await toResult(fn);
37
- expect(result.success).toBe(false);
38
- if (!result.success) {
39
- expect(result.error).toBeInstanceOf(Error);
40
- expect(result.error.message).toBe('async error');
41
- }
42
- });
43
- });
44
- describe('toResultSync', () => {
45
- it('should return ok result for successful sync function', () => {
46
- const fn = () => 'success';
47
- const result = toResultSync(fn);
48
- expect(result.success).toBe(true);
49
- if (result.success) {
50
- expect(result.data).toBe('success');
51
- }
52
- });
53
- it('should return err result for failed sync function', () => {
54
- const fn = () => {
55
- throw new Error('sync error');
56
- };
57
- const result = toResultSync(fn);
58
- expect(result.success).toBe(false);
59
- if (!result.success) {
60
- expect(result.error).toBeInstanceOf(Error);
61
- expect(result.error.message).toBe('sync error');
62
- }
63
- });
64
- });
65
- });
66
- //# sourceMappingURL=result.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"result.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/result.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Tests for Zod schemas
3
- */
4
- export {};
@@ -1,66 +0,0 @@
1
- /**
2
- * Tests for Zod schemas
3
- */
4
- import { workletResponseSchema, balanceResponseSchema, accountMethodResponseSchema, } from '../../utils/schemas';
5
- describe('schemas', () => {
6
- describe('workletResponseSchema', () => {
7
- it('should validate valid worklet response', () => {
8
- const valid = {
9
- result: '{"data": "test"}',
10
- };
11
- expect(() => workletResponseSchema.parse(valid)).not.toThrow();
12
- });
13
- it('should validate worklet response with error', () => {
14
- const valid = {
15
- result: '{"data": "test"}',
16
- error: 'Some error',
17
- };
18
- expect(() => workletResponseSchema.parse(valid)).not.toThrow();
19
- });
20
- it('should reject invalid worklet response', () => {
21
- const invalid = {
22
- result: null,
23
- };
24
- expect(() => workletResponseSchema.parse(invalid)).toThrow();
25
- });
26
- it('should require result field', () => {
27
- const invalid = {};
28
- expect(() => workletResponseSchema.parse(invalid)).toThrow();
29
- });
30
- });
31
- describe('balanceResponseSchema', () => {
32
- it('should validate numeric string', () => {
33
- expect(() => balanceResponseSchema.parse('1000000000000000000')).not.toThrow();
34
- expect(() => balanceResponseSchema.parse('0')).not.toThrow();
35
- expect(() => balanceResponseSchema.parse('123456789')).not.toThrow();
36
- });
37
- it('should reject non-numeric strings', () => {
38
- expect(() => balanceResponseSchema.parse('abc')).toThrow();
39
- expect(() => balanceResponseSchema.parse('123.45')).toThrow();
40
- expect(() => balanceResponseSchema.parse('-123')).toThrow();
41
- expect(() => balanceResponseSchema.parse('')).toThrow();
42
- });
43
- it('should reject non-string values', () => {
44
- expect(() => balanceResponseSchema.parse(123)).toThrow();
45
- expect(() => balanceResponseSchema.parse(null)).toThrow();
46
- expect(() => balanceResponseSchema.parse(undefined)).toThrow();
47
- });
48
- });
49
- describe('accountMethodResponseSchema', () => {
50
- it('should validate balance response', () => {
51
- expect(() => accountMethodResponseSchema.parse('1000000000000000000')).not.toThrow();
52
- });
53
- it('should validate string response', () => {
54
- expect(() => accountMethodResponseSchema.parse('0x1234567890123456789012345678901234567890')).not.toThrow();
55
- expect(() => accountMethodResponseSchema.parse('some string')).not.toThrow();
56
- });
57
- it('should validate object response', () => {
58
- expect(() => accountMethodResponseSchema.parse({ data: 'test' })).not.toThrow();
59
- expect(() => accountMethodResponseSchema.parse({ nested: { value: 123 } })).not.toThrow();
60
- });
61
- it('should validate empty object', () => {
62
- expect(() => accountMethodResponseSchema.parse({})).not.toThrow();
63
- });
64
- });
65
- });
66
- //# sourceMappingURL=schemas.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/schemas.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Tests for store helper utilities
3
- */
4
- export {};
@@ -1,227 +0,0 @@
1
- /**
2
- * Tests for store helper utilities
3
- */
4
- import { requireInitialized, requireExtendedHRPC, isInitialized, updateBalanceInState, updateAddressInState, } from '../../utils/storeHelpers';
5
- import { getWorkletStore } from '../../store/workletStore';
6
- import { asExtendedHRPC } from '../../types/hrpc';
7
- // Mock stores
8
- jest.mock('../../store/workletStore', () => ({
9
- getWorkletStore: jest.fn(),
10
- }));
11
- jest.mock('../../types/hrpc', () => ({
12
- asExtendedHRPC: jest.fn(),
13
- }));
14
- describe('storeHelpers', () => {
15
- let mockWorkletStore;
16
- let mockHRPC;
17
- let mockExtendedHRPC;
18
- beforeEach(() => {
19
- jest.clearAllMocks();
20
- mockHRPC = {
21
- callMethod: jest.fn(),
22
- };
23
- mockExtendedHRPC = {
24
- callMethod: jest.fn(),
25
- initializeWDK: jest.fn(),
26
- };
27
- mockWorkletStore = {
28
- getState: jest.fn(() => ({
29
- isInitialized: true,
30
- hrpc: mockHRPC,
31
- })),
32
- };
33
- getWorkletStore.mockReturnValue(mockWorkletStore);
34
- asExtendedHRPC.mockReturnValue(mockExtendedHRPC);
35
- });
36
- describe('requireInitialized', () => {
37
- it('should return HRPC when initialized', () => {
38
- const hrpc = requireInitialized();
39
- expect(hrpc).toBe(mockHRPC);
40
- expect(getWorkletStore).toHaveBeenCalled();
41
- });
42
- it('should throw error when not initialized', () => {
43
- mockWorkletStore.getState = jest.fn(() => ({
44
- isInitialized: false,
45
- hrpc: null,
46
- }));
47
- expect(() => requireInitialized()).toThrow('WDK not initialized');
48
- });
49
- it('should throw error when HRPC is null', () => {
50
- mockWorkletStore.getState = jest.fn(() => ({
51
- isInitialized: true,
52
- hrpc: null,
53
- }));
54
- expect(() => requireInitialized()).toThrow('WDK not initialized');
55
- });
56
- });
57
- describe('requireExtendedHRPC', () => {
58
- it('should return extended HRPC when initialized', () => {
59
- const hrpc = requireExtendedHRPC();
60
- expect(hrpc).toBe(mockExtendedHRPC);
61
- expect(asExtendedHRPC).toHaveBeenCalledWith(mockHRPC);
62
- });
63
- it('should throw error when not initialized', () => {
64
- mockWorkletStore.getState = jest.fn(() => ({
65
- isInitialized: false,
66
- hrpc: null,
67
- }));
68
- expect(() => requireExtendedHRPC()).toThrow('WDK not initialized');
69
- });
70
- });
71
- describe('isInitialized', () => {
72
- it('should return true when initialized', () => {
73
- expect(isInitialized()).toBe(true);
74
- });
75
- it('should return false when not initialized', () => {
76
- mockWorkletStore.getState = jest.fn(() => ({
77
- isInitialized: false,
78
- hrpc: null,
79
- }));
80
- expect(isInitialized()).toBe(false);
81
- });
82
- it('should return false when HRPC is null', () => {
83
- mockWorkletStore.getState = jest.fn(() => ({
84
- isInitialized: true,
85
- hrpc: null,
86
- }));
87
- expect(isInitialized()).toBe(false);
88
- });
89
- });
90
- describe('updateBalanceInState', () => {
91
- it('should update balance in empty state', () => {
92
- const prev = {
93
- balances: {},
94
- };
95
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, 'native', '100');
96
- expect(result.balances).toEqual({
97
- 'wallet-1': {
98
- ethereum: {
99
- 0: {
100
- native: '100',
101
- },
102
- },
103
- },
104
- });
105
- });
106
- it('should update balance in existing state', () => {
107
- const prev = {
108
- balances: {
109
- 'wallet-1': {
110
- ethereum: {
111
- 0: {
112
- native: '50',
113
- },
114
- },
115
- },
116
- },
117
- };
118
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, 'native', '100');
119
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('100');
120
- });
121
- it('should add new network balance', () => {
122
- const prev = {
123
- balances: {
124
- 'wallet-1': {
125
- polygon: {
126
- 0: {
127
- native: '50',
128
- },
129
- },
130
- },
131
- },
132
- };
133
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, 'native', '100');
134
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('100');
135
- expect(result.balances?.['wallet-1']?.polygon?.[0]?.native).toBe('50');
136
- });
137
- it('should add new account balance', () => {
138
- const prev = {
139
- balances: {
140
- 'wallet-1': {
141
- ethereum: {
142
- 0: {
143
- native: '50',
144
- },
145
- },
146
- },
147
- },
148
- };
149
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 1, 'native', '200');
150
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('50');
151
- expect(result.balances?.['wallet-1']?.ethereum?.[1]?.native).toBe('200');
152
- });
153
- it('should add token balance', () => {
154
- const prev = {
155
- balances: {
156
- 'wallet-1': {
157
- ethereum: {
158
- 0: {
159
- native: '50',
160
- },
161
- },
162
- },
163
- },
164
- };
165
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, '0x123', '1000');
166
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('50');
167
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.['0x123']).toBe('1000');
168
- });
169
- });
170
- describe('updateAddressInState', () => {
171
- it('should update address in empty state', () => {
172
- const prev = {
173
- addresses: {},
174
- };
175
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 0, '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
176
- expect(result.addresses).toEqual({
177
- 'wallet-1': {
178
- ethereum: {
179
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
180
- },
181
- },
182
- });
183
- });
184
- it('should update address in existing state', () => {
185
- const prev = {
186
- addresses: {
187
- 'wallet-1': {
188
- ethereum: {
189
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
190
- },
191
- },
192
- },
193
- };
194
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 0, '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
195
- expect(result.addresses?.['wallet-1']?.ethereum?.[0]).toBe('0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
196
- });
197
- it('should add new network address', () => {
198
- const prev = {
199
- addresses: {
200
- 'wallet-1': {
201
- polygon: {
202
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
203
- },
204
- },
205
- },
206
- };
207
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 0, '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
208
- expect(result.addresses?.['wallet-1']?.ethereum?.[0]).toBe('0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
209
- expect(result.addresses?.['wallet-1']?.polygon?.[0]).toBe('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
210
- });
211
- it('should add new account address', () => {
212
- const prev = {
213
- addresses: {
214
- 'wallet-1': {
215
- ethereum: {
216
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
217
- },
218
- },
219
- },
220
- };
221
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 1, '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
222
- expect(result.addresses?.['wallet-1']?.ethereum?.[0]).toBe('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
223
- expect(result.addresses?.['wallet-1']?.ethereum?.[1]).toBe('0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
224
- });
225
- });
226
- });
227
- //# sourceMappingURL=storeHelpers.test.js.map