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,579 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
- import { EventEmitter } from "node:events";
3
- import { PassThrough } from "node:stream";
4
- import { mkdtempSync, rmSync, existsSync, mkdirSync } from "node:fs";
5
- import { tmpdir } from "node:os";
6
- import { join } from "node:path";
7
-
8
- import { LocalNodeManager } from "../LocalNodeManager.js";
9
- import type {
10
- ChildProcessAdapter,
11
- SpawnInput,
12
- SpawnedProcess,
13
- } from "../../utils/childProcessAdapter.js";
14
-
15
- /**
16
- * Tests for `LocalNodeManager`.
17
- *
18
- * Strategy:
19
- * - Inject a fake `ChildProcessAdapter` so we control the spawn
20
- * handle (stdout/stderr streams, kill semantics, exit promise).
21
- * - Stub global `fetch` so the ready/faucet endpoints return
22
- * controllable responses without real HTTP.
23
- *
24
- * What we DON'T test here:
25
- * - The 60-second ready timeout in real-time (would block the suite).
26
- * Instead we either stub fetch to succeed on first call, or for the
27
- * timeout-path test we shrink the timeout via a wrapper that bypasses
28
- * `start()` and calls a faster path. The timeout error message is
29
- * verified by exercising `start()` with a never-ready fetch and
30
- * fake timers.
31
- */
32
-
33
- interface FakeSpawnedProcess extends SpawnedProcess {
34
- /** Test helper — manually trigger the "exited" promise resolution. */
35
- __exit: (code: number | null, signal: NodeJS.Signals | null) => void;
36
- }
37
-
38
- function buildFakeSpawned(): FakeSpawnedProcess {
39
- const stdout = new PassThrough();
40
- const stderr = new PassThrough();
41
- const stdin = new PassThrough();
42
- let exitResolve!: (v: { code: number | null; signal: NodeJS.Signals | null }) => void;
43
- const exited = new Promise<{ code: number | null; signal: NodeJS.Signals | null }>(
44
- (resolve) => {
45
- exitResolve = resolve;
46
- }
47
- );
48
- let killed = false;
49
- const proc: FakeSpawnedProcess = {
50
- pid: 4242,
51
- stdout,
52
- stderr,
53
- stdin,
54
- kill: (_signal?: NodeJS.Signals) => {
55
- if (killed) return false;
56
- killed = true;
57
- // Resolve `exited` shortly after kill so `stop()` doesn't hang.
58
- setImmediate(() => exitResolve({ code: null, signal: _signal ?? "SIGTERM" }));
59
- return true;
60
- },
61
- exited,
62
- __exit: (code, signal) => exitResolve({ code, signal }),
63
- };
64
- return proc;
65
- }
66
-
67
- function buildFakeAdapter(): {
68
- adapter: ChildProcessAdapter;
69
- calls: SpawnInput[];
70
- spawned: FakeSpawnedProcess[];
71
- } {
72
- const calls: SpawnInput[] = [];
73
- const spawned: FakeSpawnedProcess[] = [];
74
- const adapter: ChildProcessAdapter = {
75
- run: vi.fn(),
76
- spawn: (input) => {
77
- calls.push(input);
78
- const proc = buildFakeSpawned();
79
- spawned.push(proc);
80
- return proc;
81
- },
82
- };
83
- return { adapter, calls, spawned };
84
- }
85
-
86
- function stubFetchOnce(response: { ok: boolean; text?: () => Promise<string>; json?: () => Promise<unknown> }) {
87
- const fn = vi.fn().mockResolvedValueOnce(response);
88
- vi.stubGlobal("fetch", fn);
89
- return fn;
90
- }
91
-
92
- function stubFetchAlwaysOk() {
93
- const fn = vi.fn().mockResolvedValue({ ok: true, json: async () => ({}) });
94
- vi.stubGlobal("fetch", fn);
95
- return fn;
96
- }
97
-
98
- describe("LocalNodeManager — start / stop / lifecycle", () => {
99
- let tmpDir: string;
100
- let logSpy: ReturnType<typeof vi.spyOn>;
101
- let errSpy: ReturnType<typeof vi.spyOn>;
102
-
103
- beforeEach(() => {
104
- tmpDir = mkdtempSync(join(tmpdir(), "movehat-localnode-"));
105
- // The logger prints to stdout/stderr; silence the noise for cleaner test output.
106
- logSpy = vi.spyOn(console, "log").mockImplementation(() => undefined);
107
- errSpy = vi.spyOn(console, "error").mockImplementation(() => undefined);
108
- });
109
-
110
- afterEach(() => {
111
- vi.restoreAllMocks();
112
- vi.unstubAllGlobals();
113
- if (existsSync(tmpDir)) {
114
- rmSync(tmpDir, { recursive: true, force: true });
115
- }
116
- });
117
-
118
- it("constructs with sensible defaults from getNodeInfo", () => {
119
- const { adapter } = buildFakeAdapter();
120
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
121
-
122
- const info = mgr.getNodeInfo();
123
- expect(info.rpcUrl).toBe("http://127.0.0.1:8080");
124
- expect(info.faucetUrl).toBe("http://127.0.0.1:8081");
125
- expect(info.readyUrl).toBe("http://127.0.0.1:8070");
126
- expect(info.testDir).toBe(tmpDir);
127
- });
128
-
129
- it("honors custom faucet/ready ports; apiPort is pinned to 8080 (see F9)", () => {
130
- const { adapter } = buildFakeAdapter();
131
- const mgr = new LocalNodeManager({
132
- adapter,
133
- testDir: tmpDir,
134
- faucetPort: 9001,
135
- readyPort: 9002,
136
- });
137
- const info = mgr.getNodeInfo();
138
- // Movement CLI does not accept a flag for the REST API port; see
139
- // LocalNodeManager.api-port.test.ts for the F9 contract.
140
- expect(info.rpcUrl).toBe("http://127.0.0.1:8080");
141
- expect(info.faucetUrl).toContain(":9001");
142
- expect(info.readyUrl).toContain(":9002");
143
- });
144
-
145
- it("isRunning reports false before start", () => {
146
- const { adapter } = buildFakeAdapter();
147
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
148
- expect(mgr.isRunning()).toBe(false);
149
- });
150
-
151
- it("start spawns 'movement node run-localnet' with the expected args", async () => {
152
- const { adapter, calls } = buildFakeAdapter();
153
- stubFetchAlwaysOk();
154
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
155
-
156
- await mgr.start();
157
-
158
- expect(calls).toHaveLength(1);
159
- expect(calls[0]?.command).toBe("movement");
160
- const args = calls[0]?.args ?? [];
161
- expect(args.slice(0, 2)).toEqual(["node", "run-localnet"]);
162
- expect(args).toContain("--test-dir");
163
- expect(args).toContain(tmpDir);
164
- expect(args).toContain("--faucet-port");
165
- expect(args).toContain("8081");
166
- expect(args).toContain("--assume-yes");
167
- expect(mgr.isRunning()).toBe(true);
168
- });
169
-
170
- it("start in silent mode does not wire stdout/stderr listeners", async () => {
171
- const { adapter, spawned } = buildFakeAdapter();
172
- stubFetchAlwaysOk();
173
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
174
-
175
- await mgr.start();
176
-
177
- // The PassThrough streams should have no `data` listeners attached
178
- // when `silent: true` is set.
179
- const proc = spawned[0]!;
180
- expect(proc.stdout!.listenerCount("data")).toBe(0);
181
- expect(proc.stderr!.listenerCount("data")).toBe(0);
182
- });
183
-
184
- it("start in non-silent mode wires stdout/stderr listeners that respect §9 filtering", async () => {
185
- const { adapter, spawned } = buildFakeAdapter();
186
- stubFetchAlwaysOk();
187
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: false });
188
-
189
- await mgr.start();
190
-
191
- const proc = spawned[0]!;
192
- expect(proc.stdout!.listenerCount("data")).toBeGreaterThan(0);
193
- expect(proc.stderr!.listenerCount("data")).toBeGreaterThan(0);
194
- // Detailed filter behavior — what passes through vs what's gated
195
- // behind isVerbose() — lives in the "§9 console UX" describe block
196
- // below. This test only locks the listener-wiring contract.
197
- });
198
-
199
- it("force-restart cleans the test directory before spawn", async () => {
200
- const { adapter } = buildFakeAdapter();
201
- stubFetchAlwaysOk();
202
- const planted = join(tmpDir, "stale-file.txt");
203
- // Create a stale file to prove the cleanup actually removes it.
204
- mkdirSync(tmpDir, { recursive: true });
205
- require("node:fs").writeFileSync(planted, "stale");
206
- expect(existsSync(planted)).toBe(true);
207
-
208
- const mgr = new LocalNodeManager({
209
- adapter,
210
- testDir: tmpDir,
211
- forceRestart: true,
212
- silent: true,
213
- });
214
-
215
- await mgr.start();
216
- expect(existsSync(planted)).toBe(false);
217
- });
218
-
219
- it("force-restart appends --force-restart to the CLI args", async () => {
220
- const { adapter, calls } = buildFakeAdapter();
221
- stubFetchAlwaysOk();
222
- const mgr = new LocalNodeManager({
223
- adapter,
224
- testDir: tmpDir,
225
- forceRestart: true,
226
- silent: true,
227
- });
228
- await mgr.start();
229
- expect(calls[0]?.args).toContain("--force-restart");
230
- });
231
-
232
- it("calling start twice returns the same node info (idempotent)", async () => {
233
- const { adapter, calls } = buildFakeAdapter();
234
- stubFetchAlwaysOk();
235
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
236
-
237
- const info1 = await mgr.start();
238
- const info2 = await mgr.start();
239
- expect(info2).toEqual(info1);
240
- expect(calls).toHaveLength(1);
241
- });
242
-
243
- it("stop signals SIGTERM and clears the spawned handle", async () => {
244
- const { adapter, spawned } = buildFakeAdapter();
245
- stubFetchAlwaysOk();
246
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
247
- await mgr.start();
248
-
249
- const killSpy = vi.spyOn(spawned[0]!, "kill");
250
- await mgr.stop();
251
-
252
- expect(killSpy).toHaveBeenCalledWith("SIGTERM");
253
- expect(mgr.isRunning()).toBe(false);
254
- });
255
-
256
- it("stop is a no-op when no node is running", async () => {
257
- const { adapter } = buildFakeAdapter();
258
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
259
- // Should not throw.
260
- await mgr.stop();
261
- expect(mgr.isRunning()).toBe(false);
262
- });
263
-
264
- it("clean refuses while the node is running", async () => {
265
- const { adapter } = buildFakeAdapter();
266
- stubFetchAlwaysOk();
267
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
268
- await mgr.start();
269
-
270
- await expect(mgr.clean()).rejects.toThrow(/Cannot clean while node is running/);
271
- });
272
-
273
- it("clean removes the test directory after stop", async () => {
274
- const { adapter } = buildFakeAdapter();
275
- stubFetchAlwaysOk();
276
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
277
- await mgr.start();
278
- await mgr.stop();
279
-
280
- expect(existsSync(tmpDir)).toBe(true);
281
- await mgr.clean();
282
- expect(existsSync(tmpDir)).toBe(false);
283
- });
284
-
285
- it("clean is a no-op when the test directory doesn't exist", async () => {
286
- const { adapter } = buildFakeAdapter();
287
- const missing = join(tmpDir, "never-created");
288
- const mgr = new LocalNodeManager({ adapter, testDir: missing });
289
- // Should not throw.
290
- await mgr.clean();
291
- });
292
- });
293
-
294
- describe("LocalNodeManager — start failure paths", () => {
295
- let tmpDir: string;
296
-
297
- beforeEach(() => {
298
- tmpDir = mkdtempSync(join(tmpdir(), "movehat-localnode-"));
299
- vi.spyOn(console, "log").mockImplementation(() => undefined);
300
- vi.spyOn(console, "error").mockImplementation(() => undefined);
301
- });
302
-
303
- afterEach(() => {
304
- vi.restoreAllMocks();
305
- vi.unstubAllGlobals();
306
- if (existsSync(tmpDir)) rmSync(tmpDir, { recursive: true, force: true });
307
- });
308
-
309
- it("waitForReady timeout surfaces a clear error AND cleans up the spawn", async () => {
310
- const { adapter, spawned } = buildFakeAdapter();
311
- // Always-failing fetch — node never becomes ready.
312
- vi.stubGlobal(
313
- "fetch",
314
- vi.fn().mockRejectedValue(new Error("ECONNREFUSED"))
315
- );
316
-
317
- vi.useFakeTimers();
318
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
319
-
320
- // Attach the .catch handler synchronously so the eventual rejection
321
- // never lands as an unhandled promise. vi.advanceTimersByTimeAsync
322
- // drives the waitForReady loop forward; we then await the captured
323
- // error and assert on it.
324
- let captured: unknown;
325
- const startPromise = mgr.start().catch((e) => {
326
- captured = e;
327
- });
328
-
329
- // Drive the 60s timeout forward — each loop iteration does fetch +
330
- // sleep(1000). Advance well past 60 000 ms.
331
- await vi.advanceTimersByTimeAsync(61_000);
332
- await startPromise;
333
-
334
- expect(captured).toBeInstanceOf(Error);
335
- expect((captured as Error).message).toMatch(/did not become ready/);
336
- // The spawn handle must have been killed in the catch arm.
337
- expect(spawned[0]).toBeDefined();
338
- expect(mgr.isRunning()).toBe(false);
339
- vi.useRealTimers();
340
- });
341
- });
342
-
343
- describe("LocalNodeManager — fundAccount", () => {
344
- let tmpDir: string;
345
-
346
- beforeEach(() => {
347
- tmpDir = mkdtempSync(join(tmpdir(), "movehat-localnode-"));
348
- vi.spyOn(console, "log").mockImplementation(() => undefined);
349
- vi.spyOn(console, "error").mockImplementation(() => undefined);
350
- });
351
-
352
- afterEach(() => {
353
- vi.restoreAllMocks();
354
- vi.unstubAllGlobals();
355
- if (existsSync(tmpDir)) rmSync(tmpDir, { recursive: true, force: true });
356
- });
357
-
358
- it("rejects when called before the node is running", async () => {
359
- const { adapter } = buildFakeAdapter();
360
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
361
- await expect(mgr.fundAccount("0xabc", 100)).rejects.toThrow(
362
- /Local node is not running/
363
- );
364
- });
365
-
366
- it("posts to the faucet endpoint and returns the parsed JSON on success", async () => {
367
- const { adapter } = buildFakeAdapter();
368
- // First fetch = ready check; subsequent = faucet mint.
369
- const fetchFn = vi.fn();
370
- fetchFn.mockResolvedValueOnce({ ok: true }); // waitForReady
371
- fetchFn.mockResolvedValueOnce({
372
- ok: true,
373
- json: async () => ({ txn_hashes: ["0xdeadbeef"] }),
374
- }); // faucet
375
- vi.stubGlobal("fetch", fetchFn);
376
-
377
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
378
- await mgr.start();
379
-
380
- const addr = "0x" + "1".repeat(64);
381
- const result = await mgr.fundAccount(addr, 12345);
382
-
383
- expect(result).toEqual({ txn_hashes: ["0xdeadbeef"] });
384
- const faucetCall = fetchFn.mock.calls[1]!;
385
- expect(faucetCall[0]).toContain("/mint?amount=12345&address=" + addr);
386
- expect(faucetCall[1]?.method).toBe("POST");
387
- });
388
-
389
- it("rethrows a clear error when the faucet returns non-ok", async () => {
390
- const { adapter } = buildFakeAdapter();
391
- const fetchFn = vi.fn();
392
- fetchFn.mockResolvedValueOnce({ ok: true }); // waitForReady
393
- fetchFn.mockResolvedValueOnce({
394
- ok: false,
395
- text: async () => "out of funds",
396
- json: async () => ({}),
397
- });
398
- vi.stubGlobal("fetch", fetchFn);
399
-
400
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
401
- await mgr.start();
402
-
403
- await expect(mgr.fundAccount("0xabc", 100)).rejects.toThrow(
404
- /Failed to fund account.*out of funds/
405
- );
406
- });
407
-
408
- it("fundAccount accepts an Account-like object by reading accountAddress.toString()", async () => {
409
- const { adapter } = buildFakeAdapter();
410
- const fetchFn = vi.fn();
411
- fetchFn.mockResolvedValueOnce({ ok: true }); // waitForReady
412
- fetchFn.mockResolvedValueOnce({
413
- ok: true,
414
- json: async () => ({}),
415
- });
416
- vi.stubGlobal("fetch", fetchFn);
417
-
418
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
419
- await mgr.start();
420
-
421
- const fakeAccount = {
422
- accountAddress: { toString: () => "0xfeedbeef" },
423
- } as never; // exercises the typeof-not-string branch
424
-
425
- await mgr.fundAccount(fakeAccount, 100);
426
- expect(fetchFn.mock.calls[1]![0]).toContain("address=0xfeedbeef");
427
- });
428
-
429
- it("fundAccounts iterates and funds each account in turn", async () => {
430
- const { adapter } = buildFakeAdapter();
431
- const fetchFn = vi.fn();
432
- fetchFn.mockResolvedValueOnce({ ok: true }); // waitForReady
433
- fetchFn.mockResolvedValue({ ok: true, json: async () => ({}) });
434
- vi.stubGlobal("fetch", fetchFn);
435
-
436
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir, silent: true });
437
- await mgr.start();
438
-
439
- await mgr.fundAccounts(["0x1", "0x2", "0x3"], 100);
440
- // 1 ready + 3 mint calls = 4 total.
441
- expect(fetchFn.mock.calls.length).toBeGreaterThanOrEqual(4);
442
- });
443
- });
444
-
445
- describe("LocalNodeManager — subprocess output filtering (§9 console UX)", () => {
446
- let tmpDir: string;
447
- let logSpy: ReturnType<typeof vi.spyOn>;
448
- let errSpy: ReturnType<typeof vi.spyOn>;
449
- let warnSpy: ReturnType<typeof vi.spyOn>;
450
-
451
- beforeEach(() => {
452
- tmpDir = mkdtempSync(join(tmpdir(), "movehat-localnode-filter-"));
453
- logSpy = vi.spyOn(console, "log").mockImplementation(() => undefined);
454
- errSpy = vi.spyOn(console, "error").mockImplementation(() => undefined);
455
- warnSpy = vi.spyOn(console, "warn").mockImplementation(() => undefined);
456
- // Ensure quiet mode is the default for each test; the verbose tests
457
- // set MOVEHAT_VERBOSE explicitly inside their own scope.
458
- delete process.env.MOVEHAT_VERBOSE;
459
- });
460
-
461
- afterEach(() => {
462
- vi.restoreAllMocks();
463
- vi.unstubAllGlobals();
464
- delete process.env.MOVEHAT_VERBOSE;
465
- if (existsSync(tmpDir)) {
466
- rmSync(tmpDir, { recursive: true, force: true });
467
- }
468
- });
469
-
470
- it("hides routine stdout chatter from the movement node in quiet mode", async () => {
471
- const { adapter, spawned } = buildFakeAdapter();
472
- stubFetchAlwaysOk();
473
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
474
- await mgr.start();
475
-
476
- const proc = spawned[0]!;
477
- logSpy.mockClear();
478
-
479
- // Push routine chatter — exactly the noise we used to spam to stdout.
480
- proc.stdout!.emit("data", Buffer.from("Loading aptos framework module"));
481
- proc.stdout!.emit("data", Buffer.from("Compiling Move bytecode"));
482
- proc.stdout!.emit("data", Buffer.from("aptos_account: account created"));
483
-
484
- // None of these should have reached stdout (no `[Node]` prefix, no
485
- // muted gray `›` prefix). The only console.log calls that may arise
486
- // are from the spinner mock falling back to plain text — but since
487
- // ora auto-disables in non-TTY (vitest is non-TTY), even those are
488
- // suppressed.
489
- const stdoutCalls = logSpy.mock.calls.flat().join(" ");
490
- expect(stdoutCalls).not.toContain("Loading aptos framework module");
491
- expect(stdoutCalls).not.toContain("Compiling Move bytecode");
492
- expect(stdoutCalls).not.toContain("aptos_account: account created");
493
- });
494
-
495
- it("always surfaces panic / fatal lines as warnings, even in quiet mode", async () => {
496
- const { adapter, spawned } = buildFakeAdapter();
497
- stubFetchAlwaysOk();
498
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
499
- await mgr.start();
500
-
501
- const proc = spawned[0]!;
502
- warnSpy.mockClear();
503
-
504
- proc.stdout!.emit("data", Buffer.from("thread 'main' panicked at 'state corrupted'"));
505
-
506
- const warnCalls = warnSpy.mock.calls.flat().join(" ");
507
- expect(warnCalls).toContain("panicked");
508
- });
509
-
510
- it("surfaces 'address already in use' (port conflict) regardless of verbosity", async () => {
511
- const { adapter, spawned } = buildFakeAdapter();
512
- stubFetchAlwaysOk();
513
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
514
- await mgr.start();
515
-
516
- const proc = spawned[0]!;
517
- warnSpy.mockClear();
518
-
519
- proc.stdout!.emit(
520
- "data",
521
- Buffer.from("error: address already in use: 127.0.0.1:8080"),
522
- );
523
-
524
- const warnCalls = warnSpy.mock.calls.flat().join(" ");
525
- expect(warnCalls).toContain("address already in use");
526
- });
527
-
528
- it("surfaces stdout chatter with gray prefix in verbose mode", async () => {
529
- process.env.MOVEHAT_VERBOSE = "1";
530
- const { adapter, spawned } = buildFakeAdapter();
531
- stubFetchAlwaysOk();
532
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
533
- await mgr.start();
534
-
535
- const proc = spawned[0]!;
536
- logSpy.mockClear();
537
-
538
- proc.stdout!.emit("data", Buffer.from("Loading aptos framework module"));
539
-
540
- const stdoutCalls = logSpy.mock.calls.flat().join(" ");
541
- expect(stdoutCalls).toContain("Loading aptos framework module");
542
- });
543
-
544
- it("always surfaces critical stderr (panic/EADDRINUSE) via logger.error", async () => {
545
- const { adapter, spawned } = buildFakeAdapter();
546
- stubFetchAlwaysOk();
547
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
548
- await mgr.start();
549
-
550
- const proc = spawned[0]!;
551
- errSpy.mockClear();
552
-
553
- proc.stderr!.emit("data", Buffer.from("thread panicked: failed to bind socket"));
554
-
555
- const stderrCalls = errSpy.mock.calls.flat().join(" ");
556
- expect(stderrCalls).toContain("panicked");
557
- });
558
-
559
- it("hides routine progress stderr in quiet mode (Movement CLI emits progress to stderr too)", async () => {
560
- const { adapter, spawned } = buildFakeAdapter();
561
- stubFetchAlwaysOk();
562
- const mgr = new LocalNodeManager({ adapter, testDir: tmpDir });
563
- await mgr.start();
564
-
565
- const proc = spawned[0]!;
566
- errSpy.mockClear();
567
-
568
- // The movement subprocess emits progress messages to stderr that
569
- // are NOT errors: "Applying post startup steps...", "Compiling,
570
- // may take a little while...". Hiding stream channel from the
571
- // user keeps the console clean.
572
- proc.stderr!.emit("data", Buffer.from("Applying post startup steps..."));
573
- proc.stderr!.emit("data", Buffer.from("[WARN] deprecated config field"));
574
-
575
- const stderrCalls = errSpy.mock.calls.flat().join(" ");
576
- expect(stderrCalls).not.toContain("Applying post startup steps");
577
- expect(stderrCalls).not.toContain("deprecated config field");
578
- });
579
- });