@spacesops/wdk-react-native-core 1.0.0-beta.68 → 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 (147) 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/__tests__/services/transactionService.test.ts +166 -0
  36. package/src/hooks/useBalance.ts +15 -12
  37. package/src/hooks/useTransactions.ts +98 -0
  38. package/src/index.ts +6 -0
  39. package/src/provider/WdkAppProvider.tsx +13 -1
  40. package/src/services/transactionService.ts +195 -0
  41. package/src/store/indexerConfigStore.ts +19 -0
  42. package/src/types.ts +36 -0
  43. package/src/utils/constants.ts +6 -0
  44. package/src/utils/mmkvKeyManager.ts +3 -3
  45. package/src/utils/operationMutex.ts +1 -1
  46. package/dist/__mocks__/react.d.ts +0 -40
  47. package/dist/__mocks__/react.js +0 -33
  48. package/dist/__mocks__/react.js.map +0 -1
  49. package/dist/__mocks__/secureStorage.d.ts +0 -27
  50. package/dist/__mocks__/secureStorage.js +0 -81
  51. package/dist/__mocks__/secureStorage.js.map +0 -1
  52. package/dist/__tests__/hooks/useBalance.test.d.ts +0 -6
  53. package/dist/__tests__/hooks/useBalance.test.js +0 -217
  54. package/dist/__tests__/hooks/useBalance.test.js.map +0 -1
  55. package/dist/__tests__/hooks/useWallet.test.d.ts +0 -6
  56. package/dist/__tests__/hooks/useWallet.test.js +0 -105
  57. package/dist/__tests__/hooks/useWallet.test.js.map +0 -1
  58. package/dist/__tests__/hooks/useWalletManager.test.d.ts +0 -6
  59. package/dist/__tests__/hooks/useWalletManager.test.js +0 -193
  60. package/dist/__tests__/hooks/useWalletManager.test.js.map +0 -1
  61. package/dist/__tests__/hooks/useWdkApp.test.d.ts +0 -6
  62. package/dist/__tests__/hooks/useWdkApp.test.js +0 -55
  63. package/dist/__tests__/hooks/useWdkApp.test.js.map +0 -1
  64. package/dist/__tests__/hooks/useWorklet.test.d.ts +0 -6
  65. package/dist/__tests__/hooks/useWorklet.test.js +0 -168
  66. package/dist/__tests__/hooks/useWorklet.test.js.map +0 -1
  67. package/dist/__tests__/provider/WdkAppProvider.test.d.ts +0 -6
  68. package/dist/__tests__/provider/WdkAppProvider.test.js +0 -57
  69. package/dist/__tests__/provider/WdkAppProvider.test.js.map +0 -1
  70. package/dist/__tests__/services/accountService.test.d.ts +0 -6
  71. package/dist/__tests__/services/accountService.test.js +0 -263
  72. package/dist/__tests__/services/accountService.test.js.map +0 -1
  73. package/dist/__tests__/services/addressService.test.d.ts +0 -6
  74. package/dist/__tests__/services/addressService.test.js +0 -258
  75. package/dist/__tests__/services/addressService.test.js.map +0 -1
  76. package/dist/__tests__/services/balanceService.test.d.ts +0 -6
  77. package/dist/__tests__/services/balanceService.test.js +0 -333
  78. package/dist/__tests__/services/balanceService.test.js.map +0 -1
  79. package/dist/__tests__/services/walletSetupService.test.d.ts +0 -6
  80. package/dist/__tests__/services/walletSetupService.test.js +0 -304
  81. package/dist/__tests__/services/walletSetupService.test.js.map +0 -1
  82. package/dist/__tests__/services/walletSwitchingService.test.d.ts +0 -6
  83. package/dist/__tests__/services/walletSwitchingService.test.js +0 -209
  84. package/dist/__tests__/services/walletSwitchingService.test.js.map +0 -1
  85. package/dist/__tests__/services/workletLifecycleService.test.d.ts +0 -6
  86. package/dist/__tests__/services/workletLifecycleService.test.js +0 -451
  87. package/dist/__tests__/services/workletLifecycleService.test.js.map +0 -1
  88. package/dist/__tests__/setup.d.ts +0 -4
  89. package/dist/__tests__/setup.js +0 -49
  90. package/dist/__tests__/setup.js.map +0 -1
  91. package/dist/__tests__/storage/mmkvStorage.test.d.ts +0 -6
  92. package/dist/__tests__/storage/mmkvStorage.test.js +0 -213
  93. package/dist/__tests__/storage/mmkvStorage.test.js.map +0 -1
  94. package/dist/__tests__/store/walletStore.test.d.ts +0 -4
  95. package/dist/__tests__/store/walletStore.test.js +0 -86
  96. package/dist/__tests__/store/walletStore.test.js.map +0 -1
  97. package/dist/__tests__/store/workletStore.test.d.ts +0 -4
  98. package/dist/__tests__/store/workletStore.test.js +0 -255
  99. package/dist/__tests__/store/workletStore.test.js.map +0 -1
  100. package/dist/__tests__/types/hrpc.test.d.ts +0 -4
  101. package/dist/__tests__/types/hrpc.test.js +0 -99
  102. package/dist/__tests__/types/hrpc.test.js.map +0 -1
  103. package/dist/__tests__/utils/balanceUtils.test.d.ts +0 -4
  104. package/dist/__tests__/utils/balanceUtils.test.js +0 -133
  105. package/dist/__tests__/utils/balanceUtils.test.js.map +0 -1
  106. package/dist/__tests__/utils/errorHandling.test.d.ts +0 -6
  107. package/dist/__tests__/utils/errorHandling.test.js +0 -119
  108. package/dist/__tests__/utils/errorHandling.test.js.map +0 -1
  109. package/dist/__tests__/utils/errorUtils.test.d.ts +0 -4
  110. package/dist/__tests__/utils/errorUtils.test.js +0 -133
  111. package/dist/__tests__/utils/errorUtils.test.js.map +0 -1
  112. package/dist/__tests__/utils/initializationState.test.d.ts +0 -6
  113. package/dist/__tests__/utils/initializationState.test.js +0 -243
  114. package/dist/__tests__/utils/initializationState.test.js.map +0 -1
  115. package/dist/__tests__/utils/jsonUtils.test.d.ts +0 -4
  116. package/dist/__tests__/utils/jsonUtils.test.js +0 -118
  117. package/dist/__tests__/utils/jsonUtils.test.js.map +0 -1
  118. package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +0 -6
  119. package/dist/__tests__/utils/mmkvKeyManager.test.js +0 -158
  120. package/dist/__tests__/utils/mmkvKeyManager.test.js.map +0 -1
  121. package/dist/__tests__/utils/mnemonicUtils.test.d.ts +0 -4
  122. package/dist/__tests__/utils/mnemonicUtils.test.js +0 -40
  123. package/dist/__tests__/utils/mnemonicUtils.test.js.map +0 -1
  124. package/dist/__tests__/utils/raceConditions.test.d.ts +0 -6
  125. package/dist/__tests__/utils/raceConditions.test.js +0 -239
  126. package/dist/__tests__/utils/raceConditions.test.js.map +0 -1
  127. package/dist/__tests__/utils/result.test.d.ts +0 -4
  128. package/dist/__tests__/utils/result.test.js +0 -66
  129. package/dist/__tests__/utils/result.test.js.map +0 -1
  130. package/dist/__tests__/utils/schemas.test.d.ts +0 -4
  131. package/dist/__tests__/utils/schemas.test.js +0 -66
  132. package/dist/__tests__/utils/schemas.test.js.map +0 -1
  133. package/dist/__tests__/utils/storeHelpers.test.d.ts +0 -4
  134. package/dist/__tests__/utils/storeHelpers.test.js +0 -227
  135. package/dist/__tests__/utils/storeHelpers.test.js.map +0 -1
  136. package/dist/__tests__/utils/typeGuards.test.d.ts +0 -4
  137. package/dist/__tests__/utils/typeGuards.test.js +0 -175
  138. package/dist/__tests__/utils/typeGuards.test.js.map +0 -1
  139. package/dist/__tests__/utils/validation.test.d.ts +0 -4
  140. package/dist/__tests__/utils/validation.test.js +0 -167
  141. package/dist/__tests__/utils/validation.test.js.map +0 -1
  142. package/dist/__tests__/utils/walletUtils.test.d.ts +0 -4
  143. package/dist/__tests__/utils/walletUtils.test.js +0 -156
  144. package/dist/__tests__/utils/walletUtils.test.js.map +0 -1
  145. package/dist/utils/types.js +0 -6
  146. package/dist/utils/utils/schemas.js +0 -173
  147. package/dist/utils/utils/validation.js +0 -151
@@ -1,451 +0,0 @@
1
- /**
2
- * Tests for WorkletLifecycleService
3
- *
4
- * Tests worklet initialization with various network configurations
5
- */
6
- import { WorkletLifecycleService } from '../../services/workletLifecycleService';
7
- import { getWorkletStore } from '../../store/workletStore';
8
- // Mock dependencies
9
- const mockWorkletInstance = {
10
- start: jest.fn(),
11
- IPC: {
12
- send: jest.fn(),
13
- on: jest.fn(),
14
- },
15
- };
16
- jest.mock('@spacesops/react-native-bare-kit', () => ({
17
- Worklet: jest.fn().mockImplementation(() => mockWorkletInstance),
18
- }));
19
- const mockHRPCInstance = {
20
- workletStart: jest.fn(() => Promise.resolve({ status: 'success' })),
21
- ipc: mockWorkletInstance.IPC,
22
- };
23
- // Mock @spacesops/pear-wrk-wdk with proper module structure
24
- // Note: We create the mock HRPC inside the factory to avoid hoisting issues
25
- jest.mock('@spacesops/pear-wrk-wdk', () => {
26
- const mockHRPC = jest.fn().mockImplementation(() => ({
27
- workletStart: jest.fn(() => Promise.resolve({ status: 'success' })),
28
- ipc: mockWorkletInstance.IPC,
29
- }));
30
- return {
31
- __esModule: true,
32
- default: {
33
- bundle: 'mock-bundle',
34
- },
35
- HRPC: mockHRPC,
36
- bundle: 'mock-bundle',
37
- };
38
- });
39
- // Create a shared mock store that will be returned by getWorkletStore
40
- let sharedMockStore;
41
- // Mock workletStore
42
- jest.mock('../../store/workletStore', () => ({
43
- getWorkletStore: jest.fn(() => {
44
- if (!sharedMockStore) {
45
- sharedMockStore = {
46
- getState: jest.fn(() => ({
47
- isWorkletStarted: false,
48
- isInitialized: false,
49
- isLoading: false,
50
- worklet: null,
51
- hrpc: null,
52
- error: null,
53
- })),
54
- setState: jest.fn(),
55
- };
56
- }
57
- return sharedMockStore;
58
- }),
59
- }));
60
- /**
61
- * Real-world network configuration for testing
62
- * This matches the configuration used in production
63
- * Note: Some fields like safeModulesVersion, paymasterToken, and network are extensions
64
- * beyond the base NetworkConfig type but are valid in practice
65
- */
66
- const defaultNetworkConfigs = {
67
- sepolia: {
68
- chainId: 11155111,
69
- blockchain: 'sepolia',
70
- provider: 'https://sepolia.gateway.tenderly.co',
71
- bundlerUrl: 'https://api.candide.dev/public/v3/sepolia',
72
- paymasterUrl: 'https://api.candide.dev/public/v3/sepolia',
73
- paymasterAddress: '0x8b1f6cb5d062aa2ce8d581942bbb960420d875ba',
74
- entryPointAddress: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
75
- safeModulesVersion: '0.3.0',
76
- paymasterToken: {
77
- address: '0xd077A400968890Eacc75cdc901F0356c943e4fDb',
78
- },
79
- transferMaxFee: 100000,
80
- },
81
- ethereum: {
82
- chainId: 1,
83
- blockchain: 'ethereum',
84
- provider: 'https://wallet-ap7ha02ezs.rumble.com/eth',
85
- bundlerUrl: 'https://api.candide.dev/public/v3/ethereum',
86
- paymasterUrl: 'https://api.candide.dev/public/v3/ethereum',
87
- paymasterAddress: '0x8b1f6cb5d062aa2ce8d581942bbb960420d875ba',
88
- entryPointAddress: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
89
- safeModulesVersion: '0.3.0',
90
- paymasterToken: {
91
- address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
92
- },
93
- transferMaxFee: 100000,
94
- },
95
- polygon: {
96
- chainId: 137,
97
- blockchain: 'polygon',
98
- provider: 'https://wallet-ap7ha02ezs.rumble.com/pol',
99
- bundlerUrl: 'https://api.candide.dev/public/v3/polygon',
100
- paymasterUrl: 'https://api.candide.dev/public/v3/polygon',
101
- paymasterAddress: '0x8b1f6cb5d062aa2ce8d581942bbb960420d875ba',
102
- entryPointAddress: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
103
- safeModulesVersion: '0.3.0',
104
- paymasterToken: {
105
- address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
106
- },
107
- transferMaxFee: 100000,
108
- },
109
- arbitrum: {
110
- chainId: 42161,
111
- blockchain: 'arbitrum',
112
- provider: 'https://wallet-ap7ha02ezs.rumble.com/arb',
113
- bundlerUrl: 'https://public.pimlico.io/v2/42161/rpc',
114
- paymasterUrl: 'https://public.pimlico.io/v2/42161/rpc',
115
- paymasterAddress: '0x777777777777AeC03fd955926DbF81597e66834C',
116
- entryPointAddress: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
117
- safeModulesVersion: '0.3.0',
118
- paymasterToken: {
119
- address: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',
120
- },
121
- transferMaxFee: 100000,
122
- },
123
- plasma: {
124
- chainId: 9745,
125
- blockchain: 'plasma',
126
- provider: 'https://rpc.plasma.to',
127
- bundlerUrl: 'https://api.candide.dev/public/v3/9745',
128
- paymasterUrl: 'https://api.candide.dev/public/v3/9745',
129
- paymasterAddress: '0x8b1f6cb5d062aa2ce8d581942bbb960420d875ba',
130
- entryPointAddress: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
131
- safeModulesVersion: '0.3.0',
132
- paymasterToken: {
133
- address: '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb',
134
- },
135
- transferMaxFee: 100000,
136
- },
137
- spark: {
138
- chainId: 99999,
139
- blockchain: 'spark',
140
- network: 'MAINNET', // Spark network type (MAINNET, TESTNET)
141
- },
142
- };
143
- describe('WorkletLifecycleService', () => {
144
- let mockStore;
145
- beforeEach(() => {
146
- jest.clearAllMocks();
147
- // Reset mock implementations
148
- mockWorkletInstance.start.mockClear();
149
- mockHRPCInstance.workletStart.mockResolvedValue({ status: 'success' });
150
- // Reset HRPC constructor mock
151
- const { HRPC } = require('@spacesops/pear-wrk-wdk');
152
- if (HRPC && typeof HRPC.mockImplementation === 'function') {
153
- HRPC.mockImplementation(() => mockHRPCInstance);
154
- }
155
- // Setup mock store - get the shared instance
156
- mockStore = getWorkletStore();
157
- const defaultState = {
158
- isWorkletStarted: false,
159
- isInitialized: false,
160
- isLoading: false,
161
- worklet: null,
162
- hrpc: null,
163
- ipc: null,
164
- error: null,
165
- encryptedSeed: null,
166
- encryptionKey: null,
167
- networkConfigs: null,
168
- workletStartResult: null,
169
- wdkInitResult: null,
170
- };
171
- // Update the shared mock store
172
- sharedMockStore.getState = jest.fn(() => defaultState);
173
- sharedMockStore.setState = jest.fn();
174
- });
175
- describe('startWorklet', () => {
176
- it('should start worklet with default network configuration', async () => {
177
- await WorkletLifecycleService.startWorklet(defaultNetworkConfigs);
178
- // Verify worklet was created
179
- const { Worklet } = require('@spacesops/react-native-bare-kit');
180
- expect(Worklet).toHaveBeenCalled();
181
- // Verify worklet.start was called with bundle
182
- expect(mockWorkletInstance.start).toHaveBeenCalledWith('/wdk-worklet.bundle', 'mock-bundle');
183
- // Verify HRPC was created
184
- const { HRPC } = require('@spacesops/pear-wrk-wdk');
185
- expect(HRPC).toHaveBeenCalledWith(mockWorkletInstance.IPC);
186
- // Verify workletStart was called with serialized config
187
- expect(mockHRPCInstance.workletStart).toHaveBeenCalledWith({
188
- config: JSON.stringify(defaultNetworkConfigs),
189
- });
190
- // Verify store state was updated (check that setState was called at least once)
191
- expect(mockStore.setState).toHaveBeenCalled();
192
- // Verify the final state update contains the expected values
193
- const setStateMock = mockStore.setState;
194
- const finalStateCall = setStateMock.mock.calls[setStateMock.mock.calls.length - 1];
195
- if (finalStateCall && typeof finalStateCall[0] === 'function') {
196
- const prevState = mockStore.getState();
197
- const newState = finalStateCall[0](prevState);
198
- expect(newState.isWorkletStarted).toBe(true);
199
- expect(newState.isLoading).toBe(false);
200
- expect(newState.networkConfigs).toEqual(defaultNetworkConfigs);
201
- expect(newState.worklet).toBe(mockWorkletInstance);
202
- expect(newState.hrpc).toBe(mockHRPCInstance);
203
- expect(newState.error).toBeNull();
204
- }
205
- });
206
- it('should serialize network configuration correctly', async () => {
207
- await WorkletLifecycleService.startWorklet(defaultNetworkConfigs);
208
- // Verify the config was serialized to JSON
209
- const calls = mockHRPCInstance.workletStart.mock.calls;
210
- expect(calls.length).toBeGreaterThan(0);
211
- const workletStartCall = calls[0];
212
- const configString = workletStartCall[0].config;
213
- const parsedConfig = JSON.parse(configString);
214
- // Verify all networks are present
215
- expect(parsedConfig).toHaveProperty('sepolia');
216
- expect(parsedConfig).toHaveProperty('ethereum');
217
- expect(parsedConfig).toHaveProperty('polygon');
218
- expect(parsedConfig).toHaveProperty('arbitrum');
219
- expect(parsedConfig).toHaveProperty('plasma');
220
- expect(parsedConfig).toHaveProperty('spark');
221
- // Verify network properties
222
- expect(parsedConfig.ethereum).toMatchObject({
223
- chainId: 1,
224
- blockchain: 'ethereum',
225
- provider: 'https://wallet-ap7ha02ezs.rumble.com/eth',
226
- });
227
- expect(parsedConfig.polygon).toMatchObject({
228
- chainId: 137,
229
- blockchain: 'polygon',
230
- provider: 'https://wallet-ap7ha02ezs.rumble.com/pol',
231
- });
232
- expect(parsedConfig.arbitrum).toMatchObject({
233
- chainId: 42161,
234
- blockchain: 'arbitrum',
235
- provider: 'https://wallet-ap7ha02ezs.rumble.com/arb',
236
- });
237
- // Verify extended properties are preserved
238
- expect(parsedConfig.ethereum).toHaveProperty('safeModulesVersion', '0.3.0');
239
- expect(parsedConfig.ethereum).toHaveProperty('paymasterToken');
240
- expect(parsedConfig.ethereum.paymasterToken).toHaveProperty('address');
241
- expect(parsedConfig.spark).toHaveProperty('network', 'MAINNET');
242
- });
243
- it('should handle all network types in the configuration', async () => {
244
- await WorkletLifecycleService.startWorklet(defaultNetworkConfigs);
245
- const calls = mockHRPCInstance.workletStart.mock.calls;
246
- expect(calls.length).toBeGreaterThan(0);
247
- const workletStartCall = calls[0];
248
- const configString = workletStartCall[0].config;
249
- const parsedConfig = JSON.parse(configString);
250
- // Verify each network has required fields
251
- const networks = ['sepolia', 'ethereum', 'polygon', 'arbitrum', 'plasma', 'spark'];
252
- for (const network of networks) {
253
- expect(parsedConfig).toHaveProperty(network);
254
- expect(parsedConfig[network]).toHaveProperty('chainId');
255
- expect(parsedConfig[network]).toHaveProperty('blockchain');
256
- expect(typeof parsedConfig[network].chainId).toBe('number');
257
- expect(typeof parsedConfig[network].blockchain).toBe('string');
258
- }
259
- });
260
- it('should preserve optional fields in network configuration', async () => {
261
- await WorkletLifecycleService.startWorklet(defaultNetworkConfigs);
262
- const calls = mockHRPCInstance.workletStart.mock.calls;
263
- expect(calls.length).toBeGreaterThan(0);
264
- const workletStartCall = calls[0];
265
- const configString = workletStartCall[0].config;
266
- const parsedConfig = JSON.parse(configString);
267
- // Verify optional fields are preserved for networks that have them
268
- const ethereumConfig = parsedConfig.ethereum;
269
- expect(ethereumConfig).toHaveProperty('bundlerUrl');
270
- expect(ethereumConfig).toHaveProperty('paymasterUrl');
271
- expect(ethereumConfig).toHaveProperty('paymasterAddress');
272
- expect(ethereumConfig).toHaveProperty('entryPointAddress');
273
- expect(ethereumConfig).toHaveProperty('transferMaxFee');
274
- expect(ethereumConfig).toHaveProperty('safeModulesVersion');
275
- expect(ethereumConfig).toHaveProperty('paymasterToken');
276
- // Verify spark has its network field
277
- expect(parsedConfig.spark).toHaveProperty('network', 'MAINNET');
278
- });
279
- it('should not start worklet if already started', async () => {
280
- // Clear previous calls
281
- mockHRPCInstance.workletStart.mockClear();
282
- const { Worklet: WorkletConstructor } = require('@spacesops/react-native-bare-kit');
283
- WorkletConstructor.mockClear();
284
- mockStore.setState.mockClear();
285
- // Set up mock store to return "already started" state
286
- const alreadyStartedState = {
287
- isWorkletStarted: true,
288
- isInitialized: false,
289
- isLoading: false,
290
- worklet: mockWorkletInstance,
291
- hrpc: mockHRPCInstance,
292
- ipc: mockWorkletInstance.IPC,
293
- error: null,
294
- encryptedSeed: null,
295
- encryptionKey: null,
296
- networkConfigs: defaultNetworkConfigs,
297
- workletStartResult: null,
298
- wdkInitResult: null,
299
- };
300
- mockStore.getState = jest.fn(() => alreadyStartedState);
301
- await WorkletLifecycleService.startWorklet(defaultNetworkConfigs);
302
- // Should not call workletStart again (early return should happen)
303
- expect(mockHRPCInstance.workletStart).not.toHaveBeenCalled();
304
- // Should not create new worklet
305
- expect(WorkletConstructor).not.toHaveBeenCalled();
306
- // Should not call setState (early return before any state changes)
307
- expect(mockStore.setState).not.toHaveBeenCalled();
308
- });
309
- it('should not start worklet if already loading', async () => {
310
- // Clear previous calls
311
- mockHRPCInstance.workletStart.mockClear();
312
- const { Worklet: WorkletConstructor } = require('@spacesops/react-native-bare-kit');
313
- WorkletConstructor.mockClear();
314
- mockStore.setState.mockClear();
315
- // Set up mock store to return "already loading" state
316
- const alreadyLoadingState = {
317
- isWorkletStarted: false,
318
- isInitialized: false,
319
- isLoading: true,
320
- worklet: null,
321
- hrpc: null,
322
- ipc: null,
323
- error: null,
324
- encryptedSeed: null,
325
- encryptionKey: null,
326
- networkConfigs: null,
327
- workletStartResult: null,
328
- wdkInitResult: null,
329
- };
330
- mockStore.getState = jest.fn(() => alreadyLoadingState);
331
- await WorkletLifecycleService.startWorklet(defaultNetworkConfigs);
332
- // Should not call workletStart (early return should happen)
333
- expect(mockHRPCInstance.workletStart).not.toHaveBeenCalled();
334
- // Should not create new worklet
335
- expect(WorkletConstructor).not.toHaveBeenCalled();
336
- // Should not call setState (early return before any state changes)
337
- expect(mockStore.setState).not.toHaveBeenCalled();
338
- });
339
- it('should handle errors during worklet initialization', async () => {
340
- // Make workletStart fail to simulate an error
341
- mockHRPCInstance.workletStart.mockRejectedValueOnce(new Error('Failed to start worklet'));
342
- await expect(WorkletLifecycleService.startWorklet(defaultNetworkConfigs)).rejects.toThrow();
343
- // Verify setState was called (at least for loading state and error state)
344
- expect(mockStore.setState).toHaveBeenCalled();
345
- // Verify error state was set in the last call
346
- const setStateMock = mockStore.setState;
347
- const allCalls = setStateMock.mock.calls;
348
- expect(allCalls.length).toBeGreaterThan(0);
349
- // Check if any call sets error state
350
- let errorStateFound = false;
351
- for (const call of allCalls) {
352
- if (typeof call[0] === 'function') {
353
- const prevState = mockStore.getState();
354
- const newState = call[0](prevState);
355
- if (newState.error !== null && newState.isLoading === false) {
356
- errorStateFound = true;
357
- break;
358
- }
359
- }
360
- else if (call[0] && typeof call[0] === 'object' && call[0].error !== null) {
361
- errorStateFound = true;
362
- break;
363
- }
364
- }
365
- expect(errorStateFound).toBe(true);
366
- });
367
- it('should cleanup existing worklet before starting new one', async () => {
368
- const existingWorklet = {
369
- start: jest.fn(),
370
- IPC: mockWorkletInstance.IPC,
371
- cleanup: jest.fn(),
372
- };
373
- const existingHRPC = {
374
- workletStart: jest.fn(() => Promise.resolve({ status: 'success' })),
375
- ipc: mockWorkletInstance.IPC,
376
- cleanup: jest.fn(),
377
- };
378
- mockStore.getState = jest.fn().mockReturnValue({
379
- isWorkletStarted: false,
380
- isInitialized: false,
381
- isLoading: false,
382
- worklet: existingWorklet,
383
- hrpc: existingHRPC,
384
- ipc: existingWorklet.IPC,
385
- error: null,
386
- encryptedSeed: null,
387
- encryptionKey: null,
388
- networkConfigs: null,
389
- workletStartResult: null,
390
- wdkInitResult: null,
391
- });
392
- await WorkletLifecycleService.startWorklet(defaultNetworkConfigs);
393
- // Verify new worklet was created (old one should be cleaned up)
394
- const { Worklet } = require('@spacesops/react-native-bare-kit');
395
- expect(Worklet).toHaveBeenCalled();
396
- });
397
- it('should handle minimal network configuration', async () => {
398
- const minimalConfig = {
399
- ethereum: {
400
- chainId: 1,
401
- blockchain: 'ethereum',
402
- },
403
- };
404
- await WorkletLifecycleService.startWorklet(minimalConfig);
405
- expect(mockHRPCInstance.workletStart).toHaveBeenCalled();
406
- const calls = mockHRPCInstance.workletStart.mock.calls;
407
- expect(calls.length).toBeGreaterThan(0);
408
- const workletStartCall = calls[0];
409
- expect(workletStartCall).toBeDefined();
410
- const configString = workletStartCall[0].config;
411
- const parsedConfig = JSON.parse(configString);
412
- expect(parsedConfig.ethereum).toMatchObject({
413
- chainId: 1,
414
- blockchain: 'ethereum',
415
- });
416
- });
417
- it('should handle network configuration with all optional fields', async () => {
418
- const fullConfig = {
419
- testnet: {
420
- chainId: 12345,
421
- blockchain: 'testnet',
422
- provider: 'https://testnet.example.com',
423
- bundlerUrl: 'https://bundler.example.com',
424
- paymasterUrl: 'https://paymaster.example.com',
425
- paymasterAddress: '0x1234567890123456789012345678901234567890',
426
- entryPointAddress: '0x0987654321098765432109876543210987654321',
427
- transferMaxFee: 50000,
428
- },
429
- };
430
- await WorkletLifecycleService.startWorklet(fullConfig);
431
- expect(mockHRPCInstance.workletStart).toHaveBeenCalled();
432
- const calls = mockHRPCInstance.workletStart.mock.calls;
433
- expect(calls.length).toBeGreaterThan(0);
434
- const workletStartCall = calls[0];
435
- expect(workletStartCall).toBeDefined();
436
- const configString = workletStartCall[0].config;
437
- const parsedConfig = JSON.parse(configString);
438
- expect(parsedConfig.testnet).toMatchObject({
439
- chainId: 12345,
440
- blockchain: 'testnet',
441
- provider: 'https://testnet.example.com',
442
- bundlerUrl: 'https://bundler.example.com',
443
- paymasterUrl: 'https://paymaster.example.com',
444
- paymasterAddress: '0x1234567890123456789012345678901234567890',
445
- entryPointAddress: '0x0987654321098765432109876543210987654321',
446
- transferMaxFee: 50000,
447
- });
448
- });
449
- });
450
- });
451
- //# sourceMappingURL=workletLifecycleService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workletLifecycleService.test.js","sourceRoot":"","sources":["../../../src/__tests__/services/workletLifecycleService.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Jest setup file for test configuration
3
- */
4
- declare const originalError: (message?: any, ...optionalParams: any[]) => void;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- /**
3
- * Jest setup file for test configuration
4
- */
5
- // Mock React Native modules
6
- jest.mock('react-native-mmkv', () => ({
7
- MMKV: jest.fn().mockImplementation(() => ({
8
- set: jest.fn(),
9
- getString: jest.fn(),
10
- getNumber: jest.fn(),
11
- getBoolean: jest.fn(),
12
- delete: jest.fn(),
13
- clearAll: jest.fn(),
14
- getAllKeys: jest.fn(() => []),
15
- contains: jest.fn(),
16
- })),
17
- }));
18
- // Mock expo-crypto
19
- jest.mock('expo-crypto', () => ({
20
- digestStringAsync: jest.fn(),
21
- getRandomBytesAsync: jest.fn(() => Promise.resolve(new Uint8Array(32))),
22
- }));
23
- // Mock @spacesops/pear-wrk-wdk
24
- jest.mock('@spacesops/pear-wrk-wdk', () => ({
25
- Worklet: jest.fn(),
26
- createWorklet: jest.fn(),
27
- }));
28
- // Mock @spacesops/react-native-bare-kit
29
- jest.mock('@spacesops/react-native-bare-kit', () => ({
30
- createBareKit: jest.fn(),
31
- }));
32
- // Suppress console.error in tests (we test error cases, but don't need the noise)
33
- const originalError = console.error;
34
- beforeAll(() => {
35
- console.error = jest.fn();
36
- });
37
- afterAll(() => {
38
- console.error = originalError;
39
- });
40
- // Reset all mocks before each test
41
- beforeEach(() => {
42
- jest.clearAllMocks();
43
- // Clear mock secure storage between tests
44
- const { mockSecureStorage } = require('../__mocks__/secureStorage');
45
- if (typeof mockSecureStorage._clearStorage === 'function') {
46
- mockSecureStorage._clearStorage();
47
- }
48
- });
49
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";AAAA;;GAEG;AAEH,4BAA4B;AAC5B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;QACpB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;QACpB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC7B,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;KACpB,CAAC,CAAC;CACJ,CAAC,CAAC,CAAA;AAEH,mBAAmB;AACnB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;IAC5B,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;CACxE,CAAC,CAAC,CAAA;AAEH,+BAA+B;AAC/B,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;IAClB,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;CACzB,CAAC,CAAC,CAAA;AAEH,wCAAwC;AACxC,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;CACzB,CAAC,CAAC,CAAA;AAEH,kFAAkF;AAClF,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAA;AACnC,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;AAC3B,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,GAAG,EAAE;IACZ,OAAO,CAAC,KAAK,GAAG,aAAa,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,mCAAmC;AACnC,UAAU,CAAC,GAAG,EAAE;IACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACpB,0CAA0C;IAC1C,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAA;IACnE,IAAI,OAAO,iBAAiB,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QAC1D,iBAAiB,CAAC,aAAa,EAAE,CAAA;IACnC,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for mmkvStorage
3
- *
4
- * Tests MMKV storage adapter with async initialization and LRU caching
5
- */
6
- export {};