@spacesops/wdk-react-native-core 1.0.0-beta.40

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 (275) hide show
  1. package/README.md +551 -0
  2. package/dist/__mocks__/react.d.ts +40 -0
  3. package/dist/__mocks__/react.js +33 -0
  4. package/dist/__mocks__/react.js.map +1 -0
  5. package/dist/__mocks__/secureStorage.d.ts +26 -0
  6. package/dist/__mocks__/secureStorage.js +80 -0
  7. package/dist/__mocks__/secureStorage.js.map +1 -0
  8. package/dist/__tests__/hooks/useBalance.test.d.ts +6 -0
  9. package/dist/__tests__/hooks/useBalance.test.js +217 -0
  10. package/dist/__tests__/hooks/useBalance.test.js.map +1 -0
  11. package/dist/__tests__/hooks/useWallet.test.d.ts +6 -0
  12. package/dist/__tests__/hooks/useWallet.test.js +105 -0
  13. package/dist/__tests__/hooks/useWallet.test.js.map +1 -0
  14. package/dist/__tests__/hooks/useWalletManager.test.d.ts +6 -0
  15. package/dist/__tests__/hooks/useWalletManager.test.js +193 -0
  16. package/dist/__tests__/hooks/useWalletManager.test.js.map +1 -0
  17. package/dist/__tests__/hooks/useWdkApp.test.d.ts +6 -0
  18. package/dist/__tests__/hooks/useWdkApp.test.js +55 -0
  19. package/dist/__tests__/hooks/useWdkApp.test.js.map +1 -0
  20. package/dist/__tests__/hooks/useWorklet.test.d.ts +6 -0
  21. package/dist/__tests__/hooks/useWorklet.test.js +168 -0
  22. package/dist/__tests__/hooks/useWorklet.test.js.map +1 -0
  23. package/dist/__tests__/provider/WdkAppProvider.test.d.ts +6 -0
  24. package/dist/__tests__/provider/WdkAppProvider.test.js +57 -0
  25. package/dist/__tests__/provider/WdkAppProvider.test.js.map +1 -0
  26. package/dist/__tests__/services/accountService.test.d.ts +6 -0
  27. package/dist/__tests__/services/accountService.test.js +216 -0
  28. package/dist/__tests__/services/accountService.test.js.map +1 -0
  29. package/dist/__tests__/services/addressService.test.d.ts +6 -0
  30. package/dist/__tests__/services/addressService.test.js +246 -0
  31. package/dist/__tests__/services/addressService.test.js.map +1 -0
  32. package/dist/__tests__/services/balanceService.test.d.ts +6 -0
  33. package/dist/__tests__/services/balanceService.test.js +333 -0
  34. package/dist/__tests__/services/balanceService.test.js.map +1 -0
  35. package/dist/__tests__/services/walletSetupService.test.d.ts +6 -0
  36. package/dist/__tests__/services/walletSetupService.test.js +304 -0
  37. package/dist/__tests__/services/walletSetupService.test.js.map +1 -0
  38. package/dist/__tests__/services/walletSwitchingService.test.d.ts +6 -0
  39. package/dist/__tests__/services/walletSwitchingService.test.js +209 -0
  40. package/dist/__tests__/services/walletSwitchingService.test.js.map +1 -0
  41. package/dist/__tests__/services/workletLifecycleService.test.d.ts +6 -0
  42. package/dist/__tests__/services/workletLifecycleService.test.js +451 -0
  43. package/dist/__tests__/services/workletLifecycleService.test.js.map +1 -0
  44. package/dist/__tests__/setup.d.ts +7 -0
  45. package/dist/__tests__/setup.js +49 -0
  46. package/dist/__tests__/setup.js.map +1 -0
  47. package/dist/__tests__/storage/mmkvStorage.test.d.ts +6 -0
  48. package/dist/__tests__/storage/mmkvStorage.test.js +213 -0
  49. package/dist/__tests__/storage/mmkvStorage.test.js.map +1 -0
  50. package/dist/__tests__/store/walletStore.test.d.ts +4 -0
  51. package/dist/__tests__/store/walletStore.test.js +86 -0
  52. package/dist/__tests__/store/walletStore.test.js.map +1 -0
  53. package/dist/__tests__/store/workletStore.test.d.ts +4 -0
  54. package/dist/__tests__/store/workletStore.test.js +255 -0
  55. package/dist/__tests__/store/workletStore.test.js.map +1 -0
  56. package/dist/__tests__/types/hrpc.test.d.ts +4 -0
  57. package/dist/__tests__/types/hrpc.test.js +99 -0
  58. package/dist/__tests__/types/hrpc.test.js.map +1 -0
  59. package/dist/__tests__/utils/balanceUtils.test.d.ts +4 -0
  60. package/dist/__tests__/utils/balanceUtils.test.js +133 -0
  61. package/dist/__tests__/utils/balanceUtils.test.js.map +1 -0
  62. package/dist/__tests__/utils/errorHandling.test.d.ts +6 -0
  63. package/dist/__tests__/utils/errorHandling.test.js +119 -0
  64. package/dist/__tests__/utils/errorHandling.test.js.map +1 -0
  65. package/dist/__tests__/utils/errorUtils.test.d.ts +4 -0
  66. package/dist/__tests__/utils/errorUtils.test.js +133 -0
  67. package/dist/__tests__/utils/errorUtils.test.js.map +1 -0
  68. package/dist/__tests__/utils/initializationState.test.d.ts +6 -0
  69. package/dist/__tests__/utils/initializationState.test.js +243 -0
  70. package/dist/__tests__/utils/initializationState.test.js.map +1 -0
  71. package/dist/__tests__/utils/jsonUtils.test.d.ts +4 -0
  72. package/dist/__tests__/utils/jsonUtils.test.js +118 -0
  73. package/dist/__tests__/utils/jsonUtils.test.js.map +1 -0
  74. package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +6 -0
  75. package/dist/__tests__/utils/mmkvKeyManager.test.js +158 -0
  76. package/dist/__tests__/utils/mmkvKeyManager.test.js.map +1 -0
  77. package/dist/__tests__/utils/mnemonicUtils.test.d.ts +4 -0
  78. package/dist/__tests__/utils/mnemonicUtils.test.js +40 -0
  79. package/dist/__tests__/utils/mnemonicUtils.test.js.map +1 -0
  80. package/dist/__tests__/utils/raceConditions.test.d.ts +6 -0
  81. package/dist/__tests__/utils/raceConditions.test.js +239 -0
  82. package/dist/__tests__/utils/raceConditions.test.js.map +1 -0
  83. package/dist/__tests__/utils/result.test.d.ts +4 -0
  84. package/dist/__tests__/utils/result.test.js +66 -0
  85. package/dist/__tests__/utils/result.test.js.map +1 -0
  86. package/dist/__tests__/utils/schemas.test.d.ts +4 -0
  87. package/dist/__tests__/utils/schemas.test.js +66 -0
  88. package/dist/__tests__/utils/schemas.test.js.map +1 -0
  89. package/dist/__tests__/utils/storeHelpers.test.d.ts +4 -0
  90. package/dist/__tests__/utils/storeHelpers.test.js +227 -0
  91. package/dist/__tests__/utils/storeHelpers.test.js.map +1 -0
  92. package/dist/__tests__/utils/typeGuards.test.d.ts +4 -0
  93. package/dist/__tests__/utils/typeGuards.test.js +175 -0
  94. package/dist/__tests__/utils/typeGuards.test.js.map +1 -0
  95. package/dist/__tests__/utils/validation.test.d.ts +4 -0
  96. package/dist/__tests__/utils/validation.test.js +126 -0
  97. package/dist/__tests__/utils/validation.test.js.map +1 -0
  98. package/dist/__tests__/utils/walletUtils.test.d.ts +4 -0
  99. package/dist/__tests__/utils/walletUtils.test.js +156 -0
  100. package/dist/__tests__/utils/walletUtils.test.js.map +1 -0
  101. package/dist/hooks/useBalance.d.ts +170 -0
  102. package/dist/hooks/useBalance.js +442 -0
  103. package/dist/hooks/useBalance.js.map +1 -0
  104. package/dist/hooks/useWallet.d.ts +43 -0
  105. package/dist/hooks/useWallet.js +193 -0
  106. package/dist/hooks/useWallet.js.map +1 -0
  107. package/dist/hooks/useWalletManager.d.ts +100 -0
  108. package/dist/hooks/useWalletManager.js +526 -0
  109. package/dist/hooks/useWalletManager.js.map +1 -0
  110. package/dist/hooks/useWdkApp.d.ts +66 -0
  111. package/dist/hooks/useWdkApp.js +74 -0
  112. package/dist/hooks/useWdkApp.js.map +1 -0
  113. package/dist/hooks/useWorklet.d.ts +66 -0
  114. package/dist/hooks/useWorklet.js +42 -0
  115. package/dist/hooks/useWorklet.js.map +1 -0
  116. package/dist/index.d.ts +33 -0
  117. package/dist/index.js +36 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/provider/WdkAppProvider.d.ts +112 -0
  120. package/dist/provider/WdkAppProvider.js +558 -0
  121. package/dist/provider/WdkAppProvider.js.map +1 -0
  122. package/dist/services/accountService.d.ts +52 -0
  123. package/dist/services/accountService.js +119 -0
  124. package/dist/services/accountService.js.map +1 -0
  125. package/dist/services/addressService.d.ts +22 -0
  126. package/dist/services/addressService.js +110 -0
  127. package/dist/services/addressService.js.map +1 -0
  128. package/dist/services/balanceService.d.ts +114 -0
  129. package/dist/services/balanceService.js +208 -0
  130. package/dist/services/balanceService.js.map +1 -0
  131. package/dist/services/walletSetupService.d.ts +217 -0
  132. package/dist/services/walletSetupService.js +535 -0
  133. package/dist/services/walletSetupService.js.map +1 -0
  134. package/dist/services/walletSwitchingService.d.ts +48 -0
  135. package/dist/services/walletSwitchingService.js +143 -0
  136. package/dist/services/walletSwitchingService.js.map +1 -0
  137. package/dist/services/workletLifecycleService.d.ts +117 -0
  138. package/dist/services/workletLifecycleService.js +433 -0
  139. package/dist/services/workletLifecycleService.js.map +1 -0
  140. package/dist/storage/mmkvStorage.d.ts +44 -0
  141. package/dist/storage/mmkvStorage.js +348 -0
  142. package/dist/storage/mmkvStorage.js.map +1 -0
  143. package/dist/store/walletStore.d.ts +130 -0
  144. package/dist/store/walletStore.js +204 -0
  145. package/dist/store/walletStore.js.map +1 -0
  146. package/dist/store/workletStore.d.ts +121 -0
  147. package/dist/store/workletStore.js +256 -0
  148. package/dist/store/workletStore.js.map +1 -0
  149. package/dist/types/hrpc.d.ts +60 -0
  150. package/dist/types/hrpc.js +26 -0
  151. package/dist/types/hrpc.js.map +1 -0
  152. package/dist/types.d.ts +168 -0
  153. package/dist/types.js +7 -0
  154. package/dist/types.js.map +1 -0
  155. package/dist/utils/balanceUtils.d.ts +30 -0
  156. package/dist/utils/balanceUtils.js +86 -0
  157. package/dist/utils/balanceUtils.js.map +1 -0
  158. package/dist/utils/constants.d.ts +66 -0
  159. package/dist/utils/constants.js +73 -0
  160. package/dist/utils/constants.js.map +1 -0
  161. package/dist/utils/errorHandling.d.ts +47 -0
  162. package/dist/utils/errorHandling.js +54 -0
  163. package/dist/utils/errorHandling.js.map +1 -0
  164. package/dist/utils/errorUtils.d.ts +89 -0
  165. package/dist/utils/errorUtils.js +264 -0
  166. package/dist/utils/errorUtils.js.map +1 -0
  167. package/dist/utils/initializationState.d.ts +129 -0
  168. package/dist/utils/initializationState.js +220 -0
  169. package/dist/utils/initializationState.js.map +1 -0
  170. package/dist/utils/jsonUtils.d.ts +21 -0
  171. package/dist/utils/jsonUtils.js +67 -0
  172. package/dist/utils/jsonUtils.js.map +1 -0
  173. package/dist/utils/logger.d.ts +27 -0
  174. package/dist/utils/logger.js +50 -0
  175. package/dist/utils/logger.js.map +1 -0
  176. package/dist/utils/mmkvKeyManager.d.ts +57 -0
  177. package/dist/utils/mmkvKeyManager.js +214 -0
  178. package/dist/utils/mmkvKeyManager.js.map +1 -0
  179. package/dist/utils/mnemonicUtils.d.ts +17 -0
  180. package/dist/utils/mnemonicUtils.js +28 -0
  181. package/dist/utils/mnemonicUtils.js.map +1 -0
  182. package/dist/utils/operationMutex.d.ts +69 -0
  183. package/dist/utils/operationMutex.js +150 -0
  184. package/dist/utils/operationMutex.js.map +1 -0
  185. package/dist/utils/result.d.ts +34 -0
  186. package/dist/utils/result.js +43 -0
  187. package/dist/utils/result.js.map +1 -0
  188. package/dist/utils/schemas.d.ts +365 -0
  189. package/dist/utils/schemas.js +152 -0
  190. package/dist/utils/schemas.js.map +1 -0
  191. package/dist/utils/storeHelpers.d.ts +112 -0
  192. package/dist/utils/storeHelpers.js +198 -0
  193. package/dist/utils/storeHelpers.js.map +1 -0
  194. package/dist/utils/typeGuards.d.ts +70 -0
  195. package/dist/utils/typeGuards.js +95 -0
  196. package/dist/utils/typeGuards.js.map +1 -0
  197. package/dist/utils/validation.d.ts +53 -0
  198. package/dist/utils/validation.js +152 -0
  199. package/dist/utils/validation.js.map +1 -0
  200. package/dist/utils/walletStateHelpers.d.ts +62 -0
  201. package/dist/utils/walletStateHelpers.js +81 -0
  202. package/dist/utils/walletStateHelpers.js.map +1 -0
  203. package/dist/utils/walletUtils.d.ts +38 -0
  204. package/dist/utils/walletUtils.js +87 -0
  205. package/dist/utils/walletUtils.js.map +1 -0
  206. package/package.json +79 -0
  207. package/src/__mocks__/react.ts +34 -0
  208. package/src/__mocks__/secureStorage.ts +87 -0
  209. package/src/__tests__/hooks/useBalance.test.ts +286 -0
  210. package/src/__tests__/hooks/useWallet.test.ts +122 -0
  211. package/src/__tests__/hooks/useWalletManager.test.ts +271 -0
  212. package/src/__tests__/hooks/useWdkApp.test.tsx +59 -0
  213. package/src/__tests__/hooks/useWorklet.test.ts +195 -0
  214. package/src/__tests__/provider/WdkAppProvider.test.tsx +67 -0
  215. package/src/__tests__/services/accountService.test.ts +337 -0
  216. package/src/__tests__/services/addressService.test.ts +312 -0
  217. package/src/__tests__/services/balanceService.test.ts +411 -0
  218. package/src/__tests__/services/walletSetupService.test.ts +463 -0
  219. package/src/__tests__/services/walletSwitchingService.test.ts +258 -0
  220. package/src/__tests__/services/workletLifecycleService.test.ts +514 -0
  221. package/src/__tests__/setup.ts +54 -0
  222. package/src/__tests__/storage/mmkvStorage.test.ts +325 -0
  223. package/src/__tests__/store/walletStore.test.ts +101 -0
  224. package/src/__tests__/store/workletStore.test.ts +329 -0
  225. package/src/__tests__/types/hrpc.test.ts +125 -0
  226. package/src/__tests__/utils/balanceUtils.test.ts +151 -0
  227. package/src/__tests__/utils/errorHandling.test.ts +147 -0
  228. package/src/__tests__/utils/errorUtils.test.ts +170 -0
  229. package/src/__tests__/utils/initializationState.test.ts +337 -0
  230. package/src/__tests__/utils/jsonUtils.test.ts +131 -0
  231. package/src/__tests__/utils/mmkvKeyManager.test.ts +205 -0
  232. package/src/__tests__/utils/mnemonicUtils.test.ts +48 -0
  233. package/src/__tests__/utils/raceConditions.test.ts +292 -0
  234. package/src/__tests__/utils/result.test.ts +73 -0
  235. package/src/__tests__/utils/schemas.test.ts +82 -0
  236. package/src/__tests__/utils/storeHelpers.test.ts +323 -0
  237. package/src/__tests__/utils/typeGuards.test.ts +209 -0
  238. package/src/__tests__/utils/validation.test.ts +152 -0
  239. package/src/__tests__/utils/walletUtils.test.ts +195 -0
  240. package/src/hooks/useBalance.ts +597 -0
  241. package/src/hooks/useWallet.ts +288 -0
  242. package/src/hooks/useWalletManager.ts +654 -0
  243. package/src/hooks/useWdkApp.ts +78 -0
  244. package/src/hooks/useWorklet.ts +109 -0
  245. package/src/index.ts +112 -0
  246. package/src/provider/WdkAppProvider.tsx +764 -0
  247. package/src/services/accountService.ts +134 -0
  248. package/src/services/addressService.ts +125 -0
  249. package/src/services/balanceService.ts +291 -0
  250. package/src/services/walletSetupService.ts +695 -0
  251. package/src/services/walletSwitchingService.ts +157 -0
  252. package/src/services/workletLifecycleService.ts +561 -0
  253. package/src/storage/mmkvStorage.ts +417 -0
  254. package/src/store/walletStore.ts +301 -0
  255. package/src/store/workletStore.ts +340 -0
  256. package/src/types/hrpc.ts +78 -0
  257. package/src/types.ts +188 -0
  258. package/src/utils/balanceUtils.ts +96 -0
  259. package/src/utils/constants.ts +84 -0
  260. package/src/utils/errorHandling.md +163 -0
  261. package/src/utils/errorHandling.ts +61 -0
  262. package/src/utils/errorUtils.ts +300 -0
  263. package/src/utils/initializationState.ts +242 -0
  264. package/src/utils/jsonUtils.ts +75 -0
  265. package/src/utils/logger.ts +54 -0
  266. package/src/utils/mmkvKeyManager.ts +256 -0
  267. package/src/utils/mnemonicUtils.ts +35 -0
  268. package/src/utils/operationMutex.ts +181 -0
  269. package/src/utils/result.ts +57 -0
  270. package/src/utils/schemas.ts +190 -0
  271. package/src/utils/storeHelpers.ts +236 -0
  272. package/src/utils/typeGuards.ts +129 -0
  273. package/src/utils/validation.ts +174 -0
  274. package/src/utils/walletStateHelpers.ts +104 -0
  275. package/src/utils/walletUtils.ts +107 -0
@@ -0,0 +1,451 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workletLifecycleService.test.js","sourceRoot":"","sources":["../../../src/__tests__/services/workletLifecycleService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Jest setup file for test configuration
3
+ */
4
+ declare const originalError: {
5
+ (message?: any, ...optionalParams: any[]): void;
6
+ (message?: any, ...optionalParams: any[]): void;
7
+ };
@@ -0,0 +1,49 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tests for mmkvStorage
3
+ *
4
+ * Tests MMKV storage adapter with async initialization and LRU caching
5
+ */
6
+ export {};