movehat 0.2.4 → 0.2.6

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 (557) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.d.ts +0 -1
  3. package/dist/cli.js +0 -1
  4. package/dist/commands/compile.d.ts +0 -1
  5. package/dist/commands/compile.js +0 -1
  6. package/dist/commands/fork/create.d.ts +1 -1
  7. package/dist/commands/fork/create.js +18 -3
  8. package/dist/commands/fork/fund.d.ts +0 -1
  9. package/dist/commands/fork/fund.js +0 -1
  10. package/dist/commands/fork/list.d.ts +0 -1
  11. package/dist/commands/fork/list.js +0 -1
  12. package/dist/commands/fork/serve.d.ts +0 -1
  13. package/dist/commands/fork/serve.js +0 -1
  14. package/dist/commands/fork/view-resource.d.ts +0 -1
  15. package/dist/commands/fork/view-resource.js +0 -1
  16. package/dist/commands/init.d.ts +0 -1
  17. package/dist/commands/init.js +0 -1
  18. package/dist/commands/run.d.ts +17 -1
  19. package/dist/commands/run.js +46 -33
  20. package/dist/commands/test-move.d.ts +0 -1
  21. package/dist/commands/test-move.js +0 -1
  22. package/dist/commands/test.d.ts +0 -1
  23. package/dist/commands/test.js +8 -1
  24. package/dist/commands/update.d.ts +0 -1
  25. package/dist/commands/update.js +0 -1
  26. package/dist/core/AccountManager.d.ts +15 -2
  27. package/dist/core/AccountManager.js +32 -20
  28. package/dist/core/Publisher.d.ts +0 -1
  29. package/dist/core/Publisher.js +0 -1
  30. package/dist/core/config.d.ts +0 -1
  31. package/dist/core/config.js +109 -28
  32. package/dist/core/contract.d.ts +0 -1
  33. package/dist/core/contract.js +0 -1
  34. package/dist/core/deployments.d.ts +0 -1
  35. package/dist/core/deployments.js +0 -1
  36. package/dist/core/movementProfile.d.ts +0 -1
  37. package/dist/core/movementProfile.js +0 -1
  38. package/dist/core/shell.d.ts +0 -1
  39. package/dist/core/shell.js +0 -1
  40. package/dist/errors.d.ts +0 -1
  41. package/dist/errors.js +0 -1
  42. package/dist/fork/api.d.ts +24 -1
  43. package/dist/fork/api.js +95 -1
  44. package/dist/fork/manager.d.ts +14 -1
  45. package/dist/fork/manager.js +19 -1
  46. package/dist/fork/server.d.ts +19 -1
  47. package/dist/fork/server.js +188 -8
  48. package/dist/fork/storage.d.ts +0 -1
  49. package/dist/fork/storage.js +50 -32
  50. package/dist/fork/test.d.ts +0 -1
  51. package/dist/fork/test.js +0 -1
  52. package/dist/harness/Harness.d.ts +0 -1
  53. package/dist/harness/Harness.js +6 -2
  54. package/dist/harness/codeObject.d.ts +0 -1
  55. package/dist/harness/codeObject.js +0 -1
  56. package/dist/harness/errors.d.ts +0 -1
  57. package/dist/harness/errors.js +0 -1
  58. package/dist/harness/index.d.ts +0 -1
  59. package/dist/harness/index.js +0 -1
  60. package/dist/harness/proxy.d.ts +12 -1
  61. package/dist/harness/proxy.js +23 -1
  62. package/dist/harness/script.d.ts +0 -1
  63. package/dist/harness/script.js +0 -1
  64. package/dist/harness/view.d.ts +0 -1
  65. package/dist/harness/view.js +0 -1
  66. package/dist/helpers/assertions.d.ts +0 -1
  67. package/dist/helpers/assertions.js +0 -1
  68. package/dist/helpers/banner.d.ts +0 -1
  69. package/dist/helpers/banner.js +0 -1
  70. package/dist/helpers/index.d.ts +0 -1
  71. package/dist/helpers/index.js +0 -1
  72. package/dist/helpers/move-tests.d.ts +0 -1
  73. package/dist/helpers/move-tests.js +0 -1
  74. package/dist/helpers/npm-registry.d.ts +0 -1
  75. package/dist/helpers/npm-registry.js +0 -1
  76. package/dist/helpers/semver-utils.d.ts +0 -1
  77. package/dist/helpers/semver-utils.js +0 -1
  78. package/dist/helpers/setup.d.ts +0 -1
  79. package/dist/helpers/setup.js +0 -1
  80. package/dist/helpers/setupLocalTesting.d.ts +2 -5
  81. package/dist/helpers/setupLocalTesting.js +0 -1
  82. package/dist/helpers/testFixtures.d.ts +0 -1
  83. package/dist/helpers/testFixtures.js +0 -1
  84. package/dist/helpers/version-check.d.ts +0 -1
  85. package/dist/helpers/version-check.js +0 -1
  86. package/dist/index.d.ts +0 -1
  87. package/dist/index.js +0 -1
  88. package/dist/node/LocalNodeManager.d.ts +0 -1
  89. package/dist/node/LocalNodeManager.js +4 -2
  90. package/dist/runtime.d.ts +0 -1
  91. package/dist/runtime.js +0 -1
  92. package/dist/types/config.d.ts +0 -1
  93. package/dist/types/config.js +0 -1
  94. package/dist/types/fork.d.ts +0 -1
  95. package/dist/types/fork.js +0 -1
  96. package/dist/types/harness.d.ts +0 -1
  97. package/dist/types/harness.js +0 -1
  98. package/dist/types/runtime.d.ts +0 -1
  99. package/dist/types/runtime.js +0 -1
  100. package/dist/ui/colors.d.ts +0 -1
  101. package/dist/ui/colors.js +0 -1
  102. package/dist/ui/formatters.d.ts +0 -1
  103. package/dist/ui/formatters.js +0 -1
  104. package/dist/ui/index.d.ts +0 -1
  105. package/dist/ui/index.js +0 -1
  106. package/dist/ui/logger.d.ts +0 -1
  107. package/dist/ui/logger.js +0 -1
  108. package/dist/ui/spinner.d.ts +0 -1
  109. package/dist/ui/spinner.js +0 -1
  110. package/dist/ui/symbols.d.ts +0 -1
  111. package/dist/ui/symbols.js +0 -1
  112. package/dist/ui/table.d.ts +0 -1
  113. package/dist/ui/table.js +0 -1
  114. package/dist/utils/address.d.ts +0 -1
  115. package/dist/utils/address.js +0 -1
  116. package/dist/utils/childProcessAdapter.d.ts +0 -1
  117. package/dist/utils/childProcessAdapter.js +46 -20
  118. package/dist/utils/movementCli.d.ts +5 -0
  119. package/dist/utils/movementCli.js +91 -0
  120. package/dist/utils/parseCliOutput.d.ts +6 -4
  121. package/dist/utils/parseCliOutput.js +10 -6
  122. package/dist/utils/redact.d.ts +3 -3
  123. package/dist/utils/redact.js +6 -5
  124. package/dist/utils/runCli.d.ts +0 -1
  125. package/dist/utils/runCli.js +10 -2
  126. package/package.json +4 -4
  127. package/dist/__tests__/deployContract.test.d.ts +0 -2
  128. package/dist/__tests__/deployContract.test.d.ts.map +0 -1
  129. package/dist/__tests__/deployContract.test.js +0 -377
  130. package/dist/__tests__/deployContract.test.js.map +0 -1
  131. package/dist/__tests__/errors.test.d.ts +0 -2
  132. package/dist/__tests__/errors.test.d.ts.map +0 -1
  133. package/dist/__tests__/errors.test.js +0 -46
  134. package/dist/__tests__/errors.test.js.map +0 -1
  135. package/dist/__tests__/exports.test.d.ts +0 -2
  136. package/dist/__tests__/exports.test.d.ts.map +0 -1
  137. package/dist/__tests__/exports.test.js +0 -30
  138. package/dist/__tests__/exports.test.js.map +0 -1
  139. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +0 -25
  140. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +0 -1
  141. package/dist/__tests__/fixtures/sigint-deploy-harness.js +0 -83
  142. package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +0 -1
  143. package/dist/__tests__/fork/api.test.d.ts +0 -2
  144. package/dist/__tests__/fork/api.test.d.ts.map +0 -1
  145. package/dist/__tests__/fork/api.test.js +0 -115
  146. package/dist/__tests__/fork/api.test.js.map +0 -1
  147. package/dist/__tests__/fork/api.timeout.test.d.ts +0 -2
  148. package/dist/__tests__/fork/api.timeout.test.d.ts.map +0 -1
  149. package/dist/__tests__/fork/api.timeout.test.js +0 -98
  150. package/dist/__tests__/fork/api.timeout.test.js.map +0 -1
  151. package/dist/__tests__/harness/Harness.createLive.test.d.ts +0 -2
  152. package/dist/__tests__/harness/Harness.createLive.test.d.ts.map +0 -1
  153. package/dist/__tests__/harness/Harness.createLive.test.js +0 -53
  154. package/dist/__tests__/harness/Harness.createLive.test.js.map +0 -1
  155. package/dist/__tests__/harness/Harness.proxy.test.d.ts +0 -2
  156. package/dist/__tests__/harness/Harness.proxy.test.d.ts.map +0 -1
  157. package/dist/__tests__/harness/Harness.proxy.test.js +0 -89
  158. package/dist/__tests__/harness/Harness.proxy.test.js.map +0 -1
  159. package/dist/__tests__/harness/_fixture.d.ts +0 -54
  160. package/dist/__tests__/harness/_fixture.d.ts.map +0 -1
  161. package/dist/__tests__/harness/_fixture.js +0 -69
  162. package/dist/__tests__/harness/_fixture.js.map +0 -1
  163. package/dist/__tests__/harness/codeObject.deploy.test.d.ts +0 -2
  164. package/dist/__tests__/harness/codeObject.deploy.test.d.ts.map +0 -1
  165. package/dist/__tests__/harness/codeObject.deploy.test.js +0 -288
  166. package/dist/__tests__/harness/codeObject.deploy.test.js.map +0 -1
  167. package/dist/__tests__/harness/codeObject.upgrade.test.d.ts +0 -2
  168. package/dist/__tests__/harness/codeObject.upgrade.test.d.ts.map +0 -1
  169. package/dist/__tests__/harness/codeObject.upgrade.test.js +0 -138
  170. package/dist/__tests__/harness/codeObject.upgrade.test.js.map +0 -1
  171. package/dist/__tests__/harness/script.test.d.ts +0 -2
  172. package/dist/__tests__/harness/script.test.d.ts.map +0 -1
  173. package/dist/__tests__/harness/script.test.js +0 -219
  174. package/dist/__tests__/harness/script.test.js.map +0 -1
  175. package/dist/__tests__/harness/view.test.d.ts +0 -2
  176. package/dist/__tests__/harness/view.test.d.ts.map +0 -1
  177. package/dist/__tests__/harness/view.test.js +0 -92
  178. package/dist/__tests__/harness/view.test.js.map +0 -1
  179. package/dist/__tests__/runtime.test.d.ts +0 -2
  180. package/dist/__tests__/runtime.test.d.ts.map +0 -1
  181. package/dist/__tests__/runtime.test.js +0 -141
  182. package/dist/__tests__/runtime.test.js.map +0 -1
  183. package/dist/cli.d.ts.map +0 -1
  184. package/dist/cli.js.map +0 -1
  185. package/dist/commands/__tests__/compile.test.d.ts +0 -2
  186. package/dist/commands/__tests__/compile.test.d.ts.map +0 -1
  187. package/dist/commands/__tests__/compile.test.js +0 -351
  188. package/dist/commands/__tests__/compile.test.js.map +0 -1
  189. package/dist/commands/__tests__/compile.toml-mutation.test.d.ts +0 -2
  190. package/dist/commands/__tests__/compile.toml-mutation.test.d.ts.map +0 -1
  191. package/dist/commands/__tests__/compile.toml-mutation.test.js +0 -69
  192. package/dist/commands/__tests__/compile.toml-mutation.test.js.map +0 -1
  193. package/dist/commands/__tests__/init.test.d.ts +0 -2
  194. package/dist/commands/__tests__/init.test.d.ts.map +0 -1
  195. package/dist/commands/__tests__/init.test.js +0 -163
  196. package/dist/commands/__tests__/init.test.js.map +0 -1
  197. package/dist/commands/__tests__/run.test.d.ts +0 -2
  198. package/dist/commands/__tests__/run.test.d.ts.map +0 -1
  199. package/dist/commands/__tests__/run.test.js +0 -166
  200. package/dist/commands/__tests__/run.test.js.map +0 -1
  201. package/dist/commands/__tests__/test-move.test.d.ts +0 -2
  202. package/dist/commands/__tests__/test-move.test.d.ts.map +0 -1
  203. package/dist/commands/__tests__/test-move.test.js +0 -59
  204. package/dist/commands/__tests__/test-move.test.js.map +0 -1
  205. package/dist/commands/__tests__/test.test.d.ts +0 -2
  206. package/dist/commands/__tests__/test.test.d.ts.map +0 -1
  207. package/dist/commands/__tests__/test.test.js +0 -168
  208. package/dist/commands/__tests__/test.test.js.map +0 -1
  209. package/dist/commands/__tests__/update.test.d.ts +0 -2
  210. package/dist/commands/__tests__/update.test.d.ts.map +0 -1
  211. package/dist/commands/__tests__/update.test.js +0 -176
  212. package/dist/commands/__tests__/update.test.js.map +0 -1
  213. package/dist/commands/compile.d.ts.map +0 -1
  214. package/dist/commands/compile.js.map +0 -1
  215. package/dist/commands/fork/__tests__/create.test.d.ts +0 -2
  216. package/dist/commands/fork/__tests__/create.test.d.ts.map +0 -1
  217. package/dist/commands/fork/__tests__/create.test.js +0 -108
  218. package/dist/commands/fork/__tests__/create.test.js.map +0 -1
  219. package/dist/commands/fork/__tests__/fund.test.d.ts +0 -2
  220. package/dist/commands/fork/__tests__/fund.test.d.ts.map +0 -1
  221. package/dist/commands/fork/__tests__/fund.test.js +0 -72
  222. package/dist/commands/fork/__tests__/fund.test.js.map +0 -1
  223. package/dist/commands/fork/__tests__/list.test.d.ts +0 -2
  224. package/dist/commands/fork/__tests__/list.test.d.ts.map +0 -1
  225. package/dist/commands/fork/__tests__/list.test.js +0 -119
  226. package/dist/commands/fork/__tests__/list.test.js.map +0 -1
  227. package/dist/commands/fork/__tests__/serve.test.d.ts +0 -2
  228. package/dist/commands/fork/__tests__/serve.test.d.ts.map +0 -1
  229. package/dist/commands/fork/__tests__/serve.test.js +0 -97
  230. package/dist/commands/fork/__tests__/serve.test.js.map +0 -1
  231. package/dist/commands/fork/__tests__/view-resource.test.d.ts +0 -2
  232. package/dist/commands/fork/__tests__/view-resource.test.d.ts.map +0 -1
  233. package/dist/commands/fork/__tests__/view-resource.test.js +0 -77
  234. package/dist/commands/fork/__tests__/view-resource.test.js.map +0 -1
  235. package/dist/commands/fork/create.d.ts.map +0 -1
  236. package/dist/commands/fork/create.js.map +0 -1
  237. package/dist/commands/fork/fund.d.ts.map +0 -1
  238. package/dist/commands/fork/fund.js.map +0 -1
  239. package/dist/commands/fork/list.d.ts.map +0 -1
  240. package/dist/commands/fork/list.js.map +0 -1
  241. package/dist/commands/fork/serve.d.ts.map +0 -1
  242. package/dist/commands/fork/serve.js.map +0 -1
  243. package/dist/commands/fork/view-resource.d.ts.map +0 -1
  244. package/dist/commands/fork/view-resource.js.map +0 -1
  245. package/dist/commands/init.d.ts.map +0 -1
  246. package/dist/commands/init.js.map +0 -1
  247. package/dist/commands/run.d.ts.map +0 -1
  248. package/dist/commands/run.js.map +0 -1
  249. package/dist/commands/test-move.d.ts.map +0 -1
  250. package/dist/commands/test-move.js.map +0 -1
  251. package/dist/commands/test.d.ts.map +0 -1
  252. package/dist/commands/test.js.map +0 -1
  253. package/dist/commands/update.d.ts.map +0 -1
  254. package/dist/commands/update.js.map +0 -1
  255. package/dist/core/AccountManager.d.ts.map +0 -1
  256. package/dist/core/AccountManager.js.map +0 -1
  257. package/dist/core/Publisher.d.ts.map +0 -1
  258. package/dist/core/Publisher.js.map +0 -1
  259. package/dist/core/__tests__/AccountManager.global-state.test.d.ts +0 -2
  260. package/dist/core/__tests__/AccountManager.global-state.test.d.ts.map +0 -1
  261. package/dist/core/__tests__/AccountManager.global-state.test.js +0 -69
  262. package/dist/core/__tests__/AccountManager.global-state.test.js.map +0 -1
  263. package/dist/core/__tests__/AccountManager.test.d.ts +0 -2
  264. package/dist/core/__tests__/AccountManager.test.d.ts.map +0 -1
  265. package/dist/core/__tests__/AccountManager.test.js +0 -239
  266. package/dist/core/__tests__/AccountManager.test.js.map +0 -1
  267. package/dist/core/__tests__/config.test.d.ts +0 -2
  268. package/dist/core/__tests__/config.test.d.ts.map +0 -1
  269. package/dist/core/__tests__/config.test.js +0 -311
  270. package/dist/core/__tests__/config.test.js.map +0 -1
  271. package/dist/core/__tests__/deployments.test.d.ts +0 -2
  272. package/dist/core/__tests__/deployments.test.d.ts.map +0 -1
  273. package/dist/core/__tests__/deployments.test.js +0 -201
  274. package/dist/core/__tests__/deployments.test.js.map +0 -1
  275. package/dist/core/__tests__/movementProfile.test.d.ts +0 -2
  276. package/dist/core/__tests__/movementProfile.test.d.ts.map +0 -1
  277. package/dist/core/__tests__/movementProfile.test.js +0 -112
  278. package/dist/core/__tests__/movementProfile.test.js.map +0 -1
  279. package/dist/core/__tests__/shell.test.d.ts +0 -2
  280. package/dist/core/__tests__/shell.test.d.ts.map +0 -1
  281. package/dist/core/__tests__/shell.test.js +0 -107
  282. package/dist/core/__tests__/shell.test.js.map +0 -1
  283. package/dist/core/config.d.ts.map +0 -1
  284. package/dist/core/config.js.map +0 -1
  285. package/dist/core/contract.d.ts.map +0 -1
  286. package/dist/core/contract.js.map +0 -1
  287. package/dist/core/deployments.d.ts.map +0 -1
  288. package/dist/core/deployments.js.map +0 -1
  289. package/dist/core/movementProfile.d.ts.map +0 -1
  290. package/dist/core/movementProfile.js.map +0 -1
  291. package/dist/core/shell.d.ts.map +0 -1
  292. package/dist/core/shell.js.map +0 -1
  293. package/dist/errors.d.ts.map +0 -1
  294. package/dist/errors.js.map +0 -1
  295. package/dist/fork/__tests__/manager.test.d.ts +0 -2
  296. package/dist/fork/__tests__/manager.test.d.ts.map +0 -1
  297. package/dist/fork/__tests__/manager.test.js +0 -309
  298. package/dist/fork/__tests__/manager.test.js.map +0 -1
  299. package/dist/fork/__tests__/server.cors.test.d.ts +0 -2
  300. package/dist/fork/__tests__/server.cors.test.d.ts.map +0 -1
  301. package/dist/fork/__tests__/server.cors.test.js +0 -79
  302. package/dist/fork/__tests__/server.cors.test.js.map +0 -1
  303. package/dist/fork/__tests__/server.test.d.ts +0 -2
  304. package/dist/fork/__tests__/server.test.d.ts.map +0 -1
  305. package/dist/fork/__tests__/server.test.js +0 -54
  306. package/dist/fork/__tests__/server.test.js.map +0 -1
  307. package/dist/fork/__tests__/storage.test.d.ts +0 -2
  308. package/dist/fork/__tests__/storage.test.d.ts.map +0 -1
  309. package/dist/fork/__tests__/storage.test.js +0 -222
  310. package/dist/fork/__tests__/storage.test.js.map +0 -1
  311. package/dist/fork/__tests__/test.test.d.ts +0 -2
  312. package/dist/fork/__tests__/test.test.d.ts.map +0 -1
  313. package/dist/fork/__tests__/test.test.js +0 -81
  314. package/dist/fork/__tests__/test.test.js.map +0 -1
  315. package/dist/fork/api.d.ts.map +0 -1
  316. package/dist/fork/api.js.map +0 -1
  317. package/dist/fork/manager.d.ts.map +0 -1
  318. package/dist/fork/manager.js.map +0 -1
  319. package/dist/fork/server.d.ts.map +0 -1
  320. package/dist/fork/server.js.map +0 -1
  321. package/dist/fork/storage.d.ts.map +0 -1
  322. package/dist/fork/storage.js.map +0 -1
  323. package/dist/fork/test.d.ts.map +0 -1
  324. package/dist/fork/test.js.map +0 -1
  325. package/dist/harness/Harness.d.ts.map +0 -1
  326. package/dist/harness/Harness.js.map +0 -1
  327. package/dist/harness/codeObject.d.ts.map +0 -1
  328. package/dist/harness/codeObject.js.map +0 -1
  329. package/dist/harness/errors.d.ts.map +0 -1
  330. package/dist/harness/errors.js.map +0 -1
  331. package/dist/harness/index.d.ts.map +0 -1
  332. package/dist/harness/index.js.map +0 -1
  333. package/dist/harness/proxy.d.ts.map +0 -1
  334. package/dist/harness/proxy.js.map +0 -1
  335. package/dist/harness/script.d.ts.map +0 -1
  336. package/dist/harness/script.js.map +0 -1
  337. package/dist/harness/view.d.ts.map +0 -1
  338. package/dist/harness/view.js.map +0 -1
  339. package/dist/helpers/__tests__/semver-utils.test.d.ts +0 -2
  340. package/dist/helpers/__tests__/semver-utils.test.d.ts.map +0 -1
  341. package/dist/helpers/__tests__/semver-utils.test.js +0 -103
  342. package/dist/helpers/__tests__/semver-utils.test.js.map +0 -1
  343. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts +0 -2
  344. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts.map +0 -1
  345. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js +0 -172
  346. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js.map +0 -1
  347. package/dist/helpers/assertions.d.ts.map +0 -1
  348. package/dist/helpers/assertions.js.map +0 -1
  349. package/dist/helpers/banner.d.ts.map +0 -1
  350. package/dist/helpers/banner.js.map +0 -1
  351. package/dist/helpers/index.d.ts.map +0 -1
  352. package/dist/helpers/index.js.map +0 -1
  353. package/dist/helpers/move-tests.d.ts.map +0 -1
  354. package/dist/helpers/move-tests.js.map +0 -1
  355. package/dist/helpers/npm-registry.d.ts.map +0 -1
  356. package/dist/helpers/npm-registry.js.map +0 -1
  357. package/dist/helpers/semver-utils.d.ts.map +0 -1
  358. package/dist/helpers/semver-utils.js.map +0 -1
  359. package/dist/helpers/setup.d.ts.map +0 -1
  360. package/dist/helpers/setup.js.map +0 -1
  361. package/dist/helpers/setupLocalTesting.d.ts.map +0 -1
  362. package/dist/helpers/setupLocalTesting.js.map +0 -1
  363. package/dist/helpers/testFixtures.d.ts.map +0 -1
  364. package/dist/helpers/testFixtures.js.map +0 -1
  365. package/dist/helpers/version-check.d.ts.map +0 -1
  366. package/dist/helpers/version-check.js.map +0 -1
  367. package/dist/index.d.ts.map +0 -1
  368. package/dist/index.js.map +0 -1
  369. package/dist/node/LocalNodeManager.d.ts.map +0 -1
  370. package/dist/node/LocalNodeManager.js.map +0 -1
  371. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts +0 -2
  372. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts.map +0 -1
  373. package/dist/node/__tests__/LocalNodeManager.api-port.test.js +0 -55
  374. package/dist/node/__tests__/LocalNodeManager.api-port.test.js.map +0 -1
  375. package/dist/node/__tests__/LocalNodeManager.test.d.ts +0 -2
  376. package/dist/node/__tests__/LocalNodeManager.test.d.ts.map +0 -1
  377. package/dist/node/__tests__/LocalNodeManager.test.js +0 -449
  378. package/dist/node/__tests__/LocalNodeManager.test.js.map +0 -1
  379. package/dist/runtime.d.ts.map +0 -1
  380. package/dist/runtime.js.map +0 -1
  381. package/dist/types/config.d.ts.map +0 -1
  382. package/dist/types/config.js.map +0 -1
  383. package/dist/types/fork.d.ts.map +0 -1
  384. package/dist/types/fork.js.map +0 -1
  385. package/dist/types/harness.d.ts.map +0 -1
  386. package/dist/types/harness.js.map +0 -1
  387. package/dist/types/runtime.d.ts.map +0 -1
  388. package/dist/types/runtime.js.map +0 -1
  389. package/dist/ui/__tests__/colors.test.d.ts +0 -2
  390. package/dist/ui/__tests__/colors.test.d.ts.map +0 -1
  391. package/dist/ui/__tests__/colors.test.js +0 -127
  392. package/dist/ui/__tests__/colors.test.js.map +0 -1
  393. package/dist/ui/__tests__/logger.test.d.ts +0 -2
  394. package/dist/ui/__tests__/logger.test.d.ts.map +0 -1
  395. package/dist/ui/__tests__/logger.test.js +0 -75
  396. package/dist/ui/__tests__/logger.test.js.map +0 -1
  397. package/dist/ui/colors.d.ts.map +0 -1
  398. package/dist/ui/colors.js.map +0 -1
  399. package/dist/ui/formatters.d.ts.map +0 -1
  400. package/dist/ui/formatters.js.map +0 -1
  401. package/dist/ui/index.d.ts.map +0 -1
  402. package/dist/ui/index.js.map +0 -1
  403. package/dist/ui/logger.d.ts.map +0 -1
  404. package/dist/ui/logger.js.map +0 -1
  405. package/dist/ui/spinner.d.ts.map +0 -1
  406. package/dist/ui/spinner.js.map +0 -1
  407. package/dist/ui/symbols.d.ts.map +0 -1
  408. package/dist/ui/symbols.js.map +0 -1
  409. package/dist/ui/table.d.ts.map +0 -1
  410. package/dist/ui/table.js.map +0 -1
  411. package/dist/utils/__tests__/address.test.d.ts +0 -2
  412. package/dist/utils/__tests__/address.test.d.ts.map +0 -1
  413. package/dist/utils/__tests__/address.test.js +0 -70
  414. package/dist/utils/__tests__/address.test.js.map +0 -1
  415. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts +0 -2
  416. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts.map +0 -1
  417. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js +0 -43
  418. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js.map +0 -1
  419. package/dist/utils/__tests__/childProcessAdapter.test.d.ts +0 -2
  420. package/dist/utils/__tests__/childProcessAdapter.test.d.ts.map +0 -1
  421. package/dist/utils/__tests__/childProcessAdapter.test.js +0 -217
  422. package/dist/utils/__tests__/childProcessAdapter.test.js.map +0 -1
  423. package/dist/utils/__tests__/runCli.test.d.ts +0 -2
  424. package/dist/utils/__tests__/runCli.test.d.ts.map +0 -1
  425. package/dist/utils/__tests__/runCli.test.js +0 -187
  426. package/dist/utils/__tests__/runCli.test.js.map +0 -1
  427. package/dist/utils/address.d.ts.map +0 -1
  428. package/dist/utils/address.js.map +0 -1
  429. package/dist/utils/childProcessAdapter.d.ts.map +0 -1
  430. package/dist/utils/childProcessAdapter.js.map +0 -1
  431. package/dist/utils/parseCliOutput.d.ts.map +0 -1
  432. package/dist/utils/parseCliOutput.js.map +0 -1
  433. package/dist/utils/redact.d.ts.map +0 -1
  434. package/dist/utils/redact.js.map +0 -1
  435. package/dist/utils/runCli.d.ts.map +0 -1
  436. package/dist/utils/runCli.js.map +0 -1
  437. package/src/__tests__/deployContract.test.ts +0 -438
  438. package/src/__tests__/errors.test.ts +0 -84
  439. package/src/__tests__/exports.test.ts +0 -32
  440. package/src/__tests__/fixtures/sigint-deploy-harness.ts +0 -96
  441. package/src/__tests__/fork/api.test.ts +0 -148
  442. package/src/__tests__/fork/api.timeout.test.ts +0 -150
  443. package/src/__tests__/harness/Harness.createLive.test.ts +0 -57
  444. package/src/__tests__/harness/Harness.proxy.test.ts +0 -111
  445. package/src/__tests__/harness/_fixture.ts +0 -131
  446. package/src/__tests__/harness/codeObject.deploy.test.ts +0 -319
  447. package/src/__tests__/harness/codeObject.upgrade.test.ts +0 -156
  448. package/src/__tests__/harness/script.test.ts +0 -245
  449. package/src/__tests__/harness/view.test.ts +0 -104
  450. package/src/__tests__/runtime.test.ts +0 -182
  451. package/src/cli.ts +0 -164
  452. package/src/commands/__tests__/compile.test.ts +0 -407
  453. package/src/commands/__tests__/compile.toml-mutation.test.ts +0 -77
  454. package/src/commands/__tests__/init.test.ts +0 -210
  455. package/src/commands/__tests__/run.test.ts +0 -192
  456. package/src/commands/__tests__/test-move.test.ts +0 -81
  457. package/src/commands/__tests__/test.test.ts +0 -204
  458. package/src/commands/__tests__/update.test.ts +0 -223
  459. package/src/commands/compile.ts +0 -339
  460. package/src/commands/fork/__tests__/create.test.ts +0 -132
  461. package/src/commands/fork/__tests__/fund.test.ts +0 -104
  462. package/src/commands/fork/__tests__/list.test.ts +0 -139
  463. package/src/commands/fork/__tests__/serve.test.ts +0 -121
  464. package/src/commands/fork/__tests__/view-resource.test.ts +0 -101
  465. package/src/commands/fork/create.ts +0 -110
  466. package/src/commands/fork/fund.ts +0 -64
  467. package/src/commands/fork/list.ts +0 -98
  468. package/src/commands/fork/serve.ts +0 -80
  469. package/src/commands/fork/view-resource.ts +0 -51
  470. package/src/commands/init.ts +0 -264
  471. package/src/commands/run.ts +0 -125
  472. package/src/commands/test-move.ts +0 -27
  473. package/src/commands/test.ts +0 -255
  474. package/src/commands/update.ts +0 -201
  475. package/src/core/AccountManager.ts +0 -457
  476. package/src/core/Publisher.ts +0 -310
  477. package/src/core/__tests__/AccountManager.global-state.test.ts +0 -83
  478. package/src/core/__tests__/AccountManager.test.ts +0 -290
  479. package/src/core/__tests__/config.test.ts +0 -377
  480. package/src/core/__tests__/deployments.test.ts +0 -247
  481. package/src/core/__tests__/movementProfile.test.ts +0 -131
  482. package/src/core/__tests__/shell.test.ts +0 -138
  483. package/src/core/config.ts +0 -286
  484. package/src/core/contract.ts +0 -103
  485. package/src/core/deployments.ts +0 -155
  486. package/src/core/movementProfile.ts +0 -127
  487. package/src/core/shell.ts +0 -86
  488. package/src/errors.ts +0 -81
  489. package/src/fork/__tests__/manager.test.ts +0 -385
  490. package/src/fork/__tests__/server.cors.test.ts +0 -101
  491. package/src/fork/__tests__/server.test.ts +0 -65
  492. package/src/fork/__tests__/storage.test.ts +0 -281
  493. package/src/fork/__tests__/test.test.ts +0 -97
  494. package/src/fork/api.ts +0 -190
  495. package/src/fork/manager.ts +0 -343
  496. package/src/fork/server.ts +0 -380
  497. package/src/fork/storage.ts +0 -253
  498. package/src/fork/test.ts +0 -221
  499. package/src/harness/Harness.ts +0 -231
  500. package/src/harness/codeObject.ts +0 -381
  501. package/src/harness/errors.ts +0 -22
  502. package/src/harness/index.ts +0 -3
  503. package/src/harness/proxy.ts +0 -40
  504. package/src/harness/script.ts +0 -200
  505. package/src/harness/view.ts +0 -34
  506. package/src/helpers/__tests__/semver-utils.test.ts +0 -121
  507. package/src/helpers/__tests__/setupLocalTesting.fork-network.test.ts +0 -212
  508. package/src/helpers/assertions.ts +0 -29
  509. package/src/helpers/banner.ts +0 -63
  510. package/src/helpers/index.ts +0 -37
  511. package/src/helpers/move-tests.ts +0 -72
  512. package/src/helpers/npm-registry.ts +0 -72
  513. package/src/helpers/semver-utils.ts +0 -54
  514. package/src/helpers/setup.ts +0 -54
  515. package/src/helpers/setupLocalTesting.ts +0 -387
  516. package/src/helpers/testFixtures.ts +0 -210
  517. package/src/helpers/version-check.ts +0 -114
  518. package/src/index.ts +0 -30
  519. package/src/node/LocalNodeManager.ts +0 -383
  520. package/src/node/__tests__/LocalNodeManager.api-port.test.ts +0 -62
  521. package/src/node/__tests__/LocalNodeManager.test.ts +0 -579
  522. package/src/runtime.ts +0 -157
  523. package/src/templates/.env.example +0 -9
  524. package/src/templates/.mocharc.json +0 -8
  525. package/src/templates/.vscode/settings.json +0 -11
  526. package/src/templates/README.md +0 -146
  527. package/src/templates/gitignore +0 -22
  528. package/src/templates/move/Move.toml +0 -19
  529. package/src/templates/move/sources/Counter.move +0 -96
  530. package/src/templates/movehat.config.ts +0 -57
  531. package/src/templates/package.json +0 -27
  532. package/src/templates/scripts/deploy-counter.ts +0 -66
  533. package/src/templates/tests/Counter.test.ts +0 -113
  534. package/src/templates/tsconfig.json +0 -15
  535. package/src/templates/types/movehat.d.ts +0 -101
  536. package/src/types/config.ts +0 -83
  537. package/src/types/fork.ts +0 -47
  538. package/src/types/harness.ts +0 -182
  539. package/src/types/runtime.ts +0 -57
  540. package/src/ui/__tests__/colors.test.ts +0 -156
  541. package/src/ui/__tests__/logger.test.ts +0 -89
  542. package/src/ui/colors.ts +0 -144
  543. package/src/ui/formatters.ts +0 -246
  544. package/src/ui/index.ts +0 -62
  545. package/src/ui/logger.ts +0 -310
  546. package/src/ui/spinner.ts +0 -218
  547. package/src/ui/symbols.ts +0 -80
  548. package/src/ui/table.ts +0 -191
  549. package/src/utils/__tests__/address.test.ts +0 -93
  550. package/src/utils/__tests__/childProcessAdapter.maxBuffer.test.ts +0 -51
  551. package/src/utils/__tests__/childProcessAdapter.test.ts +0 -266
  552. package/src/utils/__tests__/runCli.test.ts +0 -240
  553. package/src/utils/address.ts +0 -52
  554. package/src/utils/childProcessAdapter.ts +0 -244
  555. package/src/utils/parseCliOutput.ts +0 -27
  556. package/src/utils/redact.ts +0 -24
  557. package/src/utils/runCli.ts +0 -64
@@ -1,54 +0,0 @@
1
- import {
2
- Account,
3
- Aptos,
4
- AptosConfig,
5
- Ed25519PrivateKey,
6
- Network,
7
- } from "@aptos-labs/ts-sdk";
8
- import { loadUserConfig, resolveNetworkConfig } from "../core/config.js";
9
- import { MovehatConfig } from "../types/config.js";
10
- import { AccountManager } from "../core/AccountManager.js";
11
- import { logger } from "../ui/index.js";
12
-
13
- export interface TestEnvironment {
14
- aptos: Aptos;
15
- account: Account;
16
- config: MovehatConfig;
17
- }
18
-
19
- export async function setupTestEnvironment(networkName?: string): Promise<TestEnvironment> {
20
- // Load and resolve config for selected network
21
- const userConfig = await loadUserConfig();
22
- const network = networkName || process.env.MH_CLI_NETWORK;
23
- const config = await resolveNetworkConfig(userConfig, network);
24
-
25
- // Movement Network uses custom chain IDs, so we need to use Network.CUSTOM
26
- // and let the SDK fetch the actual chainId from the node
27
- const aptosConfig = new AptosConfig({
28
- network: Network.CUSTOM,
29
- fullnode: config.rpc,
30
- });
31
-
32
- const aptos = new Aptos(aptosConfig);
33
-
34
- // Load account using AccountManager
35
- const account = AccountManager.loadAccountFromPrivateKey(config.privateKey);
36
-
37
- logger.success("Test environment ready");
38
- logger.plain(` Account: ${account.accountAddress.toString()}`);
39
- logger.plain(` Network: ${config.network}`);
40
- logger.plain(` RPC: ${config.rpc}`);
41
- logger.newline();
42
-
43
- return {
44
- aptos,
45
- account,
46
- config,
47
- }
48
- }
49
-
50
- export function createTestAccount(): Account {
51
- return AccountManager.createAccount();
52
- }
53
-
54
-
@@ -1,387 +0,0 @@
1
- import { join } from "path";
2
- import { existsSync } from "fs";
3
- import { initRuntime } from "../runtime.js";
4
- import type { MovehatRuntime } from "../types/runtime.js";
5
- import { ForkManager } from "../fork/manager.js";
6
- import { ForkServer } from "../fork/server.js";
7
- import { LocalNodeManager } from "../node/LocalNodeManager.js";
8
- import { AccountManager } from "../core/AccountManager.js";
9
- import { logger } from "../ui/index.js";
10
- import type { LocalTestOptions } from "../types/config.js";
11
-
12
- const BUILTIN_FORK_RPCS: Record<string, string> = {
13
- testnet: "https://testnet.movementnetwork.xyz/v1",
14
- mainnet: "https://mainnet.movementnetwork.xyz/v1",
15
- };
16
-
17
- function resolveForkRpcUrl(
18
- network: string,
19
- override: string | undefined
20
- ): string {
21
- if (override !== undefined) return override;
22
- const builtin = BUILTIN_FORK_RPCS[network];
23
- if (builtin !== undefined) return builtin;
24
- throw new Error(
25
- `Cannot fork unknown network "${network}" without a forkRpcUrl. ` +
26
- `Either pass forkRpcUrl in LocalTestOptions or use one of: ` +
27
- `${Object.keys(BUILTIN_FORK_RPCS).join(", ")}.`
28
- );
29
- }
30
-
31
- /**
32
- * Context returned by {@link setupLocalTesting}.
33
- *
34
- * Replaces the module-scoped singletons that previously tracked the
35
- * "current" local node / fork server / fork manager. Each invocation now
36
- * owns its own handles, so two parallel `setupLocalTesting` calls in the
37
- * same process do not trample each other.
38
- *
39
- * @public The `runtime` and `teardown` fields are the supported surface.
40
- * `localNode`, `forkServer`, and `forkManager` are exposed for
41
- * escape hatches (e.g. mid-test `forkManager.resetState()`) but
42
- * their concrete shapes are `@internal`.
43
- */
44
- export interface LocalTestingContext {
45
- runtime: MovehatRuntime;
46
- /** @internal */
47
- localNode?: LocalNodeManager;
48
- /** @internal */
49
- forkServer?: ForkServer;
50
- /** @internal */
51
- forkManager?: ForkManager;
52
- /** Stop the local node and/or fork server owned by this context. */
53
- teardown: () => Promise<void>;
54
- }
55
-
56
- /**
57
- * Setup a local testing environment with either a local node or fork server
58
- *
59
- * This function provides a complete local testing setup similar to Hardhat:
60
- *
61
- * **Local Node Mode** (default, recommended):
62
- * 1. Starts a full Movement node locally
63
- * 2. Generates and funds test accounts from local faucet
64
- * 3. Auto-deploys modules (works because node can process transactions)
65
- * 4. Returns runtime ready to use
66
- *
67
- * **Fork Mode** (faster, read-only):
68
- * 1. Creates/loads a fork of testnet
69
- * 2. Starts a fork server
70
- * 3. Generates and funds accounts (in fork state only)
71
- * 4. Cannot auto-deploy (fork is read-only)
72
- * 5. Returns runtime for reading data
73
- *
74
- * @param options Configuration options for local testing
75
- * @returns LocalTestingContext with runtime and a teardown closure
76
- *
77
- * @example
78
- * ```typescript
79
- * // Local node mode (default) - Full blockchain, can deploy
80
- * const ctx = await setupLocalTesting({
81
- * mode: 'local-node',
82
- * accountLabels: ['alice', 'bob'],
83
- * autoDeploy: ['counter'], // works
84
- * });
85
- * // ...use ctx.runtime...
86
- * await ctx.teardown();
87
- * ```
88
- */
89
- export async function setupLocalTesting(
90
- options: LocalTestOptions = {}
91
- ): Promise<LocalTestingContext> {
92
- const mode = options.mode || 'local-node';
93
- const autoFund = options.autoFund !== false;
94
- const defaultBalance = options.defaultBalance || 100_000_000;
95
- const accountLabels = options.accountLabels || ["deployer", "alice", "bob"];
96
-
97
- logger.newline();
98
- logger.phase("Setting up local testing environment");
99
- logger.kv("Mode", mode, 2);
100
- logger.kv("Accounts", accountLabels.join(", "), 2);
101
- logger.newline();
102
-
103
- if (mode === 'local-node') {
104
- const { runtime, localNode } = await setupWithLocalNode(
105
- options, accountLabels, autoFund, defaultBalance
106
- );
107
- return {
108
- runtime,
109
- localNode,
110
- teardown: async () => {
111
- logger.newline();
112
- logger.step("Stopping local testing environment...");
113
- await localNode.stop();
114
- logger.success("Environment stopped");
115
- logger.newline();
116
- },
117
- };
118
- } else {
119
- const { runtime, forkServer, forkManager } = await setupWithFork(
120
- options, accountLabels, autoFund, defaultBalance
121
- );
122
- return {
123
- runtime,
124
- forkServer,
125
- forkManager,
126
- teardown: async () => {
127
- logger.newline();
128
- logger.step("Stopping local testing environment...");
129
- await forkServer.stop();
130
- logger.success("Environment stopped");
131
- logger.newline();
132
- },
133
- };
134
- }
135
- }
136
-
137
- /**
138
- * Setup using local Movement node (full blockchain)
139
- */
140
- async function setupWithLocalNode(
141
- options: LocalTestOptions,
142
- accountLabels: readonly string[],
143
- autoFund: boolean,
144
- defaultBalance: number
145
- ): Promise<{ runtime: MovehatRuntime; localNode: LocalNodeManager }> {
146
- const nodeTestDir = options.nodeTestDir || join(process.cwd(), ".movehat", "local-node");
147
- const nodeForceRestart = options.nodeForceRestart !== false;
148
- const nodeFaucetPort = options.nodeFaucetPort || 8081;
149
- const nodeApiPort = options.nodeApiPort || 8080;
150
- const nodeReadyPort = options.nodeReadyPort || 8070;
151
- const nodeSilent = options.nodeSilent ?? false;
152
-
153
- const localNode = new LocalNodeManager({
154
- testDir: nodeTestDir,
155
- forceRestart: nodeForceRestart,
156
- faucetPort: nodeFaucetPort,
157
- apiPort: nodeApiPort,
158
- readyPort: nodeReadyPort,
159
- silent: nodeSilent,
160
- });
161
-
162
- const nodeInfo = await localNode.start();
163
-
164
- // Once the node is up, every later step (account creation, funding,
165
- // runtime init, autoDeploy) is fallible. If any of them throws we
166
- // must stop the node we just started — otherwise the child process
167
- // leaks and port 8080 stays bound until the OS reaps it (manifests as
168
- // "Movement command failed" on the next test:example run).
169
- try {
170
- logger.step(`Generating ${accountLabels.length} test accounts...`);
171
- const accounts = AccountManager.createBatch(accountLabels);
172
-
173
- for (const [label, account] of Object.entries(accounts)) {
174
- logger.plain(` ${label}: ${account.accountAddress.toString()}`);
175
- }
176
- logger.newline();
177
-
178
- if (autoFund) {
179
- const accountsList = Object.values(accounts);
180
- await localNode.fundAccounts(accountsList, defaultBalance);
181
- }
182
-
183
- logger.step("Initializing runtime for local network...");
184
-
185
- const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
186
-
187
- if (!deployerPrivateKey) {
188
- throw new Error("Failed to get deployer private key");
189
- }
190
-
191
- const runtime = await initRuntime({
192
- network: "local",
193
- configOverride: {
194
- networks: {
195
- local: {
196
- url: `${nodeInfo.rpcUrl}/v1`,
197
- chainId: "local",
198
- },
199
- },
200
- accounts: [deployerPrivateKey],
201
- },
202
- });
203
-
204
- logger.success("Runtime initialized");
205
- logger.newline();
206
-
207
- if (options.autoDeploy && options.autoDeploy.length > 0) {
208
- logger.step(`Auto-deploying ${options.autoDeploy.length} module(s)...`);
209
-
210
- const previousRedeploy = process.env.MH_CLI_REDEPLOY;
211
- process.env.MH_CLI_REDEPLOY = 'true';
212
-
213
- try {
214
- for (const moduleName of options.autoDeploy) {
215
- try {
216
- logger.plain(` Deploying ${moduleName}...`);
217
- await runtime.deployContract(moduleName);
218
- logger.success(`${moduleName} deployed`, 2);
219
- } catch (error) {
220
- const msg = error instanceof Error ? error.message : String(error);
221
- logger.error(`Failed to deploy ${moduleName}: ${msg}`, 2);
222
- throw error;
223
- }
224
- }
225
- } finally {
226
- if (previousRedeploy === undefined) {
227
- delete process.env.MH_CLI_REDEPLOY;
228
- } else {
229
- process.env.MH_CLI_REDEPLOY = previousRedeploy;
230
- }
231
- }
232
-
233
- logger.newline();
234
- }
235
-
236
- logger.success("Local testing environment ready!");
237
- logger.newline();
238
- logger.plain(` Mode: local-node`);
239
- logger.plain(` RPC: ${nodeInfo.rpcUrl}/v1`);
240
- logger.plain(` Faucet: ${nodeInfo.faucetUrl}`);
241
- logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
242
- logger.plain(` Balance per account: ${defaultBalance / 100_000_000} MOVE`);
243
- logger.newline();
244
-
245
- return { runtime, localNode };
246
- } catch (error) {
247
- // Best-effort cleanup. Swallow the stop() error so the original
248
- // setup failure surfaces unchanged.
249
- await localNode.stop().catch(() => {});
250
- throw error;
251
- }
252
- }
253
-
254
- /**
255
- * Setup using fork server (read-only)
256
- */
257
- async function setupWithFork(
258
- options: LocalTestOptions,
259
- accountLabels: readonly string[],
260
- autoFund: boolean,
261
- defaultBalance: number
262
- ): Promise<{ runtime: MovehatRuntime; forkServer: ForkServer; forkManager: ForkManager }> {
263
- const forkNetwork = options.forkNetwork || "testnet";
264
- const forkName = options.forkName || "test-local";
265
- const forkPort = options.forkPort || 8080;
266
- const forkResetState = options.forkResetState !== false;
267
-
268
- logger.plain(` Fork network: ${forkNetwork}`);
269
- logger.plain(` Fork name: ${forkName}`);
270
- logger.plain(` Server port: ${forkPort}`);
271
- logger.newline();
272
-
273
- if (options.autoDeploy && options.autoDeploy.length > 0) {
274
- logger.warning("Auto-deploy doesn't work in fork mode (read-only).");
275
- logger.plain(" Switch to 'local-node' mode for deployment support.");
276
- logger.newline();
277
- }
278
-
279
- const forkPath = join(process.cwd(), ".movehat", "forks", forkName);
280
- const forkManager = new ForkManager(forkPath);
281
-
282
- const forkExists = existsSync(join(forkPath, "metadata.json"));
283
-
284
- if (!forkExists) {
285
- logger.step(`Creating fork from ${forkNetwork}...`);
286
- const rpcUrl = resolveForkRpcUrl(forkNetwork, options.forkRpcUrl);
287
- await forkManager.initialize(rpcUrl, forkNetwork, options.forkApiKey);
288
- logger.success(`Fork created at ${forkPath}`);
289
- logger.newline();
290
- } else {
291
- logger.success(`Loading existing fork from ${forkPath}`);
292
- // setApiKey BEFORE load() so the reconstructed MovementApiClient
293
- // picks up the header. load() rebuilds the client using current
294
- // apiKey state.
295
- if (options.forkApiKey !== undefined) {
296
- forkManager.setApiKey(options.forkApiKey);
297
- }
298
- forkManager.load();
299
-
300
- // Guard against the audit-f1 follow-up case: the default forkName
301
- // ("test-local") doesn't encode the network, so a fork created for
302
- // testnet would silently serve mainnet requests. Refuse to load
303
- // when the saved metadata's network doesn't match what the caller
304
- // asked for — the user must either pass a network-specific
305
- // `forkName` or delete the stale directory.
306
- const savedNetwork = forkManager.getMetadata().network;
307
- if (savedNetwork !== forkNetwork) {
308
- throw new Error(
309
- `Fork at ${forkPath} was created for network "${savedNetwork}" but ` +
310
- `you requested "${forkNetwork}". Use a different forkName ` +
311
- `(e.g. "${forkNetwork}-local") or delete ${forkPath} to recreate.`
312
- );
313
- }
314
-
315
- if (forkResetState) {
316
- logger.step("Resetting fork state...");
317
- await forkManager.resetState();
318
- }
319
-
320
- logger.newline();
321
- }
322
-
323
- logger.step(`Starting fork server on port ${forkPort}...`);
324
- const forkServer = new ForkServer(forkPath, forkPort);
325
-
326
- await forkServer.start();
327
- logger.success(`Fork server running at http://localhost:${forkPort}`);
328
- logger.newline();
329
-
330
- // Same cleanup-on-failure pattern as setupWithLocalNode: once the
331
- // fork server is listening, any later throw must stop the server or
332
- // we leak the listener.
333
- try {
334
- await new Promise((resolve) => setTimeout(resolve, 500));
335
-
336
- logger.step(`Generating ${accountLabels.length} test accounts...`);
337
- const accounts = AccountManager.createBatch(accountLabels);
338
-
339
- for (const [label, account] of Object.entries(accounts)) {
340
- logger.plain(` ${label}: ${account.accountAddress.toString()}`);
341
- }
342
- logger.newline();
343
-
344
- if (autoFund) {
345
- const addresses = Object.values(accounts).map((acc) =>
346
- acc.accountAddress.toString()
347
- );
348
- await forkManager.fundMultipleAccounts(addresses, defaultBalance);
349
- }
350
-
351
- logger.step("Initializing runtime for local network...");
352
-
353
- const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
354
-
355
- if (!deployerPrivateKey) {
356
- throw new Error("Failed to get deployer private key");
357
- }
358
-
359
- const runtime = await initRuntime({
360
- network: "local",
361
- configOverride: {
362
- networks: {
363
- local: {
364
- url: `http://localhost:${forkPort}/v1`,
365
- chainId: "local",
366
- },
367
- },
368
- accounts: [deployerPrivateKey],
369
- },
370
- });
371
-
372
- logger.success("Runtime initialized");
373
- logger.newline();
374
- logger.success("Local testing environment ready!");
375
- logger.newline();
376
- logger.plain(` Mode: fork (read-only)`);
377
- logger.plain(` RPC: http://localhost:${forkPort}/v1`);
378
- logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
379
- logger.plain(` Balance per account: ${defaultBalance / 100_000_000} MOVE`);
380
- logger.newline();
381
-
382
- return { runtime, forkServer, forkManager };
383
- } catch (error) {
384
- await forkServer.stop().catch(() => {});
385
- throw error;
386
- }
387
- }
@@ -1,210 +0,0 @@
1
- import type { Account } from "@aptos-labs/ts-sdk";
2
- import type { MovehatRuntime } from "../types/runtime.js";
3
- import type { MoveContract } from "../core/contract.js";
4
- import { AccountManager } from "../core/AccountManager.js";
5
- import { setupLocalTesting } from "./setupLocalTesting.js";
6
- import { logger } from "../ui/index.js";
7
- import type { LocalTestOptions } from "../types/config.js";
8
-
9
- /**
10
- * Test fixture with pre-configured accounts and contracts
11
- *
12
- * @template TModules - Union type of module names for type-safe contract access
13
- */
14
- export interface TestFixture<TModules extends string = string> {
15
- /** Movehat runtime instance */
16
- mh: MovehatRuntime;
17
-
18
- /** Named accounts (deployer, alice, bob, etc.) */
19
- accounts: {
20
- deployer: Account;
21
- alice: Account;
22
- bob: Account;
23
- [key: string]: Account;
24
- };
25
-
26
- /** Deployed contracts by module name - type-safe based on modules parameter */
27
- contracts: Record<TModules, MoveContract>;
28
-
29
- /**
30
- * Stop the local node / fork server this fixture started.
31
- *
32
- * Does **not** clear the shared `AccountManager` pool — clearing it
33
- * would break parallel `setupTestFixture` invocations that share the
34
- * pool. The pool grows for the lifetime of the process; the process
35
- * exit reclaims it.
36
- */
37
- teardown: () => Promise<void>;
38
- }
39
-
40
- /**
41
- * Setup a complete test fixture with local fork, accounts, and deployed contracts
42
- *
43
- * This is the recommended way to setup tests in movehat. It provides:
44
- * - Local fork server (no testnet required)
45
- * - Pre-funded labeled accounts
46
- * - Auto-deployment of specified modules
47
- * - Contract instances ready to use
48
- *
49
- * @param modules Array of module names to auto-deploy
50
- * @param accountLabels Optional array of account labels (defaults to ['alice', 'bob'])
51
- * @param options Optional LocalTestOptions for advanced configuration
52
- * @returns TestFixture with runtime, accounts, contracts, and a teardown closure
53
- *
54
- * @example
55
- * ```typescript
56
- * import { setupTestFixture, type TestFixture } from "movehat/helpers";
57
- *
58
- * describe("Counter Contract", () => {
59
- * let fixture: TestFixture<"counter">;
60
- *
61
- * before(async function () {
62
- * this.timeout(60000);
63
- * fixture = await setupTestFixture(['counter'] as const, ['alice', 'bob']);
64
- * });
65
- *
66
- * after(async () => {
67
- * await fixture.teardown();
68
- * });
69
- *
70
- * it("alice can increment", async () => {
71
- * const tx = await fixture.contracts.counter.call(
72
- * fixture.accounts.alice, "increment", []
73
- * );
74
- * expect(tx.success).to.be.true;
75
- * });
76
- * });
77
- * ```
78
- */
79
- export async function setupTestFixture<TModules extends readonly string[]>(
80
- modules: TModules,
81
- accountLabels: string[] = ["alice", "bob"],
82
- options: Partial<LocalTestOptions> = {}
83
- ): Promise<TestFixture<TModules[number]>> {
84
- logger.newline();
85
- logger.step("Setting up test fixture...");
86
- logger.plain(` Modules to deploy: ${modules.join(", ")}`);
87
- logger.plain(` Account labels: deployer, ${accountLabels.join(", ")}`);
88
- logger.newline();
89
-
90
- const allLabels = ["deployer", ...accountLabels.filter((l) => l !== "deployer")];
91
-
92
- const setupOptions: LocalTestOptions = {
93
- ...options,
94
- accountLabels: allLabels,
95
- autoDeploy: modules,
96
- };
97
-
98
- const ctx = await setupLocalTesting(setupOptions);
99
-
100
- // Assembly is fallible — a missing deployment address (autoDeploy
101
- // silently failed) or any unexpected throw would leak the started
102
- // infrastructure. Tear down ctx on failure; the outer caller sees
103
- // the original assembly error unchanged.
104
- try {
105
- const mh = ctx.runtime;
106
-
107
- const labeledAccounts = AccountManager.getLabeledAccounts();
108
-
109
- // any: TestFixture.accounts has a structural shape with required
110
- // `deployer/alice/bob` plus a `[key: string]: Account` index. The
111
- // builder fills the index dynamically; typing this as the exact
112
- // intersection would require a generic over `accountLabels` and
113
- // produce noisy errors for the dynamic key assignment below.
114
- const accounts: any = {
115
- // non-null: setupLocalTesting → setupWithLocalNode/Fork unconditionally
116
- // funds the deployer account via accountLabels[0]; deployer is always
117
- // first by construction at L93 above.
118
- deployer: labeledAccounts.deployer!,
119
- };
120
-
121
- for (const label of accountLabels) {
122
- accounts[label] = labeledAccounts[label] || AccountManager.getOrCreateLabeled(label);
123
- }
124
-
125
- const contracts = {} as Record<TModules[number], MoveContract>;
126
-
127
- for (const moduleName of modules) {
128
- const deploymentAddress = mh.getDeploymentAddress(moduleName);
129
-
130
- if (!deploymentAddress) {
131
- throw new Error(
132
- `Module "${moduleName}" was not deployed. Check auto-deploy logs.`
133
- );
134
- }
135
-
136
- contracts[moduleName as TModules[number]] = mh.getContract(deploymentAddress, moduleName);
137
- logger.success(`Contract "${moduleName}" ready at ${deploymentAddress}`, 2);
138
- }
139
-
140
- logger.newline();
141
- logger.success("Test fixture ready!");
142
- logger.newline();
143
-
144
- return {
145
- mh,
146
- accounts,
147
- contracts,
148
- teardown: ctx.teardown,
149
- } as TestFixture<TModules[number]>;
150
- } catch (error) {
151
- await ctx.teardown().catch(() => {});
152
- throw error;
153
- }
154
- }
155
-
156
- /**
157
- * Create a minimal test fixture without auto-deployment
158
- * Useful when you want to deploy contracts manually in tests
159
- *
160
- * @param accountLabels Account labels to create (defaults to ['alice', 'bob'])
161
- * @param options Optional LocalTestOptions
162
- * @returns Partial TestFixture (without contracts) plus a teardown closure
163
- */
164
- export async function setupMinimalFixture(
165
- accountLabels: string[] = ["alice", "bob"],
166
- options: Partial<LocalTestOptions> = {}
167
- ): Promise<Omit<TestFixture, "contracts">> {
168
- logger.newline();
169
- logger.step("Setting up minimal test fixture (no auto-deploy)...");
170
-
171
- const allLabels = ["deployer", ...accountLabels.filter((l) => l !== "deployer")];
172
-
173
- const setupOptions: LocalTestOptions = {
174
- ...options,
175
- accountLabels: allLabels,
176
- autoDeploy: [],
177
- };
178
-
179
- const ctx = await setupLocalTesting(setupOptions);
180
-
181
- // Same teardown-on-assembly-failure pattern as setupTestFixture.
182
- try {
183
- const mh = ctx.runtime;
184
-
185
- const labeledAccounts = AccountManager.getLabeledAccounts();
186
-
187
- // any: see setupTestFixture above — same dynamic-key builder pattern.
188
- const accounts: any = {
189
- // non-null: deployer is unconditionally added to allLabels at L156 above.
190
- deployer: labeledAccounts.deployer!,
191
- };
192
-
193
- for (const label of accountLabels) {
194
- accounts[label] = labeledAccounts[label] || AccountManager.getOrCreateLabeled(label);
195
- }
196
-
197
- logger.newline();
198
- logger.success("Minimal fixture ready!");
199
- logger.newline();
200
-
201
- return {
202
- mh,
203
- accounts,
204
- teardown: ctx.teardown,
205
- };
206
- } catch (error) {
207
- await ctx.teardown().catch(() => {});
208
- throw error;
209
- }
210
- }