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,240 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { CliExecutionError } from '../../errors.js';
3
- import type {
4
- ChildProcessAdapter,
5
- RunInput,
6
- RunResult,
7
- } from '../childProcessAdapter.js';
8
- import { redactSecrets, runCli } from '../runCli.js';
9
-
10
- function makeAdapter(result: RunResult, capture?: { last?: RunInput }): ChildProcessAdapter {
11
- return {
12
- async run(input) {
13
- if (capture) capture.last = input;
14
- return result;
15
- },
16
- spawn() {
17
- throw new Error('spawn not used in runCli tests');
18
- },
19
- };
20
- }
21
-
22
- describe('redactSecrets', () => {
23
- it('replaces ed25519-priv-0x… literals', () => {
24
- const key = '0x' + 'a'.repeat(64);
25
- const input = `Loaded key ed25519-priv-${key} ok`;
26
- expect(redactSecrets(input)).toBe('Loaded key ***REDACTED*** ok');
27
- });
28
-
29
- it('redacts private_key labelled values', () => {
30
- const input = 'private_key: 0x' + 'b'.repeat(64);
31
- expect(redactSecrets(input)).toBe('***REDACTED***');
32
- });
33
-
34
- it('redacts priv-key labelled values with hyphen variants', () => {
35
- const input = 'priv-key = 0x' + 'c'.repeat(64);
36
- expect(redactSecrets(input)).toBe('***REDACTED***');
37
- });
38
-
39
- it('leaves regular hex addresses alone', () => {
40
- const input = 'Account 0x1234 deployed module counter';
41
- expect(redactSecrets(input)).toBe(input);
42
- });
43
-
44
- it('is a no-op on empty input', () => {
45
- expect(redactSecrets('')).toBe('');
46
- });
47
- });
48
-
49
- describe('runCli', () => {
50
- it('returns redacted stdout and stderr on success', async () => {
51
- const key = 'ed25519-priv-0x' + 'a'.repeat(64);
52
- const adapter = makeAdapter({
53
- exitCode: 0,
54
- stdout: `ok ${key}`,
55
- stderr: '',
56
- });
57
-
58
- const result = await runCli({ command: 'fake', args: [] }, { adapter });
59
-
60
- expect(result.exitCode).toBe(0);
61
- expect(result.stdout).toBe('ok ***REDACTED***');
62
- expect(result.stderr).toBe('');
63
- });
64
-
65
- it('throws CliExecutionError with redacted stderr on non-zero exit', async () => {
66
- const adapter = makeAdapter({
67
- exitCode: 1,
68
- stdout: '',
69
- stderr: 'boom private_key: 0x' + 'd'.repeat(64),
70
- });
71
-
72
- await expect(
73
- runCli({ command: 'movement', args: ['publish'] }, { adapter })
74
- ).rejects.toMatchObject({
75
- name: 'CliExecutionError',
76
- command: 'movement',
77
- exitCode: 1,
78
- });
79
-
80
- try {
81
- await runCli({ command: 'movement', args: ['publish'] }, { adapter });
82
- } catch (e) {
83
- expect(e).toBeInstanceOf(CliExecutionError);
84
- const err = e as CliExecutionError;
85
- expect(err.stderr).toBe('boom ***REDACTED***');
86
- expect(err.stderr).not.toContain('private_key');
87
- expect(err.args).toEqual(['publish']);
88
- }
89
- });
90
-
91
- it('does not throw on non-zero exit when throwOnNonZeroExit is false', async () => {
92
- const adapter = makeAdapter({
93
- exitCode: 2,
94
- stdout: 'partial',
95
- stderr: 'warn',
96
- });
97
-
98
- const result = await runCli(
99
- { command: 'fake', args: [] },
100
- { adapter, throwOnNonZeroExit: false }
101
- );
102
-
103
- expect(result.exitCode).toBe(2);
104
- expect(result.stdout).toBe('partial');
105
- expect(result.stderr).toBe('warn');
106
- });
107
-
108
- it('passes the input through to the adapter unchanged', async () => {
109
- const capture: { last?: RunInput } = {};
110
- const adapter = makeAdapter({ exitCode: 0, stdout: '', stderr: '' }, capture);
111
- const env = { FOO: 'bar' };
112
- const signal = new AbortController().signal;
113
-
114
- await runCli(
115
- {
116
- command: 'movement',
117
- args: ['move', 'build'],
118
- cwd: '/tmp/pkg',
119
- env,
120
- stdin: 'hello',
121
- timeoutMs: 1234,
122
- signal,
123
- },
124
- { adapter }
125
- );
126
-
127
- expect(capture.last).toEqual({
128
- command: 'movement',
129
- args: ['move', 'build'],
130
- cwd: '/tmp/pkg',
131
- env,
132
- stdin: 'hello',
133
- timeoutMs: 1234,
134
- signal,
135
- });
136
- });
137
-
138
- it('truncates stdoutPreview on CliExecutionError', async () => {
139
- const longStdout = 'x'.repeat(5000);
140
- const adapter = makeAdapter({
141
- exitCode: 1,
142
- stdout: longStdout,
143
- stderr: '',
144
- });
145
-
146
- try {
147
- await runCli({ command: 'fake', args: [] }, { adapter });
148
- expect.fail('should have thrown');
149
- } catch (e) {
150
- const err = e as CliExecutionError;
151
- expect(err.stdoutPreview.length).toBe(2000);
152
- }
153
- });
154
-
155
- it('redacts secret-shaped args inside CliExecutionError.args', async () => {
156
- const key = 'ed25519-priv-0x' + 'a'.repeat(64);
157
- const adapter = makeAdapter({ exitCode: 1, stdout: '', stderr: '' });
158
-
159
- try {
160
- await runCli(
161
- { command: 'movement', args: ['publish', '--private-key', key] },
162
- { adapter }
163
- );
164
- expect.fail('should have thrown');
165
- } catch (e) {
166
- const err = e as CliExecutionError;
167
- expect(err.args[0]).toBe('publish');
168
- expect(err.args[1]).toBe('--private-key');
169
- expect(err.args[2]).toBe('***REDACTED***');
170
- }
171
- });
172
-
173
- it('preserves non-secret args unchanged', async () => {
174
- const adapter = makeAdapter({ exitCode: 1, stdout: '', stderr: '' });
175
- const args = ['move', 'publish', '--package-dir', '/tmp/pkg'];
176
-
177
- try {
178
- await runCli({ command: 'movement', args }, { adapter });
179
- expect.fail('should have thrown');
180
- } catch (e) {
181
- const err = e as CliExecutionError;
182
- expect(Array.from(err.args)).toEqual(args);
183
- }
184
- });
185
-
186
- it('forwards inheritStdio flag to the adapter unchanged', async () => {
187
- const capture: { last?: RunInput } = {};
188
- const adapter = makeAdapter(
189
- { exitCode: 0, stdout: '', stderr: '' },
190
- capture
191
- );
192
-
193
- await runCli(
194
- { command: 'mocha', args: ['--watch'], inheritStdio: true },
195
- { adapter }
196
- );
197
-
198
- expect(capture.last?.inheritStdio).toBe(true);
199
- });
200
-
201
- it('propagates AbortSignal to a slow adapter and returns the killed result', async () => {
202
- const slowAdapter: ChildProcessAdapter = {
203
- run(input) {
204
- return new Promise((resolve) => {
205
- const t = setTimeout(
206
- () => resolve({ exitCode: 0, stdout: '', stderr: '' }),
207
- 5000
208
- );
209
- input.signal?.addEventListener('abort', () => {
210
- clearTimeout(t);
211
- resolve({
212
- exitCode: -1,
213
- stdout: '',
214
- stderr: '',
215
- signal: 'SIGTERM',
216
- });
217
- });
218
- });
219
- },
220
- spawn() {
221
- throw new Error('spawn not used in this test');
222
- },
223
- };
224
-
225
- const controller = new AbortController();
226
- const start = Date.now();
227
- const promise = runCli(
228
- { command: 'movement', args: ['move', 'test'], signal: controller.signal },
229
- { adapter: slowAdapter, throwOnNonZeroExit: false }
230
- );
231
- setTimeout(() => controller.abort(), 20);
232
-
233
- const result = await promise;
234
- const elapsed = Date.now() - start;
235
-
236
- expect(result.exitCode).toBe(-1);
237
- expect(result.signal).toBe('SIGTERM');
238
- expect(elapsed).toBeLessThan(500);
239
- });
240
- });
@@ -1,52 +0,0 @@
1
- /**
2
- * Address normalization helpers shared across the fork code.
3
- *
4
- * - `normalizeAddress` → lowercase + `0x` + left-pad to 64 hex chars.
5
- * Used by `fork/manager.ts` for storage keys.
6
- * - `normalizeAddressShort` → lowercase + `0x`, no padding.
7
- * Used by `fork/api.ts` for HTTP paths.
8
- */
9
-
10
- /**
11
- * Lowercase the input, ensure a `0x` prefix, and left-pad the hex tail to
12
- * 64 characters (66 total). Already-padded inputs are returned unchanged
13
- * (apart from case folding).
14
- *
15
- * No validation: callers that need to reject non-hex input should consult
16
- * `isHexAddress` first.
17
- */
18
- export function normalizeAddress(input: string): string {
19
- let normalized = input.toLowerCase();
20
-
21
- if (!normalized.startsWith('0x')) {
22
- normalized = `0x${normalized}`;
23
- }
24
-
25
- if (normalized.length < 66) {
26
- normalized = '0x' + normalized.slice(2).padStart(64, '0');
27
- }
28
-
29
- return normalized;
30
- }
31
-
32
- /**
33
- * Lowercase the input and ensure a `0x` prefix. Length is preserved — no
34
- * padding is applied. Suitable for callers that pass addresses straight to
35
- * an HTTP endpoint that accepts short forms.
36
- */
37
- export function normalizeAddressShort(input: string): string {
38
- const lower = input.toLowerCase();
39
- return lower.startsWith('0x') ? lower : `0x${lower}`;
40
- }
41
-
42
- /**
43
- * Returns true when the input is a syntactically valid hex address: optional
44
- * `0x` prefix followed by 1 to 64 hex characters (case insensitive).
45
- */
46
- export function isHexAddress(input: string): boolean {
47
- const stripped = input.startsWith('0x') || input.startsWith('0X')
48
- ? input.slice(2)
49
- : input;
50
- if (stripped.length === 0 || stripped.length > 64) return false;
51
- return /^[0-9a-fA-F]+$/.test(stripped);
52
- }
@@ -1,244 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import type { Readable, Writable } from 'node:stream';
3
-
4
- /**
5
- * Injectable abstraction over `child_process.spawn`.
6
- *
7
- * Tests inject a fake adapter; production code uses `defaultChildProcessAdapter`.
8
- * Higher-level helpers (see `runCli`) wrap this with redaction and error handling.
9
- *
10
- * Two affordances:
11
- * - `run` for one-shot commands whose stdout/stderr fit in memory.
12
- * - `spawn` for long-running children where the caller wants to stream
13
- * output incrementally and decide when to kill the process.
14
- */
15
- export interface ChildProcessAdapter {
16
- run(input: RunInput): Promise<RunResult>;
17
- spawn(input: SpawnInput): SpawnedProcess;
18
- }
19
-
20
- export interface RunInput {
21
- command: string;
22
- args: readonly string[];
23
- cwd?: string;
24
- env?: NodeJS.ProcessEnv;
25
- stdin?: string;
26
- timeoutMs?: number;
27
- signal?: AbortSignal;
28
- /**
29
- * When `true`, the child inherits the parent's stdio (stdout, stderr,
30
- * stdin go straight to the terminal). The resulting `RunResult.stdout`
31
- * and `RunResult.stderr` will be empty strings because nothing is
32
- * captured. Useful for interactive commands like `mocha`, `tsx`, or
33
- * `pnpm install` where the user expects to see live output.
34
- *
35
- * If `inheritStdio` is `true`, `stdin` on this input is ignored — the
36
- * child reads directly from the parent's stdin.
37
- *
38
- * Default: `false`.
39
- */
40
- inheritStdio?: boolean;
41
- /**
42
- * Maximum combined bytes (stdout + stderr) the captured Buffers may
43
- * grow to before the child is killed and the promise rejects. Defaults
44
- * to 64 MiB. Set to `Infinity` to disable. Ignored when
45
- * `inheritStdio` is `true` (no buffering happens).
46
- */
47
- maxBuffer?: number;
48
- }
49
-
50
- const DEFAULT_MAX_BUFFER = 64 * 1024 * 1024;
51
-
52
- export interface RunResult {
53
- /**
54
- * Numeric exit code from the child. `-1` when the child was terminated by
55
- * a signal (no numeric exit code available) — in that case `signal` is
56
- * populated.
57
- */
58
- exitCode: number;
59
- stdout: string;
60
- stderr: string;
61
- /**
62
- * Populated when the child died from a signal (e.g. external abort, kill
63
- * during shutdown). `undefined` for normal exits.
64
- */
65
- signal?: NodeJS.Signals;
66
- }
67
-
68
- /**
69
- * Input for `spawn()`. Mirrors the subset of `RunInput` that applies to
70
- * long-running children: no `stdin`, no `timeoutMs`, no `signal`. Callers
71
- * control the lifecycle via the returned `SpawnedProcess`.
72
- */
73
- export interface SpawnInput {
74
- command: string;
75
- args: readonly string[];
76
- cwd?: string;
77
- env?: NodeJS.ProcessEnv;
78
- /**
79
- * `'pipe'` (default) makes stdout/stderr/stdin streams available on the
80
- * returned `SpawnedProcess`. `'ignore'` silences the child entirely
81
- * (streams are `null`). For `'inherit'`, use `run` with `inheritStdio: true`
82
- * instead — the spawn handle isn't useful when the parent owns stdio.
83
- */
84
- stdio?: 'pipe' | 'ignore';
85
- }
86
-
87
- /**
88
- * Handle returned by `spawn()`. Callers can listen on streams, kill the
89
- * process, or await `exited` for the final exit code and signal.
90
- */
91
- export interface SpawnedProcess {
92
- pid: number | undefined;
93
- stdout: Readable | null;
94
- stderr: Readable | null;
95
- stdin: Writable | null;
96
- kill(signal?: NodeJS.Signals): boolean;
97
- /**
98
- * Resolves once when the child exits, regardless of how the caller
99
- * triggered it (natural exit, `kill`, or process death). Safe to await
100
- * multiple times.
101
- */
102
- exited: Promise<{ code: number | null; signal: NodeJS.Signals | null }>;
103
- }
104
-
105
- const DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;
106
-
107
- class DefaultChildProcessAdapter implements ChildProcessAdapter {
108
- run(input: RunInput): Promise<RunResult> {
109
- // Skip the default 5-minute timeout when the caller wires stdio
110
- // through to the terminal — interactive sessions (mocha, tsx scripts,
111
- // `movement move test`, `pnpm install`) routinely exceed 5 minutes
112
- // and SIGTERM'ing them silently would be a regression. An explicit
113
- // `timeoutMs` is always honored, regardless of `inheritStdio`.
114
- const timeoutMs =
115
- input.timeoutMs ?? (input.inheritStdio ? undefined : DEFAULT_TIMEOUT_MS);
116
-
117
- return new Promise<RunResult>((resolve, reject) => {
118
- const child = spawn(input.command, [...input.args], {
119
- cwd: input.cwd,
120
- env: input.env ?? process.env,
121
- stdio: input.inheritStdio ? 'inherit' : ['pipe', 'pipe', 'pipe'],
122
- });
123
-
124
- const stdoutChunks: Buffer[] = [];
125
- const stderrChunks: Buffer[] = [];
126
- let totalBytes = 0;
127
- let overflowed = false;
128
- const maxBuffer = input.maxBuffer ?? DEFAULT_MAX_BUFFER;
129
-
130
- const onChunk = (chunks: Buffer[]) => (chunk: Buffer) => {
131
- if (overflowed) return;
132
- totalBytes += chunk.length;
133
- if (totalBytes > maxBuffer) {
134
- overflowed = true;
135
- clearTimer();
136
- input.signal?.removeEventListener('abort', onAbort);
137
- child.kill('SIGTERM');
138
- reject(
139
- new Error(
140
- `Command output exceeded maxBuffer (${maxBuffer} bytes): ${input.command}`
141
- )
142
- );
143
- return;
144
- }
145
- chunks.push(chunk);
146
- };
147
-
148
- // Streams are null when stdio is 'inherit'; the `?.` covers that.
149
- child.stdout?.on('data', onChunk(stdoutChunks));
150
- child.stderr?.on('data', onChunk(stderrChunks));
151
-
152
- let timeoutHandle: NodeJS.Timeout | undefined;
153
- const clearTimer = () => {
154
- if (timeoutHandle) clearTimeout(timeoutHandle);
155
- };
156
-
157
- if (timeoutMs !== undefined) {
158
- timeoutHandle = setTimeout(() => {
159
- child.kill('SIGTERM');
160
- reject(new Error(`Command timed out after ${timeoutMs}ms: ${input.command}`));
161
- }, timeoutMs);
162
- }
163
-
164
- const onAbort = () => {
165
- child.kill('SIGTERM');
166
- };
167
-
168
- if (input.signal) {
169
- if (input.signal.aborted) {
170
- clearTimer();
171
- child.kill('SIGTERM');
172
- reject(new Error('Command aborted before start'));
173
- return;
174
- }
175
- input.signal.addEventListener('abort', onAbort, { once: true });
176
- }
177
-
178
- child.on('error', (err) => {
179
- clearTimer();
180
- input.signal?.removeEventListener('abort', onAbort);
181
- reject(err);
182
- });
183
-
184
- child.on('close', (code, signal) => {
185
- clearTimer();
186
- input.signal?.removeEventListener('abort', onAbort);
187
- const result: RunResult = {
188
- exitCode: code !== null ? code : -1,
189
- stdout: Buffer.concat(stdoutChunks).toString('utf8'),
190
- stderr: Buffer.concat(stderrChunks).toString('utf8'),
191
- };
192
- if (signal) {
193
- result.signal = signal;
194
- }
195
- resolve(result);
196
- });
197
-
198
- // Under inheritStdio, child.stdin is null and the parent's stdin
199
- // is wired through; we just skip the close call. Otherwise, end()
200
- // either with the provided string or empty to close stdin cleanly.
201
- if (!input.inheritStdio) {
202
- if (input.stdin !== undefined) {
203
- child.stdin?.end(input.stdin);
204
- } else {
205
- child.stdin?.end();
206
- }
207
- }
208
- });
209
- }
210
-
211
- spawn(input: SpawnInput): SpawnedProcess {
212
- const stdio = input.stdio ?? 'pipe';
213
- const child = spawn(input.command, [...input.args], {
214
- cwd: input.cwd,
215
- env: input.env ?? process.env,
216
- stdio,
217
- });
218
-
219
- // `exited` must settle whether the child dies via natural exit, kill,
220
- // or a spawn-time `error` (e.g. ENOENT). Both events resolve once;
221
- // a settled guard prevents double-resolve if both happen to fire.
222
- const exited = new Promise<{ code: number | null; signal: NodeJS.Signals | null }>((resolve) => {
223
- let settled = false;
224
- const finish = (code: number | null, signal: NodeJS.Signals | null) => {
225
- if (settled) return;
226
- settled = true;
227
- resolve({ code, signal });
228
- };
229
- child.on('exit', (code, signal) => finish(code, signal));
230
- child.on('error', () => finish(null, null));
231
- });
232
-
233
- return {
234
- pid: child.pid,
235
- stdout: child.stdout,
236
- stderr: child.stderr,
237
- stdin: child.stdin,
238
- kill: (signal?: NodeJS.Signals) => child.kill(signal),
239
- exited,
240
- };
241
- }
242
- }
243
-
244
- export const defaultChildProcessAdapter: ChildProcessAdapter = new DefaultChildProcessAdapter();
@@ -1,27 +0,0 @@
1
- /**
2
- * Helpers for extracting fields out of Movement CLI stdout / stderr.
3
- *
4
- * @internal — not exported from `src/index.ts`.
5
- */
6
-
7
- /**
8
- * Extract the transaction hash from a `movement` CLI subcommand's stdout.
9
- *
10
- * Tries the context-bearing pattern first (`transaction hash: 0x…`,
11
- * `txn hash: 0x…`, `hash: 0x…`) and falls back to any 64-char hex
12
- * literal in the buffer. Returns `undefined` if no candidate matches.
13
- *
14
- * Shared by `core/Publisher.ts` (publish), `harness/codeObject.ts`
15
- * (deploy-object / upgrade-object), and `harness/script.ts`
16
- * (run-script). All three CLI subcommands emit the txHash in the same
17
- * shape — keep this helper as the single source of truth so a future
18
- * CLI-format change is a one-line fix.
19
- */
20
- export function parseTxHash(stdout: string): string | undefined {
21
- const withContext = stdout.match(
22
- /(?:transaction\s*(?:hash)?|txn\s*(?:hash)?|hash):\s*(0x[a-fA-F0-9]{64})\b/i
23
- );
24
- if (withContext?.[1]) return withContext[1];
25
- const fallback = stdout.match(/\b(0x[a-fA-F0-9]{64})\b/);
26
- return fallback?.[1];
27
- }
@@ -1,24 +0,0 @@
1
- /**
2
- * Patterns that match well-known secret shapes Movement tools emit on
3
- * stderr / stdout / CLI arguments. Each match is replaced with
4
- * `***REDACTED***` by `redactSecrets`.
5
- *
6
- * The labelled pattern (second entry) intentionally accepts bare `priv` and
7
- * `key` prefixes. Over-redaction is fine; missing a real key is not.
8
- */
9
- export const SECRET_PATTERNS: readonly RegExp[] = [
10
- /ed25519-priv-0x[0-9a-fA-F]{64}/g,
11
- /(private[_-]?key|priv[_-]?key|priv|key)\s*[:=]\s*0x[0-9a-fA-F]{32,}/gi,
12
- ];
13
-
14
- /**
15
- * Replaces every match of every known secret pattern with `***REDACTED***`.
16
- * Idempotent: running it on already-redacted text is a no-op.
17
- */
18
- export function redactSecrets(text: string): string {
19
- let out = text;
20
- for (const pattern of SECRET_PATTERNS) {
21
- out = out.replace(pattern, '***REDACTED***');
22
- }
23
- return out;
24
- }
@@ -1,64 +0,0 @@
1
- import { CliExecutionError } from '../errors.js';
2
- import {
3
- defaultChildProcessAdapter,
4
- type ChildProcessAdapter,
5
- type RunInput,
6
- type RunResult,
7
- } from './childProcessAdapter.js';
8
- import { redactSecrets } from './redact.js';
9
-
10
- export { redactSecrets } from './redact.js';
11
-
12
- const STDOUT_PREVIEW_CHARS = 2000;
13
-
14
- export interface RunCliOptions {
15
- /** Override the child-process adapter (defaults to spawn-based). */
16
- adapter?: ChildProcessAdapter | undefined;
17
- /** When true (default), throw `CliExecutionError` on non-zero exit. */
18
- throwOnNonZeroExit?: boolean | undefined;
19
- }
20
-
21
- /**
22
- * Spawns a CLI command through the injectable adapter, redacts well-known
23
- * secret shapes from stdout and stderr before returning, and throws
24
- * `CliExecutionError` (with already-redacted payloads) on non-zero exits.
25
- *
26
- * Callers that need to inspect raw output should set `throwOnNonZeroExit:false`
27
- * and consume the returned `RunResult` directly — fields are still redacted.
28
- *
29
- * Pass `input.inheritStdio: true` for interactive commands (mocha, tsx,
30
- * package managers) where the user expects to see live output. Under that
31
- * flag, `stdout` and `stderr` in the returned `RunResult` are empty strings
32
- * (and so is `stdoutPreview` on any `CliExecutionError`), since the child
33
- * writes directly to the terminal rather than to a captured buffer.
34
- */
35
- export async function runCli(
36
- input: RunInput,
37
- options: RunCliOptions = {}
38
- ): Promise<RunResult> {
39
- const adapter = options.adapter ?? defaultChildProcessAdapter;
40
- const throwOnNonZeroExit = options.throwOnNonZeroExit ?? true;
41
-
42
- const raw = await adapter.run(input);
43
- const result: RunResult = {
44
- exitCode: raw.exitCode,
45
- stdout: redactSecrets(raw.stdout),
46
- stderr: redactSecrets(raw.stderr),
47
- };
48
- if (raw.signal) {
49
- result.signal = raw.signal;
50
- }
51
-
52
- if (result.exitCode !== 0 && throwOnNonZeroExit) {
53
- throw new CliExecutionError(
54
- `Command failed with exit code ${result.exitCode}: ${input.command}`,
55
- input.command,
56
- input.args,
57
- result.exitCode,
58
- result.stderr,
59
- result.stdout.slice(0, STDOUT_PREVIEW_CHARS)
60
- );
61
- }
62
-
63
- return result;
64
- }