movehat 0.2.4 → 0.2.5

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 +0 -1
  19. package/dist/commands/run.js +0 -1
  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 +0 -1
  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 +0 -1
  121. package/dist/utils/parseCliOutput.js +0 -1
  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,114 +0,0 @@
1
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
2
- import { join } from "path";
3
- import { homedir } from "os";
4
- import { isNewerVersion } from "./semver-utils.js";
5
- import { fetchLatestVersion } from "./npm-registry.js";
6
- import { box, colors, formatCommand } from "../ui/index.js";
7
-
8
- interface VersionCache {
9
- lastChecked: number;
10
- latestVersion: string;
11
- }
12
-
13
- const CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
14
- const CACHE_DIR = join(homedir(), ".movehat");
15
- const CACHE_FILE = join(CACHE_DIR, "version-cache.json");
16
-
17
- /**
18
- * Read version from cache
19
- */
20
- function readCache(): VersionCache | null {
21
- try {
22
- if (!existsSync(CACHE_FILE)) {
23
- return null;
24
- }
25
-
26
- const cacheContent = readFileSync(CACHE_FILE, "utf-8");
27
- return JSON.parse(cacheContent) as VersionCache;
28
- } catch (error) {
29
- return null;
30
- }
31
- }
32
-
33
- /**
34
- * Write version to cache
35
- */
36
- function writeCache(latestVersion: string): void {
37
- try {
38
- if (!existsSync(CACHE_DIR)) {
39
- mkdirSync(CACHE_DIR, { recursive: true });
40
- }
41
-
42
- const cache: VersionCache = {
43
- lastChecked: Date.now(),
44
- latestVersion,
45
- };
46
-
47
- writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
48
- } catch (error) {
49
- // Silently fail - don't interrupt user's workflow
50
- }
51
- }
52
-
53
- /**
54
- * Check if a newer version is available and notify the user
55
- *
56
- * This function:
57
- * - Runs synchronously using cached version data
58
- * - Displays update notification immediately if cache indicates newer version
59
- * - Asynchronously updates cache in background (non-blocking)
60
- * - Respects 24-hour cache duration to avoid excessive network requests
61
- *
62
- * @param currentVersion - Currently installed version (e.g., '1.0.0')
63
- * @param packageName - npm package name to check (e.g., 'movehat')
64
- *
65
- * @example
66
- * checkForUpdates('1.0.0', 'movehat');
67
- */
68
- export function checkForUpdates(currentVersion: string, packageName: string): void {
69
- try {
70
- // Skip update check for development versions (0.0.0)
71
- if (currentVersion === '0.0.0') {
72
- return;
73
- }
74
-
75
- const cache = readCache();
76
- let shouldNotify = false;
77
-
78
- // Check cache synchronously for immediate notification
79
- if (cache && isNewerVersion(currentVersion, cache.latestVersion)) {
80
- shouldNotify = true;
81
- }
82
-
83
- // Display notification immediately if cache says there's an update
84
- if (shouldNotify && cache) {
85
- const updateMessage = box(
86
- `${colors.brandBright('Update Available!')}\n\n` +
87
- `${currentVersion} ${colors.dim('→')} ${colors.success(cache.latestVersion)}\n\n` +
88
- `${formatCommand('movehat update')}`,
89
- { borderColor: 'warning', padding: 1 }
90
- );
91
-
92
- console.error('\n' + updateMessage + '\n');
93
- }
94
-
95
- // Update cache in background if needed (doesn't block)
96
- if (!cache || Date.now() - cache.lastChecked > CACHE_DURATION) {
97
- setImmediate(async () => {
98
- try {
99
- const latestVersion = await fetchLatestVersion(packageName, {
100
- timeout: 2000,
101
- throwOnError: false,
102
- });
103
- if (latestVersion) {
104
- writeCache(latestVersion);
105
- }
106
- } catch (error) {
107
- // Silently fail
108
- }
109
- });
110
- }
111
- } catch (error) {
112
- // Silently fail - never interrupt user's workflow
113
- }
114
- }
package/src/index.ts DELETED
@@ -1,30 +0,0 @@
1
- // Export all helpers for end users
2
- export * from "./helpers/index.js";
3
- export type { MovehatConfig } from "./types/config.js";
4
-
5
- // Movehat Runtime Environment. `initRuntime` is a public utility but
6
- // external callers should prefer Harness; it's the construction primitive
7
- // `Harness.createLive` uses.
8
- export { initRuntime } from "./runtime.js";
9
- export type { MovehatRuntime, NetworkInfo } from "./types/runtime.js";
10
-
11
- // Export Fork system
12
- export { ForkManager } from "./fork/manager.js";
13
- export { MovementApiClient } from "./fork/api.js";
14
- export { ForkStorage } from "./fork/storage.js";
15
- export { ForkServer } from "./fork/server.js";
16
- export type { ForkMetadata, AccountState, LedgerInfo, AccountData, AccountResource } from "./types/fork.js";
17
-
18
- // Export custom errors
19
- export { ModuleAlreadyDeployedError, PostPublishError } from "./errors.js";
20
-
21
- export { Harness, HarnessDisposedError } from "./harness/index.js";
22
- export type { HarnessMode } from "./harness/index.js";
23
- export type {
24
- DeployCodeObjectOptions,
25
- UpgradeCodeObjectOptions,
26
- CodeObjectInfo,
27
- RunViewFunctionOptions,
28
- RunMoveScriptOptions,
29
- MoveScriptResult,
30
- } from "./types/harness.js";
@@ -1,383 +0,0 @@
1
- import { existsSync, rmSync } from "fs";
2
- import { join } from "path";
3
- import { Account } from "@aptos-labs/ts-sdk";
4
- import {
5
- defaultChildProcessAdapter,
6
- type ChildProcessAdapter,
7
- type SpawnedProcess,
8
- } from "../utils/childProcessAdapter.js";
9
- import { logger, isVerbose, colors, symbols } from "../ui/index.js";
10
- import { withTimedSpinner, withSpinner } from "../ui/spinner.js";
11
-
12
- /**
13
- * Substrings that always surface from the movement subprocess regardless
14
- * of verbosity. These are signals the user must see to debug a stuck
15
- * startup (panic, fatal, address-in-use). Tested in
16
- * __tests__/LocalNodeManager.test.ts to guard against silent regressions.
17
- */
18
- const CRITICAL_NODE_OUTPUT = /panic|fatal|address already in use|EADDRINUSE/i;
19
-
20
- export interface LocalNodeOptions {
21
- testDir?: string; // Directory for node data (default: .movehat/local-node)
22
- forceRestart?: boolean; // Clean state and start fresh
23
- faucetPort?: number; // Faucet port (default: 8081)
24
- /**
25
- * REST API port. Movement CLI (`movement node run-localnet`) does
26
- * not accept a flag to change this — the node always binds 8080.
27
- * Passing any other value triggers a warning at construction time
28
- * and is replaced with 8080. Field is kept for source compatibility.
29
- *
30
- * @deprecated Movement CLI does not honor this. Omit it.
31
- */
32
- apiPort?: number;
33
- readyPort?: number; // Ready server port (default: 8070)
34
- silent?: boolean; // Suppress node output
35
- /**
36
- * Override the child-process adapter. Tests inject a fake adapter so
37
- * the daemon spawn never reaches the real `movement` binary.
38
- */
39
- adapter?: ChildProcessAdapter;
40
- }
41
-
42
- const MOVEMENT_API_PORT = 8080;
43
-
44
- export interface LocalNodeInfo {
45
- rpcUrl: string;
46
- faucetUrl: string;
47
- readyUrl: string;
48
- testDir: string;
49
- }
50
-
51
- /**
52
- * Manages the lifecycle of a local Movement node
53
- *
54
- * This class handles:
55
- * - Starting/stopping a local Movement node
56
- * - Health checks and ready detection
57
- * - Auto-funding from the built-in faucet
58
- * - Cleanup on shutdown
59
- */
60
- export class LocalNodeManager {
61
- private spawned: SpawnedProcess | null = null;
62
- private killed = false;
63
- private options: Required<Omit<LocalNodeOptions, "adapter">>;
64
- private readonly adapter: ChildProcessAdapter;
65
- private starting: boolean = false;
66
-
67
- constructor(options: LocalNodeOptions = {}) {
68
- this.adapter = options.adapter ?? defaultChildProcessAdapter;
69
- if (
70
- options.apiPort !== undefined &&
71
- options.apiPort !== MOVEMENT_API_PORT
72
- ) {
73
- // Movement CLI hardcodes the REST API port to 8080. Surfacing
74
- // the requested port via getNodeInfo() would lie about where
75
- // the node actually listens.
76
- logger.warning(
77
- `LocalNodeManager: apiPort=${options.apiPort} is not supported by ` +
78
- `movement node run-localnet; forcing REST API port to 8080.`
79
- );
80
- }
81
- this.options = {
82
- testDir: options.testDir || join(process.cwd(), ".movehat", "local-node"),
83
- forceRestart: options.forceRestart ?? false,
84
- faucetPort: options.faucetPort || 8081,
85
- apiPort: MOVEMENT_API_PORT,
86
- readyPort: options.readyPort || 8070,
87
- silent: options.silent ?? false,
88
- };
89
- }
90
-
91
- /**
92
- * Start the local Movement node
93
- *
94
- * @returns LocalNodeInfo with connection details
95
- */
96
- async start(): Promise<LocalNodeInfo> {
97
- if (this.spawned) {
98
- logger.info("Local node already running");
99
- return this.getNodeInfo();
100
- }
101
-
102
- if (this.starting) {
103
- throw new Error("Node is already starting");
104
- }
105
-
106
- this.starting = true;
107
-
108
- try {
109
- logger.newline();
110
- logger.step("Starting local Movement node");
111
- logger.kv("Test directory", this.options.testDir, 2);
112
- logger.kv("RPC port", String(this.options.apiPort), 2);
113
- logger.kv("Faucet port", String(this.options.faucetPort), 2);
114
- logger.kv("Ready port", String(this.options.readyPort), 2);
115
- logger.newline();
116
-
117
- // Clean state if force restart
118
- if (this.options.forceRestart && existsSync(this.options.testDir)) {
119
- logger.step("Cleaning previous node state...");
120
- rmSync(this.options.testDir, { recursive: true, force: true });
121
- }
122
-
123
- // Build command arguments
124
- const args = [
125
- "node",
126
- "run-localnet",
127
- "--test-dir", this.options.testDir,
128
- "--faucet-port", this.options.faucetPort.toString(),
129
- "--ready-server-listen-port", this.options.readyPort.toString(),
130
- "--assume-yes", // Auto-accept prompts
131
- ];
132
-
133
- if (this.options.forceRestart) {
134
- args.push("--force-restart");
135
- }
136
-
137
- // Start the node process via the injectable adapter.
138
- this.killed = false;
139
- this.spawned = this.adapter.spawn({
140
- command: "movement",
141
- args,
142
- stdio: this.options.silent ? "ignore" : "pipe",
143
- });
144
-
145
- // Subprocess output handling (see §9 Console UX in CLAUDE.md):
146
- // - stdout chatter is hidden by default; gated by isVerbose()
147
- // - lines matching CRITICAL_NODE_OUTPUT always surface as warnings
148
- // so the user is never silenced through a real failure
149
- // - stderr is always surfaced (real signal), modulo benign WARN
150
- // lines that the movement binary emits during normal startup
151
- if (!this.options.silent && this.spawned.stdout && this.spawned.stderr) {
152
- this.spawned.stdout.on("data", (data: Buffer) => {
153
- const output = data.toString().trim();
154
- if (!output) return;
155
- if (CRITICAL_NODE_OUTPUT.test(output)) {
156
- logger.warning(output);
157
- return;
158
- }
159
- if (isVerbose()) {
160
- for (const line of output.split("\n")) {
161
- if (line) console.log(` ${colors.muted(symbols.pointer + " " + line)}`);
162
- }
163
- }
164
- });
165
-
166
- this.spawned.stderr.on("data", (data: Buffer) => {
167
- const output = data.toString().trim();
168
- if (!output) return;
169
- // Movement CLI uses stderr for both progress messages
170
- // ("Applying post startup steps...", "Compiling...") and
171
- // real errors. Stream channel alone isn't a reliable
172
- // signal — gate routine lines behind verbosity, escalate
173
- // anything matching CRITICAL_NODE_OUTPUT regardless.
174
- if (CRITICAL_NODE_OUTPUT.test(output)) {
175
- logger.error(output);
176
- return;
177
- }
178
- if (isVerbose()) {
179
- for (const line of output.split("\n")) {
180
- if (line) console.error(` ${colors.muted(symbols.pointer + " " + line)}`);
181
- }
182
- }
183
- });
184
- }
185
-
186
- // The adapter's `exited` promise settles on both natural exit and on
187
- // spawn-time error (e.g. ENOENT). On error the code is `null` — we don't
188
- // log a generic "spawn failed" message here because `waitForReady` will
189
- // surface a detailed timeout-with-hints error if movement never starts.
190
- void this.spawned.exited.then(({ code }) => {
191
- if (code !== null && code !== 0) {
192
- logger.error(`Local node exited with code ${code}`);
193
- }
194
- this.spawned = null;
195
- });
196
-
197
- // Wait for node to be ready — wrapped in withTimedSpinner so the
198
- // user sees live elapsed-time feedback while subprocess chatter is
199
- // hidden in non-verbose mode.
200
- await withTimedSpinner("Waiting for node to be ready", () =>
201
- this.waitForReady(60000)
202
- );
203
-
204
- logger.newline();
205
-
206
- this.starting = false;
207
- return this.getNodeInfo();
208
-
209
- } catch (error) {
210
- this.starting = false;
211
-
212
- // Cleanup on failure
213
- if (this.spawned) {
214
- this.killed = true;
215
- this.spawned.kill();
216
- this.spawned = null;
217
- }
218
-
219
- throw error;
220
- }
221
- }
222
-
223
- /**
224
- * Stop the local node
225
- */
226
- async stop(): Promise<void> {
227
- if (!this.spawned) {
228
- return;
229
- }
230
-
231
- logger.newline();
232
- logger.step("Stopping local Movement node...");
233
-
234
- const spawned = this.spawned;
235
-
236
- // Mark killed synchronously so isRunning() reflects the intent right away,
237
- // mirroring node's ChildProcess.killed semantics.
238
- this.killed = true;
239
-
240
- // Send SIGTERM for graceful shutdown
241
- spawned.kill("SIGTERM");
242
-
243
- // Force kill after 5 seconds if still running
244
- const forceTimer = setTimeout(() => {
245
- if (this.spawned === spawned) {
246
- logger.warning("Force killing node...");
247
- spawned.kill("SIGKILL");
248
- }
249
- }, 5000);
250
-
251
- try {
252
- await spawned.exited;
253
- logger.success("Local node stopped");
254
- logger.newline();
255
- } finally {
256
- clearTimeout(forceTimer);
257
- if (this.spawned === spawned) {
258
- this.spawned = null;
259
- }
260
- }
261
- }
262
-
263
- /**
264
- * Check if the node is running
265
- */
266
- isRunning(): boolean {
267
- return this.spawned !== null && !this.killed;
268
- }
269
-
270
- /**
271
- * Get node connection info
272
- */
273
- getNodeInfo(): LocalNodeInfo {
274
- return {
275
- rpcUrl: `http://127.0.0.1:${this.options.apiPort}`,
276
- faucetUrl: `http://127.0.0.1:${this.options.faucetPort}`,
277
- readyUrl: `http://127.0.0.1:${this.options.readyPort}`,
278
- testDir: this.options.testDir,
279
- };
280
- }
281
-
282
- /**
283
- * Wait for the node to be ready by checking the ready endpoint
284
- */
285
- private async waitForReady(timeoutMs: number = 60000): Promise<void> {
286
- const startTime = Date.now();
287
- const readyUrl = `http://127.0.0.1:${this.options.readyPort}`;
288
-
289
- while (Date.now() - startTime < timeoutMs) {
290
- try {
291
- const response = await fetch(readyUrl);
292
-
293
- if (response.ok) {
294
- return; // Node is ready!
295
- }
296
- } catch (error) {
297
- // Node not ready yet, continue waiting
298
- }
299
-
300
- // Wait 1 second before next check
301
- await new Promise((resolve) => setTimeout(resolve, 1000));
302
- }
303
-
304
- throw new Error(
305
- `Local node did not become ready within ${timeoutMs / 1000} seconds. ` +
306
- `Check that 'movement' CLI is installed and ports ${this.options.apiPort}, ` +
307
- `${this.options.faucetPort}, and ${this.options.readyPort} are available.`
308
- );
309
- }
310
-
311
- /**
312
- * Fund an account using the local faucet
313
- *
314
- * @param account Account instance or address to fund
315
- * @param amount Amount in octas (default: 100_000_000 = 1 MOVE)
316
- */
317
- async fundAccount(account: Account | string, amount: number = 100_000_000): Promise<void> {
318
- if (!this.isRunning()) {
319
- throw new Error("Local node is not running. Call start() first.");
320
- }
321
-
322
- // Extract address if Account is provided
323
- const address = typeof account === 'string'
324
- ? account
325
- : account.accountAddress.toString();
326
-
327
- // Use query parameters for the Movement faucet
328
- const faucetUrl = `http://127.0.0.1:${this.options.faucetPort}/mint?amount=${amount}&address=${address}`;
329
-
330
- try {
331
- const response = await fetch(faucetUrl, {
332
- method: "POST",
333
- });
334
-
335
- if (!response.ok) {
336
- const errorText = await response.text();
337
- throw new Error(`Faucet request failed: ${errorText}`);
338
- }
339
-
340
- const result = await response.json();
341
- if (isVerbose()) {
342
- logger.success(`Funded ${address} with ${amount} octas`, 2);
343
- }
344
-
345
- return result;
346
- } catch (error) {
347
- const msg = error instanceof Error ? error.message : String(error);
348
- throw new Error(`Failed to fund account: ${msg}`);
349
- }
350
- }
351
-
352
- /**
353
- * Fund multiple accounts in batch
354
- */
355
- async fundAccounts(accounts: (Account | string)[], amount: number = 100_000_000): Promise<void> {
356
- logger.newline();
357
- await withSpinner(
358
- `Funding ${accounts.length} accounts from local faucet`,
359
- async () => {
360
- for (const account of accounts) {
361
- await this.fundAccount(account, amount);
362
- }
363
- },
364
- `Funded ${accounts.length} accounts (${(amount / 1e8).toFixed(0)} MOVE each)`,
365
- );
366
- logger.newline();
367
- }
368
-
369
- /**
370
- * Clean up node data directory
371
- */
372
- async clean(): Promise<void> {
373
- if (this.isRunning()) {
374
- throw new Error("Cannot clean while node is running. Stop the node first.");
375
- }
376
-
377
- if (existsSync(this.options.testDir)) {
378
- logger.step(`Cleaning node data at ${this.options.testDir}...`);
379
- rmSync(this.options.testDir, { recursive: true, force: true });
380
- logger.success("Node data cleaned");
381
- }
382
- }
383
- }
@@ -1,62 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
- import { mkdtempSync, rmSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
-
6
- import { LocalNodeManager } from "../LocalNodeManager.js";
7
- import { logger } from "../../ui/index.js";
8
-
9
- /**
10
- * F9 — `apiPort` must not lie about where the node listens.
11
- *
12
- * `movement node run-localnet` (Movement CLI 7.4.0) does NOT accept a
13
- * flag to change the REST API port. It always binds 8080. Earlier
14
- * versions of LocalNodeManager accepted `apiPort: 9000` from the
15
- * caller, stored it, and surfaced `http://127.0.0.1:9000` from
16
- * `getNodeInfo()` — but the actual node was still on 8080. That
17
- * mismatch would silently surface as "Movement command failed" with
18
- * no useful signal. F9 closes the gap by refusing to lie: the
19
- * effective port is 8080 regardless of what the caller passes, with a
20
- * warning when they pass anything else.
21
- */
22
-
23
- describe("F9 — LocalNodeManager apiPort is constrained to 8080", () => {
24
- let tmpDir: string;
25
- let warnSpy: ReturnType<typeof vi.spyOn>;
26
-
27
- beforeEach(() => {
28
- tmpDir = mkdtempSync(join(tmpdir(), "movehat-f9-"));
29
- warnSpy = vi.spyOn(logger, "warning").mockImplementation(() => undefined);
30
- vi.spyOn(logger, "step").mockImplementation(() => undefined);
31
- vi.spyOn(logger, "plain").mockImplementation(() => undefined);
32
- vi.spyOn(logger, "newline").mockImplementation(() => undefined);
33
- vi.spyOn(logger, "success").mockImplementation(() => undefined);
34
- vi.spyOn(logger, "error").mockImplementation(() => undefined);
35
- });
36
-
37
- afterEach(() => {
38
- vi.restoreAllMocks();
39
- rmSync(tmpDir, { recursive: true, force: true });
40
- });
41
-
42
- it("ignores non-default apiPort, forces 8080, and warns", () => {
43
- const mgr = new LocalNodeManager({ testDir: tmpDir, apiPort: 9000 });
44
- expect(mgr.getNodeInfo().rpcUrl).toBe("http://127.0.0.1:8080");
45
- expect(warnSpy).toHaveBeenCalledTimes(1);
46
- const msg = warnSpy.mock.calls[0]?.[0] as string;
47
- expect(msg).toMatch(/8080/);
48
- expect(msg).toMatch(/apiPort|REST API port/i);
49
- });
50
-
51
- it("accepts apiPort: 8080 without warning", () => {
52
- const mgr = new LocalNodeManager({ testDir: tmpDir, apiPort: 8080 });
53
- expect(mgr.getNodeInfo().rpcUrl).toBe("http://127.0.0.1:8080");
54
- expect(warnSpy).not.toHaveBeenCalled();
55
- });
56
-
57
- it("accepts omitted apiPort without warning (default path)", () => {
58
- const mgr = new LocalNodeManager({ testDir: tmpDir });
59
- expect(mgr.getNodeInfo().rpcUrl).toBe("http://127.0.0.1:8080");
60
- expect(warnSpy).not.toHaveBeenCalled();
61
- });
62
- });