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
package/src/ui/table.ts DELETED
@@ -1,191 +0,0 @@
1
- import Table from 'cli-table3';
2
- import { shouldUseColor, colors } from './colors.js';
3
-
4
- /**
5
- * Table preset types for different use cases
6
- */
7
- export type TablePreset = 'default' | 'compact' | 'markdown' | 'borderless';
8
-
9
- /**
10
- * Column alignment options
11
- */
12
- export type Alignment = 'left' | 'center' | 'right';
13
-
14
- /**
15
- * Table configuration options
16
- */
17
- export interface TableConfig {
18
- /** Column headers */
19
- head?: string[];
20
- /** Preset style (default: 'default') */
21
- preset?: TablePreset;
22
- /** Column widths (optional) */
23
- colWidths?: number[];
24
- /** Column alignments (optional) */
25
- colAligns?: Alignment[];
26
- /** Custom style overrides */
27
- style?: {
28
- head?: string[];
29
- border?: string[];
30
- };
31
- }
32
-
33
- /**
34
- * Get preset configuration for table styling
35
- * Automatically respects color settings (NO_COLOR, TTY)
36
- *
37
- * @param preset - Preset name
38
- * @returns Partial cli-table3 configuration
39
- */
40
- const getPresetConfig = (preset: TablePreset): Partial<Table.TableConstructorOptions> => {
41
- const hasColor = shouldUseColor();
42
-
43
- const presets: Record<TablePreset, Partial<Table.TableConstructorOptions>> = {
44
- /**
45
- * Default preset - Full borders with colors
46
- * Best for: Complex tables with multiple columns
47
- */
48
- default: {
49
- chars: {
50
- 'top': '─', 'top-mid': '┬', 'top-left': '┌', 'top-right': '┐',
51
- 'bottom': '─', 'bottom-mid': '┴', 'bottom-left': '└', 'bottom-right': '┘',
52
- 'left': '│', 'left-mid': '├', 'mid': '─', 'mid-mid': '┼',
53
- 'right': '│', 'right-mid': '┤', 'middle': '│',
54
- },
55
- style: {
56
- head: hasColor ? ['cyan'] : [],
57
- border: hasColor ? ['gray'] : [],
58
- },
59
- },
60
-
61
- /**
62
- * Compact preset - Minimal borders, max readability
63
- * Best for: Fork list and similar data displays
64
- */
65
- compact: {
66
- chars: {
67
- 'top': '', 'top-mid': '', 'top-left': '', 'top-right': '',
68
- 'bottom': '', 'bottom-mid': '', 'bottom-left': '', 'bottom-right': '',
69
- 'left': '', 'left-mid': '', 'mid': '', 'mid-mid': '',
70
- 'right': '', 'right-mid': '', 'middle': ' │ ',
71
- },
72
- style: {
73
- head: hasColor ? ['cyan', 'bold'] : [],
74
- border: [],
75
- },
76
- },
77
-
78
- /**
79
- * Markdown preset - Markdown-compatible table format
80
- * Best for: Copy-paste to documentation
81
- */
82
- markdown: {
83
- chars: {
84
- 'top': '', 'top-mid': '', 'top-left': '', 'top-right': '',
85
- 'bottom': '', 'bottom-mid': '', 'bottom-left': '', 'bottom-right': '',
86
- 'left': '|', 'left-mid': '', 'mid': '', 'mid-mid': '',
87
- 'right': '|', 'right-mid': '', 'middle': '|',
88
- },
89
- style: {
90
- head: hasColor ? ['cyan'] : [],
91
- border: [],
92
- },
93
- },
94
-
95
- /**
96
- * Borderless preset - Clean, minimal appearance
97
- * Best for: Key-value displays and metadata
98
- */
99
- borderless: {
100
- chars: {
101
- 'top': '', 'top-mid': '', 'top-left': '', 'top-right': '',
102
- 'bottom': '', 'bottom-mid': '', 'bottom-left': '', 'bottom-right': '',
103
- 'left': '', 'left-mid': '', 'mid': '', 'mid-mid': '',
104
- 'right': '', 'right-mid': '', 'middle': ' ',
105
- },
106
- style: {
107
- head: hasColor ? ['cyan', 'bold'] : [],
108
- border: [],
109
- },
110
- },
111
- };
112
-
113
- return presets[preset];
114
- };
115
-
116
- /**
117
- * Create a table with preset configuration
118
- * Wrapper around cli-table3 with Movehat-specific styling
119
- *
120
- * @param config - Table configuration
121
- * @returns cli-table3 Table instance
122
- *
123
- * @example
124
- * const table = createTable({
125
- * head: ['Name', 'Network', 'Chain ID', 'Accounts'],
126
- * preset: 'compact'
127
- * });
128
- *
129
- * table.push(['testnet-fork', 'testnet', '126', '5']);
130
- * table.push(['mainnet-fork', 'mainnet', '1', '3']);
131
- *
132
- * console.log(table.toString());
133
- */
134
- export const createTable = (config: TableConfig = {}): Table.Table => {
135
- const {
136
- head,
137
- preset = 'default',
138
- colWidths,
139
- colAligns,
140
- style = {},
141
- } = config;
142
-
143
- const presetConfig = getPresetConfig(preset);
144
-
145
- const tableConfig: Table.TableConstructorOptions = {
146
- ...presetConfig,
147
- style: {
148
- ...presetConfig.style,
149
- ...style,
150
- },
151
- };
152
-
153
- // Only add optional properties if they are defined
154
- if (head) tableConfig.head = head;
155
- if (colWidths) tableConfig.colWidths = colWidths;
156
- if (colAligns) tableConfig.colAligns = colAligns;
157
-
158
- return new Table(tableConfig);
159
- };
160
-
161
- /**
162
- * Create a simple key-value table
163
- * Perfect for displaying metadata and configuration
164
- *
165
- * @param data - Object with key-value pairs
166
- * @param preset - Table preset to use (default: 'borderless')
167
- * @returns cli-table3 Table instance ready for display
168
- *
169
- * @example
170
- * const metadata = {
171
- * 'Chain ID': '126',
172
- * 'Network': 'testnet',
173
- * 'Ledger Version': '12345',
174
- * 'Created At': new Date().toLocaleString()
175
- * };
176
- *
177
- * const table = createKVTable(metadata);
178
- * console.log(table.toString());
179
- */
180
- export const createKVTable = (
181
- data: Record<string, string | number>,
182
- preset: TablePreset = 'borderless'
183
- ): Table.Table => {
184
- const table = createTable({ preset });
185
-
186
- for (const [key, value] of Object.entries(data)) {
187
- table.push([colors.dim(key), String(value)]);
188
- }
189
-
190
- return table;
191
- };
@@ -1,93 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import {
3
- isHexAddress,
4
- normalizeAddress,
5
- normalizeAddressShort,
6
- } from '../address.js';
7
-
8
- const PADDED_ONE = '0x' + '0'.repeat(63) + '1';
9
- const PADDED_DEAD = '0x' + '0'.repeat(60) + 'dead';
10
-
11
- describe('normalizeAddress', () => {
12
- it('pads a short hex to 64 chars and adds 0x', () => {
13
- expect(normalizeAddress('1')).toBe(PADDED_ONE);
14
- });
15
-
16
- it('preserves a fully padded address', () => {
17
- const full = '0x' + 'a'.repeat(64);
18
- expect(normalizeAddress(full)).toBe(full);
19
- });
20
-
21
- it('lowercases mixed-case input', () => {
22
- expect(normalizeAddress('0xDEAD')).toBe(PADDED_DEAD);
23
- });
24
-
25
- it('adds the 0x prefix when missing', () => {
26
- expect(normalizeAddress('dead')).toBe(PADDED_DEAD);
27
- });
28
-
29
- it('returns 0x followed by 64 zeros for empty input', () => {
30
- expect(normalizeAddress('')).toBe('0x' + '0'.repeat(64));
31
- });
32
-
33
- it('matches fork/manager.ts legacy semantics for the canonical case', () => {
34
- // Mirrors the inline `private normalizeAddress` from fork/manager.ts:243.
35
- expect(normalizeAddress('0X1')).toBe(PADDED_ONE);
36
- });
37
- });
38
-
39
- describe('normalizeAddressShort', () => {
40
- it('adds 0x and lowercases without padding', () => {
41
- expect(normalizeAddressShort('DEAD')).toBe('0xdead');
42
- });
43
-
44
- it('preserves the 0x prefix when already present', () => {
45
- expect(normalizeAddressShort('0xBeef')).toBe('0xbeef');
46
- });
47
-
48
- it('does not pad a short address', () => {
49
- expect(normalizeAddressShort('1')).toBe('0x1');
50
- });
51
-
52
- it('returns just 0x for empty input', () => {
53
- expect(normalizeAddressShort('')).toBe('0x');
54
- });
55
- });
56
-
57
- describe('isHexAddress', () => {
58
- it('accepts short hex with 0x prefix', () => {
59
- expect(isHexAddress('0x1')).toBe(true);
60
- });
61
-
62
- it('accepts hex without 0x prefix', () => {
63
- expect(isHexAddress('dead')).toBe(true);
64
- });
65
-
66
- it('accepts uppercase 0X prefix', () => {
67
- expect(isHexAddress('0Xabc')).toBe(true);
68
- });
69
-
70
- it('accepts a full 64-char address', () => {
71
- expect(isHexAddress('0x' + 'f'.repeat(64))).toBe(true);
72
- });
73
-
74
- it('rejects empty string', () => {
75
- expect(isHexAddress('')).toBe(false);
76
- });
77
-
78
- it('rejects lone 0x with no hex', () => {
79
- expect(isHexAddress('0x')).toBe(false);
80
- });
81
-
82
- it('rejects non-hex characters', () => {
83
- expect(isHexAddress('0xghij')).toBe(false);
84
- });
85
-
86
- it('rejects input longer than 64 hex chars', () => {
87
- expect(isHexAddress('0x' + '0'.repeat(65))).toBe(false);
88
- });
89
-
90
- it('accepts mixed case hex', () => {
91
- expect(isHexAddress('0xAbCdEf')).toBe(true);
92
- });
93
- });
@@ -1,51 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { defaultChildProcessAdapter } from "../childProcessAdapter.js";
3
-
4
- /**
5
- * F4 — `run()` must reject when child output exceeds `maxBuffer`.
6
- *
7
- * Without this cap, the stdout/stderr Buffer arrays in
8
- * DefaultChildProcessAdapter grow without limit. A buggy or hostile
9
- * subprocess can OOM the parent process. F4 adds an opt-in byte cap
10
- * with kill-on-overflow semantics.
11
- */
12
-
13
- const NODE = process.execPath;
14
-
15
- describe("F4 — ChildProcessAdapter.run maxBuffer", () => {
16
- it("rejects with a maxBuffer error when stdout exceeds the cap", async () => {
17
- // 8KiB of output, cap at 1KiB → must abort.
18
- const script = `process.stdout.write('x'.repeat(8 * 1024)); setTimeout(() => {}, 30000);`;
19
- await expect(
20
- defaultChildProcessAdapter.run({
21
- command: NODE,
22
- args: ["-e", script],
23
- maxBuffer: 1024,
24
- timeoutMs: 10_000,
25
- })
26
- ).rejects.toThrow(/maxBuffer|exceeded/i);
27
- });
28
-
29
- it("rejects with a maxBuffer error when stderr exceeds the cap", async () => {
30
- const script = `process.stderr.write('y'.repeat(8 * 1024)); setTimeout(() => {}, 30000);`;
31
- await expect(
32
- defaultChildProcessAdapter.run({
33
- command: NODE,
34
- args: ["-e", script],
35
- maxBuffer: 1024,
36
- timeoutMs: 10_000,
37
- })
38
- ).rejects.toThrow(/maxBuffer|exceeded/i);
39
- });
40
-
41
- it("does NOT throw when output stays under the cap", async () => {
42
- const script = `process.stdout.write('ok'); process.exit(0);`;
43
- const result = await defaultChildProcessAdapter.run({
44
- command: NODE,
45
- args: ["-e", script],
46
- maxBuffer: 1024,
47
- });
48
- expect(result.exitCode).toBe(0);
49
- expect(result.stdout).toBe("ok");
50
- });
51
- });
@@ -1,266 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { defaultChildProcessAdapter } from '../childProcessAdapter.js';
3
-
4
- const NODE = process.execPath;
5
-
6
- describe('defaultChildProcessAdapter', () => {
7
- it('captures stdout and zero exit code on success', async () => {
8
- const result = await defaultChildProcessAdapter.run({
9
- command: NODE,
10
- args: ['-e', "process.stdout.write('hello-stdout')"],
11
- });
12
-
13
- expect(result.exitCode).toBe(0);
14
- expect(result.stdout).toBe('hello-stdout');
15
- expect(result.stderr).toBe('');
16
- });
17
-
18
- it('captures stderr separately from stdout', async () => {
19
- const result = await defaultChildProcessAdapter.run({
20
- command: NODE,
21
- args: ['-e', "process.stderr.write('boom'); process.exit(2)"],
22
- });
23
-
24
- expect(result.exitCode).toBe(2);
25
- expect(result.stdout).toBe('');
26
- expect(result.stderr).toBe('boom');
27
- });
28
-
29
- it('pipes stdin to the child process', async () => {
30
- const result = await defaultChildProcessAdapter.run({
31
- command: NODE,
32
- args: [
33
- '-e',
34
- "let d=''; process.stdin.on('data', c => d += c); process.stdin.on('end', () => process.stdout.write(d.toUpperCase()))",
35
- ],
36
- stdin: 'piped-input',
37
- });
38
-
39
- expect(result.exitCode).toBe(0);
40
- expect(result.stdout).toBe('PIPED-INPUT');
41
- });
42
-
43
- it('passes env to the child process', async () => {
44
- const result = await defaultChildProcessAdapter.run({
45
- command: NODE,
46
- args: ['-e', 'process.stdout.write(process.env.MH_TEST_VAR ?? "missing")'],
47
- env: { ...process.env, MH_TEST_VAR: 'present' },
48
- });
49
-
50
- expect(result.exitCode).toBe(0);
51
- expect(result.stdout).toBe('present');
52
- });
53
-
54
- it('rejects when the command times out', async () => {
55
- await expect(
56
- defaultChildProcessAdapter.run({
57
- command: NODE,
58
- args: ['-e', 'setTimeout(() => {}, 5000)'],
59
- timeoutMs: 50,
60
- })
61
- ).rejects.toThrow(/timed out/);
62
- });
63
-
64
- it('aborts a running command with exitCode -1 and signal SIGTERM', async () => {
65
- const controller = new AbortController();
66
- const start = Date.now();
67
- const promise = defaultChildProcessAdapter.run({
68
- command: NODE,
69
- args: ['-e', 'setTimeout(() => {}, 5000)'],
70
- signal: controller.signal,
71
- });
72
-
73
- setTimeout(() => controller.abort(), 20);
74
-
75
- const result = await promise;
76
- const elapsed = Date.now() - start;
77
-
78
- expect(result.exitCode).toBe(-1);
79
- expect(result.signal).toBe('SIGTERM');
80
- expect(elapsed).toBeLessThan(500);
81
- });
82
-
83
- it('rejects synchronously when signal is already aborted', async () => {
84
- const controller = new AbortController();
85
- controller.abort();
86
-
87
- await expect(
88
- defaultChildProcessAdapter.run({
89
- command: NODE,
90
- args: ['-e', "process.stdout.write('never')"],
91
- signal: controller.signal,
92
- })
93
- ).rejects.toThrow(/aborted/);
94
- });
95
-
96
- it('rejects when the command does not exist', async () => {
97
- await expect(
98
- defaultChildProcessAdapter.run({
99
- command: '/nonexistent/path/to/binary-xyz',
100
- args: [],
101
- })
102
- ).rejects.toThrow();
103
- });
104
- });
105
-
106
- describe('defaultChildProcessAdapter.spawn', () => {
107
- it('returns a handle with pid and streams, and exits cleanly when the child finishes on its own', async () => {
108
- const child = defaultChildProcessAdapter.spawn({
109
- command: NODE,
110
- args: ['-e', "process.stdout.write('hi'); process.exit(0)"],
111
- });
112
-
113
- expect(typeof child.pid).toBe('number');
114
- expect(child.stdout).not.toBeNull();
115
- expect(child.stderr).not.toBeNull();
116
- expect(child.stdin).not.toBeNull();
117
-
118
- let captured = '';
119
- child.stdout?.on('data', (chunk: Buffer) => {
120
- captured += chunk.toString('utf8');
121
- });
122
-
123
- const result = await child.exited;
124
- expect(result.code).toBe(0);
125
- expect(result.signal).toBeNull();
126
- expect(captured).toBe('hi');
127
- });
128
-
129
- it('kill(SIGTERM) terminates a long-running child and surfaces the signal in exited', async () => {
130
- const child = defaultChildProcessAdapter.spawn({
131
- command: NODE,
132
- args: ['-e', 'setInterval(() => {}, 1000)'],
133
- });
134
-
135
- const start = Date.now();
136
- const killed = child.kill('SIGTERM');
137
- expect(killed).toBe(true);
138
-
139
- const result = await child.exited;
140
- const elapsed = Date.now() - start;
141
-
142
- expect(result.signal).toBe('SIGTERM');
143
- expect(result.code).toBeNull();
144
- expect(elapsed).toBeLessThan(500);
145
- });
146
-
147
- it('with stdio: ignore, exposes null streams but still resolves exited', async () => {
148
- const child = defaultChildProcessAdapter.spawn({
149
- command: NODE,
150
- args: ['-e', "process.stdout.write('hidden'); process.exit(0)"],
151
- stdio: 'ignore',
152
- });
153
-
154
- expect(child.stdout).toBeNull();
155
- expect(child.stderr).toBeNull();
156
- expect(child.stdin).toBeNull();
157
-
158
- const result = await child.exited;
159
- expect(result.code).toBe(0);
160
- });
161
-
162
- it('exited can be awaited more than once', async () => {
163
- const child = defaultChildProcessAdapter.spawn({
164
- command: NODE,
165
- args: ['-e', 'process.exit(7)'],
166
- });
167
-
168
- const first = await child.exited;
169
- const second = await child.exited;
170
-
171
- expect(first.code).toBe(7);
172
- expect(second.code).toBe(7);
173
- });
174
-
175
- it('exited resolves when the command does not exist (error event)', async () => {
176
- // Spawning a nonexistent binary fires `error` (ENOENT), not `exit`.
177
- // exited must still settle so the caller doesn't hang.
178
- const child = defaultChildProcessAdapter.spawn({
179
- command: '/nonexistent/path/to/binary-xyz',
180
- args: [],
181
- });
182
-
183
- const result = await child.exited;
184
-
185
- // When the OS rejects the spawn, no exit code or signal is meaningful.
186
- expect(result.code).toBeNull();
187
- expect(result.signal).toBeNull();
188
- });
189
- });
190
-
191
- describe('defaultChildProcessAdapter.run with inheritStdio', () => {
192
- it('returns empty stdout and stderr when inheritStdio is true', async () => {
193
- // The child writes to stdout, but the parent inherits stdio so the bytes
194
- // never go through the captured pipe — the adapter cannot see them.
195
- const result = await defaultChildProcessAdapter.run({
196
- command: NODE,
197
- args: ['-e', "process.stdout.write('would-be-captured'); process.exit(0)"],
198
- inheritStdio: true,
199
- });
200
-
201
- expect(result.exitCode).toBe(0);
202
- expect(result.stdout).toBe('');
203
- expect(result.stderr).toBe('');
204
- });
205
-
206
- it('still propagates exit code under inheritStdio', async () => {
207
- const result = await defaultChildProcessAdapter.run({
208
- command: NODE,
209
- args: ['-e', 'process.exit(42)'],
210
- inheritStdio: true,
211
- });
212
-
213
- expect(result.exitCode).toBe(42);
214
- expect(result.stdout).toBe('');
215
- expect(result.stderr).toBe('');
216
- });
217
-
218
- it('explicit timeoutMs is still honored under inheritStdio', async () => {
219
- // Positive control: the conditional-skip applies only when timeoutMs
220
- // is omitted. An explicit value forces the timer back on.
221
- await expect(
222
- defaultChildProcessAdapter.run({
223
- command: NODE,
224
- args: ['-e', 'setTimeout(() => {}, 5000)'],
225
- inheritStdio: true,
226
- timeoutMs: 50,
227
- })
228
- ).rejects.toThrow(/timed out after 50ms/);
229
- });
230
-
231
- it('omits the default timeout when inheritStdio is true (short child completes naturally)', async () => {
232
- // We can't wait 5 minutes to prove the default timeout isn't set, but
233
- // we can prove that a child running with inheritStdio:true and no
234
- // explicit timeoutMs completes via the natural exit path with no
235
- // timeout-derived rejection. Combined with the test above, the
236
- // conditional-skip behavior is pinned in both directions.
237
- const result = await defaultChildProcessAdapter.run({
238
- command: NODE,
239
- args: ['-e', "setTimeout(() => process.exit(0), 50)"],
240
- inheritStdio: true,
241
- });
242
- expect(result.exitCode).toBe(0);
243
- });
244
-
245
- it('does not schedule a setTimeout when inheritStdio is true and timeoutMs is omitted', async () => {
246
- // Direct evidence (review follow-up): spy on globalThis.setTimeout and
247
- // assert no timer scheduled with the DEFAULT_TIMEOUT_MS (300000ms) value.
248
- // Short-running children may legitimately schedule small timers via
249
- // their own logic, so we filter the spy calls to the default-timeout
250
- // duration specifically — that's the value the regression repaired.
251
- const setTimeoutSpy = vi.spyOn(globalThis, 'setTimeout');
252
- try {
253
- await defaultChildProcessAdapter.run({
254
- command: NODE,
255
- args: ['-e', 'process.exit(0)'],
256
- inheritStdio: true,
257
- });
258
- const defaultTimeoutCalls = setTimeoutSpy.mock.calls.filter(
259
- (args) => args[1] === 5 * 60 * 1000
260
- );
261
- expect(defaultTimeoutCalls).toHaveLength(0);
262
- } finally {
263
- setTimeoutSpy.mockRestore();
264
- }
265
- });
266
- });