movehat 0.1.8 → 0.2.0

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 (445) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/deployContract.test.d.ts +2 -0
  3. package/dist/__tests__/deployContract.test.d.ts.map +1 -0
  4. package/dist/__tests__/deployContract.test.js +368 -0
  5. package/dist/__tests__/deployContract.test.js.map +1 -0
  6. package/dist/__tests__/errors.test.d.ts +2 -0
  7. package/dist/__tests__/errors.test.d.ts.map +1 -0
  8. package/dist/__tests__/errors.test.js +46 -0
  9. package/dist/__tests__/errors.test.js.map +1 -0
  10. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +24 -0
  11. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +1 -0
  12. package/dist/__tests__/fixtures/sigint-deploy-harness.js +82 -0
  13. package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +1 -0
  14. package/dist/__tests__/fork/api.test.d.ts +2 -0
  15. package/dist/__tests__/fork/api.test.d.ts.map +1 -0
  16. package/dist/__tests__/fork/api.test.js +110 -0
  17. package/dist/__tests__/fork/api.test.js.map +1 -0
  18. package/dist/__tests__/harness/Harness.createLive.test.d.ts +2 -0
  19. package/dist/__tests__/harness/Harness.createLive.test.d.ts.map +1 -0
  20. package/dist/__tests__/harness/Harness.createLive.test.js +53 -0
  21. package/dist/__tests__/harness/Harness.createLive.test.js.map +1 -0
  22. package/dist/__tests__/harness/Harness.proxy.test.d.ts +2 -0
  23. package/dist/__tests__/harness/Harness.proxy.test.d.ts.map +1 -0
  24. package/dist/__tests__/harness/Harness.proxy.test.js +93 -0
  25. package/dist/__tests__/harness/Harness.proxy.test.js.map +1 -0
  26. package/dist/__tests__/harness/_fixture.d.ts +54 -0
  27. package/dist/__tests__/harness/_fixture.d.ts.map +1 -0
  28. package/dist/__tests__/harness/_fixture.js +69 -0
  29. package/dist/__tests__/harness/_fixture.js.map +1 -0
  30. package/dist/__tests__/harness/codeObject.deploy.test.d.ts +2 -0
  31. package/dist/__tests__/harness/codeObject.deploy.test.d.ts.map +1 -0
  32. package/dist/__tests__/harness/codeObject.deploy.test.js +288 -0
  33. package/dist/__tests__/harness/codeObject.deploy.test.js.map +1 -0
  34. package/dist/__tests__/harness/codeObject.upgrade.test.d.ts +2 -0
  35. package/dist/__tests__/harness/codeObject.upgrade.test.d.ts.map +1 -0
  36. package/dist/__tests__/harness/codeObject.upgrade.test.js +138 -0
  37. package/dist/__tests__/harness/codeObject.upgrade.test.js.map +1 -0
  38. package/dist/__tests__/harness/script.test.d.ts +2 -0
  39. package/dist/__tests__/harness/script.test.d.ts.map +1 -0
  40. package/dist/__tests__/harness/script.test.js +219 -0
  41. package/dist/__tests__/harness/script.test.js.map +1 -0
  42. package/dist/__tests__/harness/view.test.d.ts +2 -0
  43. package/dist/__tests__/harness/view.test.d.ts.map +1 -0
  44. package/dist/__tests__/harness/view.test.js +92 -0
  45. package/dist/__tests__/harness/view.test.js.map +1 -0
  46. package/dist/__tests__/runtime.test.d.ts +2 -0
  47. package/dist/__tests__/runtime.test.d.ts.map +1 -0
  48. package/dist/__tests__/runtime.test.js +141 -0
  49. package/dist/__tests__/runtime.test.js.map +1 -0
  50. package/dist/cli.js +2 -1
  51. package/dist/cli.js.map +1 -1
  52. package/dist/commands/__tests__/compile.test.d.ts +2 -0
  53. package/dist/commands/__tests__/compile.test.d.ts.map +1 -0
  54. package/dist/commands/__tests__/compile.test.js +351 -0
  55. package/dist/commands/__tests__/compile.test.js.map +1 -0
  56. package/dist/commands/__tests__/init.test.d.ts +2 -0
  57. package/dist/commands/__tests__/init.test.d.ts.map +1 -0
  58. package/dist/commands/__tests__/init.test.js +101 -0
  59. package/dist/commands/__tests__/init.test.js.map +1 -0
  60. package/dist/commands/__tests__/run.test.d.ts +2 -0
  61. package/dist/commands/__tests__/run.test.d.ts.map +1 -0
  62. package/dist/commands/__tests__/run.test.js +166 -0
  63. package/dist/commands/__tests__/run.test.js.map +1 -0
  64. package/dist/commands/__tests__/test-move.test.d.ts +2 -0
  65. package/dist/commands/__tests__/test-move.test.d.ts.map +1 -0
  66. package/dist/commands/__tests__/test-move.test.js +59 -0
  67. package/dist/commands/__tests__/test-move.test.js.map +1 -0
  68. package/dist/commands/__tests__/test.test.d.ts +2 -0
  69. package/dist/commands/__tests__/test.test.d.ts.map +1 -0
  70. package/dist/commands/__tests__/test.test.js +168 -0
  71. package/dist/commands/__tests__/test.test.js.map +1 -0
  72. package/dist/commands/__tests__/update.test.d.ts +2 -0
  73. package/dist/commands/__tests__/update.test.d.ts.map +1 -0
  74. package/dist/commands/__tests__/update.test.js +176 -0
  75. package/dist/commands/__tests__/update.test.js.map +1 -0
  76. package/dist/commands/compile.d.ts +7 -1
  77. package/dist/commands/compile.d.ts.map +1 -1
  78. package/dist/commands/compile.js +150 -33
  79. package/dist/commands/compile.js.map +1 -1
  80. package/dist/commands/fork/__tests__/create.test.d.ts +2 -0
  81. package/dist/commands/fork/__tests__/create.test.d.ts.map +1 -0
  82. package/dist/commands/fork/__tests__/create.test.js +108 -0
  83. package/dist/commands/fork/__tests__/create.test.js.map +1 -0
  84. package/dist/commands/fork/__tests__/fund.test.d.ts +2 -0
  85. package/dist/commands/fork/__tests__/fund.test.d.ts.map +1 -0
  86. package/dist/commands/fork/__tests__/fund.test.js +72 -0
  87. package/dist/commands/fork/__tests__/fund.test.js.map +1 -0
  88. package/dist/commands/fork/__tests__/list.test.d.ts +2 -0
  89. package/dist/commands/fork/__tests__/list.test.d.ts.map +1 -0
  90. package/dist/commands/fork/__tests__/list.test.js +119 -0
  91. package/dist/commands/fork/__tests__/list.test.js.map +1 -0
  92. package/dist/commands/fork/__tests__/serve.test.d.ts +2 -0
  93. package/dist/commands/fork/__tests__/serve.test.d.ts.map +1 -0
  94. package/dist/commands/fork/__tests__/serve.test.js +97 -0
  95. package/dist/commands/fork/__tests__/serve.test.js.map +1 -0
  96. package/dist/commands/fork/__tests__/view-resource.test.d.ts +2 -0
  97. package/dist/commands/fork/__tests__/view-resource.test.d.ts.map +1 -0
  98. package/dist/commands/fork/__tests__/view-resource.test.js +77 -0
  99. package/dist/commands/fork/__tests__/view-resource.test.js.map +1 -0
  100. package/dist/commands/fork/create.d.ts +1 -1
  101. package/dist/commands/fork/create.d.ts.map +1 -1
  102. package/dist/commands/fork/create.js +3 -2
  103. package/dist/commands/fork/create.js.map +1 -1
  104. package/dist/commands/fork/fund.d.ts.map +1 -1
  105. package/dist/commands/fork/fund.js +15 -8
  106. package/dist/commands/fork/fund.js.map +1 -1
  107. package/dist/commands/fork/list.d.ts.map +1 -1
  108. package/dist/commands/fork/list.js +2 -1
  109. package/dist/commands/fork/list.js.map +1 -1
  110. package/dist/commands/fork/serve.d.ts +1 -0
  111. package/dist/commands/fork/serve.d.ts.map +1 -1
  112. package/dist/commands/fork/serve.js +4 -2
  113. package/dist/commands/fork/serve.js.map +1 -1
  114. package/dist/commands/fork/view-resource.d.ts.map +1 -1
  115. package/dist/commands/fork/view-resource.js +10 -5
  116. package/dist/commands/fork/view-resource.js.map +1 -1
  117. package/dist/commands/run.d.ts +15 -0
  118. package/dist/commands/run.d.ts.map +1 -1
  119. package/dist/commands/run.js +50 -27
  120. package/dist/commands/run.js.map +1 -1
  121. package/dist/commands/test-move.d.ts.map +1 -1
  122. package/dist/commands/test-move.js +3 -2
  123. package/dist/commands/test-move.js.map +1 -1
  124. package/dist/commands/test.js +52 -46
  125. package/dist/commands/test.js.map +1 -1
  126. package/dist/commands/update.d.ts.map +1 -1
  127. package/dist/commands/update.js +15 -13
  128. package/dist/commands/update.js.map +1 -1
  129. package/dist/core/AccountManager.d.ts +1 -1
  130. package/dist/core/AccountManager.d.ts.map +1 -1
  131. package/dist/core/AccountManager.js +20 -7
  132. package/dist/core/AccountManager.js.map +1 -1
  133. package/dist/core/Publisher.d.ts +31 -0
  134. package/dist/core/Publisher.d.ts.map +1 -0
  135. package/dist/core/Publisher.js +248 -0
  136. package/dist/core/Publisher.js.map +1 -0
  137. package/dist/core/__tests__/AccountManager.test.d.ts +2 -0
  138. package/dist/core/__tests__/AccountManager.test.d.ts.map +1 -0
  139. package/dist/core/__tests__/AccountManager.test.js +239 -0
  140. package/dist/core/__tests__/AccountManager.test.js.map +1 -0
  141. package/dist/core/__tests__/config.test.d.ts +2 -0
  142. package/dist/core/__tests__/config.test.d.ts.map +1 -0
  143. package/dist/core/__tests__/config.test.js +311 -0
  144. package/dist/core/__tests__/config.test.js.map +1 -0
  145. package/dist/core/__tests__/deployments.test.d.ts +2 -0
  146. package/dist/core/__tests__/deployments.test.d.ts.map +1 -0
  147. package/dist/core/__tests__/deployments.test.js +201 -0
  148. package/dist/core/__tests__/deployments.test.js.map +1 -0
  149. package/dist/core/__tests__/shell.test.d.ts +2 -0
  150. package/dist/core/__tests__/shell.test.d.ts.map +1 -0
  151. package/dist/core/__tests__/shell.test.js +107 -0
  152. package/dist/core/__tests__/shell.test.js.map +1 -0
  153. package/dist/core/config.d.ts +13 -1
  154. package/dist/core/config.d.ts.map +1 -1
  155. package/dist/core/config.js +80 -11
  156. package/dist/core/config.js.map +1 -1
  157. package/dist/core/contract.d.ts +1 -1
  158. package/dist/core/contract.d.ts.map +1 -1
  159. package/dist/core/contract.js +15 -4
  160. package/dist/core/contract.js.map +1 -1
  161. package/dist/core/deployments.d.ts +2 -2
  162. package/dist/core/deployments.d.ts.map +1 -1
  163. package/dist/core/deployments.js +8 -6
  164. package/dist/core/deployments.js.map +1 -1
  165. package/dist/core/movementProfile.d.ts +34 -0
  166. package/dist/core/movementProfile.d.ts.map +1 -0
  167. package/dist/core/movementProfile.js +150 -0
  168. package/dist/core/movementProfile.js.map +1 -0
  169. package/dist/core/shell.d.ts +23 -7
  170. package/dist/core/shell.d.ts.map +1 -1
  171. package/dist/core/shell.js +32 -14
  172. package/dist/core/shell.js.map +1 -1
  173. package/dist/errors.d.ts +35 -0
  174. package/dist/errors.d.ts.map +1 -1
  175. package/dist/errors.js +54 -0
  176. package/dist/errors.js.map +1 -1
  177. package/dist/fork/__tests__/manager.test.d.ts +2 -0
  178. package/dist/fork/__tests__/manager.test.d.ts.map +1 -0
  179. package/dist/fork/__tests__/manager.test.js +309 -0
  180. package/dist/fork/__tests__/manager.test.js.map +1 -0
  181. package/dist/fork/__tests__/server.test.d.ts +2 -0
  182. package/dist/fork/__tests__/server.test.d.ts.map +1 -0
  183. package/dist/fork/__tests__/server.test.js +54 -0
  184. package/dist/fork/__tests__/server.test.js.map +1 -0
  185. package/dist/fork/__tests__/storage.test.d.ts +2 -0
  186. package/dist/fork/__tests__/storage.test.d.ts.map +1 -0
  187. package/dist/fork/__tests__/storage.test.js +222 -0
  188. package/dist/fork/__tests__/storage.test.js.map +1 -0
  189. package/dist/fork/__tests__/test.test.d.ts +2 -0
  190. package/dist/fork/__tests__/test.test.d.ts.map +1 -0
  191. package/dist/fork/__tests__/test.test.js +81 -0
  192. package/dist/fork/__tests__/test.test.js.map +1 -0
  193. package/dist/fork/api.d.ts +14 -3
  194. package/dist/fork/api.d.ts.map +1 -1
  195. package/dist/fork/api.js +25 -14
  196. package/dist/fork/api.js.map +1 -1
  197. package/dist/fork/manager.d.ts +23 -9
  198. package/dist/fork/manager.d.ts.map +1 -1
  199. package/dist/fork/manager.js +79 -36
  200. package/dist/fork/manager.js.map +1 -1
  201. package/dist/fork/server.d.ts +11 -3
  202. package/dist/fork/server.d.ts.map +1 -1
  203. package/dist/fork/server.js +45 -13
  204. package/dist/fork/server.js.map +1 -1
  205. package/dist/fork/storage.d.ts +4 -4
  206. package/dist/fork/storage.d.ts.map +1 -1
  207. package/dist/fork/storage.js +7 -9
  208. package/dist/fork/storage.js.map +1 -1
  209. package/dist/fork/test.d.ts +13 -4
  210. package/dist/fork/test.d.ts.map +1 -1
  211. package/dist/fork/test.js +36 -27
  212. package/dist/fork/test.js.map +1 -1
  213. package/dist/harness/Harness.d.ts +124 -0
  214. package/dist/harness/Harness.d.ts.map +1 -0
  215. package/dist/harness/Harness.js +193 -0
  216. package/dist/harness/Harness.js.map +1 -0
  217. package/dist/harness/codeObject.d.ts +31 -0
  218. package/dist/harness/codeObject.d.ts.map +1 -0
  219. package/dist/harness/codeObject.js +271 -0
  220. package/dist/harness/codeObject.js.map +1 -0
  221. package/dist/harness/errors.d.ts +14 -0
  222. package/dist/harness/errors.d.ts.map +1 -0
  223. package/dist/harness/errors.js +22 -0
  224. package/dist/harness/errors.js.map +1 -0
  225. package/dist/harness/index.d.ts +4 -0
  226. package/dist/harness/index.d.ts.map +1 -0
  227. package/dist/harness/index.js +3 -0
  228. package/dist/harness/index.js.map +1 -0
  229. package/dist/harness/proxy.d.ts +7 -0
  230. package/dist/harness/proxy.d.ts.map +1 -0
  231. package/dist/harness/proxy.js +36 -0
  232. package/dist/harness/proxy.js.map +1 -0
  233. package/dist/harness/script.d.ts +21 -0
  234. package/dist/harness/script.d.ts.map +1 -0
  235. package/dist/harness/script.js +155 -0
  236. package/dist/harness/script.js.map +1 -0
  237. package/dist/harness/view.d.ts +22 -0
  238. package/dist/harness/view.d.ts.map +1 -0
  239. package/dist/harness/view.js +28 -0
  240. package/dist/harness/view.js.map +1 -0
  241. package/dist/helpers/__tests__/semver-utils.test.d.ts +2 -0
  242. package/dist/helpers/__tests__/semver-utils.test.d.ts.map +1 -0
  243. package/dist/helpers/__tests__/semver-utils.test.js +103 -0
  244. package/dist/helpers/__tests__/semver-utils.test.js.map +1 -0
  245. package/dist/helpers/index.d.ts +3 -2
  246. package/dist/helpers/index.d.ts.map +1 -1
  247. package/dist/helpers/index.js +2 -2
  248. package/dist/helpers/index.js.map +1 -1
  249. package/dist/helpers/move-tests.d.ts +3 -3
  250. package/dist/helpers/move-tests.d.ts.map +1 -1
  251. package/dist/helpers/move-tests.js +21 -20
  252. package/dist/helpers/move-tests.js.map +1 -1
  253. package/dist/helpers/npm-registry.d.ts.map +1 -1
  254. package/dist/helpers/npm-registry.js +1 -3
  255. package/dist/helpers/npm-registry.js.map +1 -1
  256. package/dist/helpers/semver-utils.d.ts.map +1 -1
  257. package/dist/helpers/semver-utils.js +4 -3
  258. package/dist/helpers/semver-utils.js.map +1 -1
  259. package/dist/helpers/setup.d.ts.map +1 -1
  260. package/dist/helpers/setup.js +10 -6
  261. package/dist/helpers/setup.js.map +1 -1
  262. package/dist/helpers/setupLocalTesting.d.ts +32 -27
  263. package/dist/helpers/setupLocalTesting.d.ts.map +1 -1
  264. package/dist/helpers/setupLocalTesting.js +179 -180
  265. package/dist/helpers/setupLocalTesting.js.map +1 -1
  266. package/dist/helpers/testFixtures.d.ts +19 -53
  267. package/dist/helpers/testFixtures.d.ts.map +1 -1
  268. package/dist/helpers/testFixtures.js +89 -107
  269. package/dist/helpers/testFixtures.js.map +1 -1
  270. package/dist/index.d.ts +4 -2
  271. package/dist/index.d.ts.map +1 -1
  272. package/dist/index.js +7 -3
  273. package/dist/index.js.map +1 -1
  274. package/dist/node/LocalNodeManager.d.ts +9 -1
  275. package/dist/node/LocalNodeManager.d.ts.map +1 -1
  276. package/dist/node/LocalNodeManager.js +75 -58
  277. package/dist/node/LocalNodeManager.js.map +1 -1
  278. package/dist/node/__tests__/LocalNodeManager.test.d.ts +2 -0
  279. package/dist/node/__tests__/LocalNodeManager.test.d.ts.map +1 -0
  280. package/dist/node/__tests__/LocalNodeManager.test.js +349 -0
  281. package/dist/node/__tests__/LocalNodeManager.test.js.map +1 -0
  282. package/dist/runtime.d.ts +12 -15
  283. package/dist/runtime.d.ts.map +1 -1
  284. package/dist/runtime.js +32 -241
  285. package/dist/runtime.js.map +1 -1
  286. package/dist/templates/README.md +1 -1
  287. package/dist/templates/movehat.config.ts +10 -0
  288. package/dist/templates/package.json +2 -1
  289. package/dist/templates/scripts/deploy-counter.ts +46 -38
  290. package/dist/templates/tests/Counter.test.ts +51 -51
  291. package/dist/templates/types/movehat.d.ts +6 -9
  292. package/dist/types/config.d.ts +8 -0
  293. package/dist/types/config.d.ts.map +1 -1
  294. package/dist/types/fork.d.ts +7 -1
  295. package/dist/types/fork.d.ts.map +1 -1
  296. package/dist/types/harness.d.ts +166 -0
  297. package/dist/types/harness.d.ts.map +1 -0
  298. package/dist/types/harness.js +2 -0
  299. package/dist/types/harness.js.map +1 -0
  300. package/dist/types/runtime.d.ts +7 -1
  301. package/dist/types/runtime.d.ts.map +1 -1
  302. package/dist/ui/__tests__/colors.test.d.ts +2 -0
  303. package/dist/ui/__tests__/colors.test.d.ts.map +1 -0
  304. package/dist/ui/__tests__/colors.test.js +127 -0
  305. package/dist/ui/__tests__/colors.test.js.map +1 -0
  306. package/dist/ui/colors.d.ts.map +1 -1
  307. package/dist/ui/colors.js +6 -2
  308. package/dist/ui/colors.js.map +1 -1
  309. package/dist/ui/logger.d.ts +17 -0
  310. package/dist/ui/logger.d.ts.map +1 -1
  311. package/dist/ui/logger.js +22 -0
  312. package/dist/ui/logger.js.map +1 -1
  313. package/dist/ui/symbols.d.ts +1 -0
  314. package/dist/ui/symbols.d.ts.map +1 -1
  315. package/dist/ui/symbols.js +7 -1
  316. package/dist/ui/symbols.js.map +1 -1
  317. package/dist/utils/__tests__/address.test.d.ts +2 -0
  318. package/dist/utils/__tests__/address.test.d.ts.map +1 -0
  319. package/dist/utils/__tests__/address.test.js +70 -0
  320. package/dist/utils/__tests__/address.test.js.map +1 -0
  321. package/dist/utils/__tests__/childProcessAdapter.test.d.ts +2 -0
  322. package/dist/utils/__tests__/childProcessAdapter.test.d.ts.map +1 -0
  323. package/dist/utils/__tests__/childProcessAdapter.test.js +217 -0
  324. package/dist/utils/__tests__/childProcessAdapter.test.js.map +1 -0
  325. package/dist/utils/__tests__/runCli.test.d.ts +2 -0
  326. package/dist/utils/__tests__/runCli.test.d.ts.map +1 -0
  327. package/dist/utils/__tests__/runCli.test.js +187 -0
  328. package/dist/utils/__tests__/runCli.test.js.map +1 -0
  329. package/dist/utils/address.d.ts +33 -0
  330. package/dist/utils/address.d.ts.map +1 -0
  331. package/dist/utils/address.js +52 -0
  332. package/dist/utils/address.js.map +1 -0
  333. package/dist/utils/childProcessAdapter.d.ts +93 -0
  334. package/dist/utils/childProcessAdapter.d.ts.map +1 -0
  335. package/dist/utils/childProcessAdapter.js +109 -0
  336. package/dist/utils/childProcessAdapter.js.map +1 -0
  337. package/dist/utils/parseCliOutput.d.ts +20 -0
  338. package/dist/utils/parseCliOutput.d.ts.map +1 -0
  339. package/dist/utils/parseCliOutput.js +26 -0
  340. package/dist/utils/parseCliOutput.js.map +1 -0
  341. package/dist/utils/redact.d.ts +15 -0
  342. package/dist/utils/redact.d.ts.map +1 -0
  343. package/dist/utils/redact.js +24 -0
  344. package/dist/utils/redact.js.map +1 -0
  345. package/dist/utils/runCli.d.ts +24 -0
  346. package/dist/utils/runCli.d.ts.map +1 -0
  347. package/dist/utils/runCli.js +37 -0
  348. package/dist/utils/runCli.js.map +1 -0
  349. package/package.json +14 -4
  350. package/src/__tests__/deployContract.test.ts +429 -0
  351. package/src/__tests__/errors.test.ts +84 -0
  352. package/src/__tests__/fixtures/sigint-deploy-harness.ts +95 -0
  353. package/src/__tests__/fork/api.test.ts +143 -0
  354. package/src/__tests__/harness/Harness.createLive.test.ts +57 -0
  355. package/src/__tests__/harness/Harness.proxy.test.ts +115 -0
  356. package/src/__tests__/harness/_fixture.ts +131 -0
  357. package/src/__tests__/harness/codeObject.deploy.test.ts +319 -0
  358. package/src/__tests__/harness/codeObject.upgrade.test.ts +156 -0
  359. package/src/__tests__/harness/script.test.ts +245 -0
  360. package/src/__tests__/harness/view.test.ts +104 -0
  361. package/src/__tests__/runtime.test.ts +182 -0
  362. package/src/cli.ts +2 -1
  363. package/src/commands/__tests__/compile.test.ts +407 -0
  364. package/src/commands/__tests__/init.test.ts +125 -0
  365. package/src/commands/__tests__/run.test.ts +192 -0
  366. package/src/commands/__tests__/test-move.test.ts +81 -0
  367. package/src/commands/__tests__/test.test.ts +204 -0
  368. package/src/commands/__tests__/update.test.ts +223 -0
  369. package/src/commands/compile.ts +168 -32
  370. package/src/commands/fork/__tests__/create.test.ts +132 -0
  371. package/src/commands/fork/__tests__/fund.test.ts +104 -0
  372. package/src/commands/fork/__tests__/list.test.ts +139 -0
  373. package/src/commands/fork/__tests__/serve.test.ts +121 -0
  374. package/src/commands/fork/__tests__/view-resource.test.ts +101 -0
  375. package/src/commands/fork/create.ts +4 -3
  376. package/src/commands/fork/fund.ts +16 -9
  377. package/src/commands/fork/list.ts +3 -2
  378. package/src/commands/fork/serve.ts +6 -3
  379. package/src/commands/fork/view-resource.ts +11 -6
  380. package/src/commands/run.ts +54 -28
  381. package/src/commands/test-move.ts +4 -3
  382. package/src/commands/test.ts +56 -44
  383. package/src/commands/update.ts +19 -16
  384. package/src/core/AccountManager.ts +23 -10
  385. package/src/core/Publisher.ts +322 -0
  386. package/src/core/__tests__/AccountManager.test.ts +290 -0
  387. package/src/core/__tests__/config.test.ts +377 -0
  388. package/src/core/__tests__/deployments.test.ts +247 -0
  389. package/src/core/__tests__/shell.test.ts +138 -0
  390. package/src/core/config.ts +96 -12
  391. package/src/core/contract.ts +13 -4
  392. package/src/core/deployments.ts +13 -11
  393. package/src/core/movementProfile.ts +179 -0
  394. package/src/core/shell.ts +34 -14
  395. package/src/errors.ts +60 -0
  396. package/src/fork/__tests__/manager.test.ts +385 -0
  397. package/src/fork/__tests__/server.test.ts +65 -0
  398. package/src/fork/__tests__/storage.test.ts +281 -0
  399. package/src/fork/__tests__/test.test.ts +97 -0
  400. package/src/fork/api.ts +28 -14
  401. package/src/fork/manager.ts +88 -43
  402. package/src/fork/server.ts +53 -19
  403. package/src/fork/storage.ts +12 -15
  404. package/src/fork/test.ts +58 -32
  405. package/src/harness/Harness.ts +228 -0
  406. package/src/harness/codeObject.ts +388 -0
  407. package/src/harness/errors.ts +22 -0
  408. package/src/harness/index.ts +3 -0
  409. package/src/harness/proxy.ts +40 -0
  410. package/src/harness/script.ts +196 -0
  411. package/src/harness/view.ts +34 -0
  412. package/src/helpers/__tests__/semver-utils.test.ts +121 -0
  413. package/src/helpers/index.ts +2 -8
  414. package/src/helpers/move-tests.ts +27 -23
  415. package/src/helpers/npm-registry.ts +4 -3
  416. package/src/helpers/semver-utils.ts +4 -3
  417. package/src/helpers/setup.ts +9 -5
  418. package/src/helpers/setupLocalTesting.ts +219 -200
  419. package/src/helpers/testFixtures.ts +106 -118
  420. package/src/index.ts +9 -3
  421. package/src/node/LocalNodeManager.ts +87 -62
  422. package/src/node/__tests__/LocalNodeManager.test.ts +452 -0
  423. package/src/runtime.ts +33 -289
  424. package/src/templates/README.md +1 -1
  425. package/src/templates/movehat.config.ts +10 -0
  426. package/src/templates/package.json +2 -1
  427. package/src/templates/scripts/deploy-counter.ts +46 -38
  428. package/src/templates/tests/Counter.test.ts +51 -51
  429. package/src/templates/types/movehat.d.ts +6 -9
  430. package/src/types/config.ts +8 -0
  431. package/src/types/fork.ts +7 -1
  432. package/src/types/harness.ts +182 -0
  433. package/src/types/runtime.ts +11 -3
  434. package/src/ui/__tests__/colors.test.ts +156 -0
  435. package/src/ui/colors.ts +5 -2
  436. package/src/ui/logger.ts +22 -0
  437. package/src/ui/symbols.ts +7 -1
  438. package/src/utils/__tests__/address.test.ts +93 -0
  439. package/src/utils/__tests__/childProcessAdapter.test.ts +266 -0
  440. package/src/utils/__tests__/runCli.test.ts +240 -0
  441. package/src/utils/address.ts +56 -0
  442. package/src/utils/childProcessAdapter.ts +215 -0
  443. package/src/utils/parseCliOutput.ts +27 -0
  444. package/src/utils/redact.ts +24 -0
  445. package/src/utils/runCli.ts +64 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.test.d.ts","sourceRoot":"","sources":["../../../src/fork/__tests__/test.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { snapshot, viewForkResource } from '../test.js';
6
+ /**
7
+ * Guards the exitCode-failure path that CodeRabbit flagged on PR #100:
8
+ * before this hardening, an `aptos` command that exited non-zero with a
9
+ * stderr containing the word "Success" (or no stderr at all) could slip
10
+ * past the stderr-defense check in `snapshot`, and a non-JSON stderr from
11
+ * `view-resource` produced a cryptic JSON parse error instead of the
12
+ * actual aptos failure.
13
+ */
14
+ describe('fork/test — exitCode failure paths', () => {
15
+ let tmpCwd;
16
+ let origCwd;
17
+ beforeEach(() => {
18
+ tmpCwd = mkdtempSync(join(tmpdir(), 'movehat-fork-test-'));
19
+ origCwd = process.cwd();
20
+ process.chdir(tmpCwd);
21
+ });
22
+ afterEach(() => {
23
+ try {
24
+ process.chdir(origCwd);
25
+ }
26
+ finally {
27
+ rmSync(tmpCwd, { recursive: true, force: true });
28
+ }
29
+ });
30
+ function adapterReturning(result) {
31
+ return {
32
+ async run() {
33
+ return result;
34
+ },
35
+ spawn() {
36
+ throw new Error('spawn not used in fork/test failure-path tests');
37
+ },
38
+ };
39
+ }
40
+ it("snapshot throws on non-zero exit even when stderr contains 'Success'", async () => {
41
+ // The pre-fix edge case: aptos exits 1, stderr says
42
+ // "Failed: Success criteria not met" → the stderr.includes('Success')
43
+ // gate returned false-positive ok, and a stale directory from a prior
44
+ // run would mask the failure entirely.
45
+ const adapter = adapterReturning({
46
+ exitCode: 1,
47
+ stdout: '',
48
+ stderr: 'Failed: Success criteria not met for snapshot init',
49
+ });
50
+ await expect(snapshot({ name: 'edge', adapter })).rejects.toThrow(/Success criteria not met/);
51
+ });
52
+ it('snapshot still throws when a stale directory from a prior run exists (the full edge case)', async () => {
53
+ // The pre-fix combined edge case: aptos exits non-zero, stderr happens
54
+ // to contain "Success" (so the stderr.includes('Success') gate would
55
+ // false-positive), AND the snapshot directory already exists from a
56
+ // previous successful run (so the existsSync check would false-positive
57
+ // too). The new exitCode check fires first and throws regardless.
58
+ const stalePath = join(tmpCwd, '.movehat', 'snapshots', 'stale');
59
+ mkdirSync(stalePath, { recursive: true });
60
+ writeFileSync(join(stalePath, 'config.json'), '{}');
61
+ const adapter = adapterReturning({
62
+ exitCode: 1,
63
+ stdout: '',
64
+ stderr: 'Failed but Success was nearby',
65
+ });
66
+ await expect(snapshot({ name: 'stale', path: stalePath, adapter })).rejects.toThrow(/Failed but Success was nearby/);
67
+ });
68
+ it('viewForkResource throws on non-zero exit with non-JSON stderr (informative message)', async () => {
69
+ // Pre-fix the failure surfaced as "Unexpected token ..." from
70
+ // JSON.parse, which obscured the actual aptos error.
71
+ const adapter = adapterReturning({
72
+ exitCode: 1,
73
+ stdout: '',
74
+ stderr: 'Error: session not found',
75
+ });
76
+ await expect(viewForkResource('/nonexistent/session', '0x1', '0x1::coin::CoinStore', {
77
+ adapter,
78
+ })).rejects.toThrow(/session not found/);
79
+ });
80
+ });
81
+ //# sourceMappingURL=test.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.test.js","sourceRoot":"","sources":["../../../src/fork/__tests__/test.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,23 @@
1
1
  import type { LedgerInfo, AccountData, AccountResource } from '../types/fork.js';
2
2
  /**
3
- * Client for interacting with Movement/Aptos-compatible JSON API
3
+ * Client for interacting with Movement L1 JSON API.
4
+ *
5
+ * When constructed with an `apiKey`, every outgoing request carries
6
+ * an `Authorization: Bearer <apiKey>` header. Use this for rate-
7
+ * limited public endpoints (e.g. Movement testnet under load) or
8
+ * auth-gated nodes.
4
9
  */
5
10
  export declare class MovementApiClient {
6
11
  private nodeUrl;
7
- constructor(nodeUrl: string);
12
+ private readonly apiKey?;
13
+ constructor(nodeUrl: string, apiKey?: string);
8
14
  /**
9
- * Make a GET request to the API
15
+ * Make a GET request to the API.
16
+ *
17
+ * Adds `Authorization: Bearer <apiKey>` when the client was
18
+ * constructed with an `apiKey`. The header is omitted otherwise
19
+ * to preserve backwards-compatible behavior for unauthenticated
20
+ * public endpoints.
10
21
  */
11
22
  private get;
12
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/fork/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAa3B;;OAEG;YACW,GAAG;IAqCjB;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASvD;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAW7E;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAOvE"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/fork/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGjF;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAErB,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAc5C;;;;;;;OAOG;YACW,GAAG;IA6CjB;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMvD;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAS7E;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAKvE"}
package/dist/fork/api.js CHANGED
@@ -1,12 +1,19 @@
1
1
  import https from 'https';
2
2
  import http from 'http';
3
3
  import { URL } from 'url';
4
+ import { normalizeAddressShort } from '../utils/address.js';
4
5
  /**
5
- * Client for interacting with Movement/Aptos-compatible JSON API
6
+ * Client for interacting with Movement L1 JSON API.
7
+ *
8
+ * When constructed with an `apiKey`, every outgoing request carries
9
+ * an `Authorization: Bearer <apiKey>` header. Use this for rate-
10
+ * limited public endpoints (e.g. Movement testnet under load) or
11
+ * auth-gated nodes.
6
12
  */
7
13
  export class MovementApiClient {
8
14
  nodeUrl;
9
- constructor(nodeUrl) {
15
+ apiKey;
16
+ constructor(nodeUrl, apiKey) {
10
17
  // Remove trailing slash
11
18
  let normalized = nodeUrl.replace(/\/$/, '');
12
19
  // If URL already ends with /v1, use as is
@@ -15,17 +22,28 @@ export class MovementApiClient {
15
22
  // Base URL without /v1, we'll add it in requests
16
23
  }
17
24
  this.nodeUrl = normalized;
25
+ if (apiKey !== undefined)
26
+ this.apiKey = apiKey;
18
27
  }
19
28
  /**
20
- * Make a GET request to the API
29
+ * Make a GET request to the API.
30
+ *
31
+ * Adds `Authorization: Bearer <apiKey>` when the client was
32
+ * constructed with an `apiKey`. The header is omitted otherwise
33
+ * to preserve backwards-compatible behavior for unauthenticated
34
+ * public endpoints.
21
35
  */
22
36
  async get(path) {
23
37
  const fullUrl = `${this.nodeUrl}${path}`;
24
38
  const parsedUrl = new URL(fullUrl);
25
39
  const isHttps = parsedUrl.protocol === 'https:';
26
40
  const client = isHttps ? https : http;
41
+ const requestOptions = { method: 'GET' };
42
+ if (this.apiKey !== undefined) {
43
+ requestOptions.headers = { Authorization: `Bearer ${this.apiKey}` };
44
+ }
27
45
  return new Promise((resolve, reject) => {
28
- const req = client.get(fullUrl, (res) => {
46
+ const req = client.get(fullUrl, requestOptions, (res) => {
29
47
  let data = '';
30
48
  res.on('data', (chunk) => {
31
49
  data += chunk;
@@ -68,19 +86,14 @@ export class MovementApiClient {
68
86
  * Get account information
69
87
  */
70
88
  async getAccount(address) {
71
- // Normalize address (ensure 0x prefix and lowercase)
72
- const normalizedAddress = address.toLowerCase().startsWith('0x')
73
- ? address.toLowerCase()
74
- : `0x${address.toLowerCase()}`;
89
+ const normalizedAddress = normalizeAddressShort(address);
75
90
  return this.get(this.apiPath(`/accounts/${normalizedAddress}`));
76
91
  }
77
92
  /**
78
93
  * Get a specific account resource
79
94
  */
80
95
  async getAccountResource(address, resourceType) {
81
- const normalizedAddress = address.toLowerCase().startsWith('0x')
82
- ? address.toLowerCase()
83
- : `0x${address.toLowerCase()}`;
96
+ const normalizedAddress = normalizeAddressShort(address);
84
97
  // URL encode the resource type
85
98
  const encodedType = encodeURIComponent(resourceType);
86
99
  return this.get(this.apiPath(`/accounts/${normalizedAddress}/resource/${encodedType}`));
@@ -89,9 +102,7 @@ export class MovementApiClient {
89
102
  * Get all resources for an account
90
103
  */
91
104
  async getAccountResources(address) {
92
- const normalizedAddress = address.toLowerCase().startsWith('0x')
93
- ? address.toLowerCase()
94
- : `0x${address.toLowerCase()}`;
105
+ const normalizedAddress = normalizeAddressShort(address);
95
106
  return this.get(this.apiPath(`/accounts/${normalizedAddress}/resources`));
96
107
  }
97
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/fork/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/fork/api.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,31 @@ export declare class ForkManager {
7
7
  private storage;
8
8
  private apiClient;
9
9
  private metadata;
10
+ /**
11
+ * Optional API key sent as `Authorization: Bearer <key>` on every
12
+ * outgoing Movement API request. Not persisted to disk via
13
+ * {@link ForkMetadata} (keys stay in process memory). For the
14
+ * load-then-set pattern, call {@link setApiKey} after `load()`.
15
+ */
16
+ private apiKey?;
10
17
  constructor(forkPath: string);
11
18
  /**
12
- * Initialize a new fork from a network
19
+ * Set or update the API key used for upstream Movement API requests.
20
+ * Reconstructs the internal `MovementApiClient` if one exists.
13
21
  */
14
- initialize(nodeUrl: string, networkName?: string): Promise<void>;
22
+ setApiKey(apiKey: string | undefined): void;
15
23
  /**
16
- * Load an existing fork
24
+ * Initialize a new fork from a network.
25
+ *
26
+ * @param nodeUrl - Upstream JSON-RPC base URL.
27
+ * @param networkName - Logical network label (defaults to `'custom'`).
28
+ * @param apiKey - Optional API key for `Authorization: Bearer` header.
29
+ */
30
+ initialize(nodeUrl: string, networkName?: string, apiKey?: string): Promise<void>;
31
+ /**
32
+ * Load an existing fork. The API key is NOT persisted to disk —
33
+ * callers needing authenticated upstream reads after `load()` must
34
+ * call {@link setApiKey} explicitly.
17
35
  */
18
36
  load(): void;
19
37
  /**
@@ -35,15 +53,11 @@ export declare class ForkManager {
35
53
  /**
36
54
  * Set a resource value (for testing/mocking)
37
55
  */
38
- setResource(address: string, resourceType: string, data: any): Promise<void>;
56
+ setResource(address: string, resourceType: string, data: unknown): Promise<void>;
39
57
  /**
40
58
  * Fund an account with coins (adds to existing balance)
41
59
  */
42
60
  fundAccount(address: string, amount: number, coinType?: string): Promise<void>;
43
- /**
44
- * Normalize address format
45
- */
46
- private normalizeAddress;
47
61
  /**
48
62
  * List all accounts in the fork
49
63
  */
@@ -53,7 +67,7 @@ export declare class ForkManager {
53
67
  *
54
68
  * @param addresses Array of addresses to fund
55
69
  * @param amount Amount of coins per account
56
- * @param coinType Coin type (defaults to AptosCoin)
70
+ * @param coinType Coin type (defaults to the chain's native coin)
57
71
  *
58
72
  * @example
59
73
  * await forkManager.fundMultipleAccounts(
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/fork/manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,QAAQ,EAAE,MAAM;IAI5B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhF;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,WAAW,IAAI,YAAY;IAO3B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BxD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgCtE;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA4BpE;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAqC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DlH;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAUhB;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;;;;;;;OASG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAmBjE"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/fork/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmBnE;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAA6B;IAE7C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,QAAQ,EAAE,MAAM;IAI5B;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAW3C;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAiB,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IA6BhB;;;;OAIG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,WAAW,IAAI,YAAY;IAO3B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BxD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiCtE;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA4BpE;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAqC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiElH;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;;;;;;;;OASG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAmBjE"}
@@ -1,5 +1,22 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import { MovementApiClient } from './api.js';
2
3
  import { ForkStorage } from './storage.js';
4
+ import { normalizeAddress } from '../utils/address.js';
5
+ import { logger } from '../ui/index.js';
6
+ /**
7
+ * Derive a deterministic 32-byte hex placeholder for the `authentication_key`
8
+ * of a fork-funded account. The real auth_key is `sha3_256(public_key || 0x00)`
9
+ * for Ed25519; the fork has no public key material, so we hash the address
10
+ * itself. This is NOT a real auth key — downstream code must not treat it as
11
+ * trustworthy key material. Distinguishable from the address by construction
12
+ * (#63 — prior code used `address.padEnd(66, '0')` which was a no-op since
13
+ * normalized addresses are already 66 chars).
14
+ */
15
+ function forkAuthKeyPlaceholder(normalizedAddress) {
16
+ const stripped = normalizedAddress.startsWith('0x') ? normalizedAddress.slice(2) : normalizedAddress;
17
+ const digest = createHash('sha3-256').update(stripped, 'hex').digest('hex');
18
+ return `0x${digest}`;
19
+ }
3
20
  /**
4
21
  * Manager for fork operations
5
22
  * Orchestrates API client and storage
@@ -8,15 +25,43 @@ export class ForkManager {
8
25
  storage;
9
26
  apiClient = null;
10
27
  metadata = null;
28
+ /**
29
+ * Optional API key sent as `Authorization: Bearer <key>` on every
30
+ * outgoing Movement API request. Not persisted to disk via
31
+ * {@link ForkMetadata} (keys stay in process memory). For the
32
+ * load-then-set pattern, call {@link setApiKey} after `load()`.
33
+ */
34
+ apiKey;
11
35
  constructor(forkPath) {
12
36
  this.storage = new ForkStorage(forkPath);
13
37
  }
14
38
  /**
15
- * Initialize a new fork from a network
39
+ * Set or update the API key used for upstream Movement API requests.
40
+ * Reconstructs the internal `MovementApiClient` if one exists.
16
41
  */
17
- async initialize(nodeUrl, networkName = 'custom') {
18
- // Create API client
19
- this.apiClient = new MovementApiClient(nodeUrl);
42
+ setApiKey(apiKey) {
43
+ if (apiKey === undefined) {
44
+ delete this.apiKey;
45
+ }
46
+ else {
47
+ this.apiKey = apiKey;
48
+ }
49
+ if (this.apiClient && this.metadata) {
50
+ this.apiClient = new MovementApiClient(this.metadata.nodeUrl, this.apiKey);
51
+ }
52
+ }
53
+ /**
54
+ * Initialize a new fork from a network.
55
+ *
56
+ * @param nodeUrl - Upstream JSON-RPC base URL.
57
+ * @param networkName - Logical network label (defaults to `'custom'`).
58
+ * @param apiKey - Optional API key for `Authorization: Bearer` header.
59
+ */
60
+ async initialize(nodeUrl, networkName = 'custom', apiKey) {
61
+ if (apiKey !== undefined)
62
+ this.apiKey = apiKey;
63
+ // Create API client (with optional Authorization header)
64
+ this.apiClient = new MovementApiClient(nodeUrl, this.apiKey);
20
65
  // Fetch network info
21
66
  const ledgerInfo = await this.apiClient.getLedgerInfo();
22
67
  // Create fork structure
@@ -36,14 +81,16 @@ export class ForkManager {
36
81
  console.log(`āœ“ Fork initialized at ledger version ${ledgerInfo.ledger_version}`);
37
82
  }
38
83
  /**
39
- * Load an existing fork
84
+ * Load an existing fork. The API key is NOT persisted to disk —
85
+ * callers needing authenticated upstream reads after `load()` must
86
+ * call {@link setApiKey} explicitly.
40
87
  */
41
88
  load() {
42
89
  if (!this.storage.exists()) {
43
90
  throw new Error('Fork does not exist. Run `initialize()` first.');
44
91
  }
45
92
  this.metadata = this.storage.loadMetadata();
46
- this.apiClient = new MovementApiClient(this.metadata.nodeUrl);
93
+ this.apiClient = new MovementApiClient(this.metadata.nodeUrl, this.apiKey);
47
94
  }
48
95
  /**
49
96
  * Get fork metadata
@@ -59,7 +106,7 @@ export class ForkManager {
59
106
  */
60
107
  async getAccount(address) {
61
108
  // Normalize address
62
- const normalizedAddress = this.normalizeAddress(address);
109
+ const normalizedAddress = normalizeAddress(address);
63
110
  // Check cache first
64
111
  let accountState = this.storage.getAccount(normalizedAddress);
65
112
  if (!accountState) {
@@ -83,7 +130,7 @@ export class ForkManager {
83
130
  * Get a specific resource (with lazy loading)
84
131
  */
85
132
  async getResource(address, resourceType) {
86
- const normalizedAddress = this.normalizeAddress(address);
133
+ const normalizedAddress = normalizeAddress(address);
87
134
  // Check cache first
88
135
  let resource = this.storage.getResource(normalizedAddress, resourceType);
89
136
  if (!resource) {
@@ -100,7 +147,8 @@ export class ForkManager {
100
147
  console.log(` āœ“ Cached resource ${resourceType}`);
101
148
  }
102
149
  catch (error) {
103
- if (error.message.includes('404')) {
150
+ const msg = error instanceof Error ? error.message : String(error);
151
+ if (msg.includes('404')) {
104
152
  throw new Error(`Resource ${resourceType} not found for account ${normalizedAddress}`);
105
153
  }
106
154
  throw error;
@@ -112,7 +160,7 @@ export class ForkManager {
112
160
  * Get all resources for an account (with lazy loading)
113
161
  */
114
162
  async getAllResources(address) {
115
- const normalizedAddress = this.normalizeAddress(address);
163
+ const normalizedAddress = normalizeAddress(address);
116
164
  // Check if we have any cached resources
117
165
  let resources = this.storage.getAllResources(normalizedAddress);
118
166
  // If no cached resources, fetch all from network
@@ -136,7 +184,7 @@ export class ForkManager {
136
184
  * Set a resource value (for testing/mocking)
137
185
  */
138
186
  async setResource(address, resourceType, data) {
139
- const normalizedAddress = this.normalizeAddress(address);
187
+ const normalizedAddress = normalizeAddress(address);
140
188
  this.storage.saveResource(normalizedAddress, resourceType, data);
141
189
  console.log(` āœ“ Updated resource ${resourceType} for ${normalizedAddress}`);
142
190
  }
@@ -144,16 +192,21 @@ export class ForkManager {
144
192
  * Fund an account with coins (adds to existing balance)
145
193
  */
146
194
  async fundAccount(address, amount, coinType = '0x1::aptos_coin::AptosCoin') {
147
- const normalizedAddress = this.normalizeAddress(address);
195
+ const normalizedAddress = normalizeAddress(address);
148
196
  const resourceType = `0x1::coin::CoinStore<${coinType}>`;
149
- // Try to get existing coin store
197
+ // Try to get existing coin store. The coin store is a CoinStore<T>
198
+ // resource whose `data` is Movement-side untyped JSON; we shape it
199
+ // locally as a structural object with `coin.value: string`.
200
+ // any: full CoinStore schema lives at the Movement REST boundary —
201
+ // proper validation deferred to the boundary-validation follow-up of #57.
150
202
  let coinStore;
151
203
  try {
152
204
  coinStore = await this.getResource(normalizedAddress, resourceType);
153
205
  }
154
206
  catch (error) {
155
207
  // Only catch "not found" errors, rethrow others (network, API, etc.)
156
- if (!error.message || !error.message.includes('not found')) {
208
+ const msg = error instanceof Error ? error.message : String(error);
209
+ if (!msg.includes('not found')) {
157
210
  throw error;
158
211
  }
159
212
  // If doesn't exist, create new one
@@ -191,26 +244,12 @@ export class ForkManager {
191
244
  if (!account) {
192
245
  account = {
193
246
  sequenceNumber: '0',
194
- authenticationKey: normalizedAddress.padEnd(66, '0'),
247
+ authenticationKey: forkAuthKeyPlaceholder(normalizedAddress),
195
248
  };
196
249
  this.storage.saveAccount(normalizedAddress, account);
197
250
  }
198
251
  console.log(` āœ“ Funded ${normalizedAddress} with ${amount} coins`);
199
252
  }
200
- /**
201
- * Normalize address format
202
- */
203
- normalizeAddress(address) {
204
- let normalized = address.toLowerCase();
205
- if (!normalized.startsWith('0x')) {
206
- normalized = `0x${normalized}`;
207
- }
208
- // Pad to 66 characters (0x + 64 hex chars)
209
- if (normalized.length < 66) {
210
- normalized = '0x' + normalized.slice(2).padStart(64, '0');
211
- }
212
- return normalized;
213
- }
214
253
  /**
215
254
  * List all accounts in the fork
216
255
  */
@@ -222,7 +261,7 @@ export class ForkManager {
222
261
  *
223
262
  * @param addresses Array of addresses to fund
224
263
  * @param amount Amount of coins per account
225
- * @param coinType Coin type (defaults to AptosCoin)
264
+ * @param coinType Coin type (defaults to the chain's native coin)
226
265
  *
227
266
  * @example
228
267
  * await forkManager.fundMultipleAccounts(
@@ -231,11 +270,13 @@ export class ForkManager {
231
270
  * );
232
271
  */
233
272
  async fundMultipleAccounts(addresses, amount, coinType = '0x1::aptos_coin::AptosCoin') {
234
- console.log(`\nšŸ’° Funding ${addresses.length} accounts with ${amount} coins each...`);
273
+ logger.newline();
274
+ logger.step(`Funding ${addresses.length} accounts with ${amount} coins each...`);
235
275
  for (const address of addresses) {
236
276
  await this.fundAccount(address, amount, coinType);
237
277
  }
238
- console.log(`āœ“ All accounts funded successfully\n`);
278
+ logger.success("All accounts funded successfully");
279
+ logger.newline();
239
280
  }
240
281
  /**
241
282
  * Reset fork state to initial snapshot
@@ -245,11 +286,13 @@ export class ForkManager {
245
286
  * await forkManager.resetState();
246
287
  */
247
288
  async resetState() {
248
- console.log(`\nšŸ”„ Resetting fork state...`);
289
+ logger.newline();
290
+ logger.step("Resetting fork state...");
249
291
  // Clear all accounts and resources from storage
250
292
  this.storage.clearAccounts();
251
293
  this.storage.clearResources();
252
- console.log(`āœ“ Fork state reset to initial snapshot\n`);
294
+ logger.success("Fork state reset to initial snapshot");
295
+ logger.newline();
253
296
  }
254
297
  /**
255
298
  * Get or create an account, ensuring it exists in the fork
@@ -262,7 +305,7 @@ export class ForkManager {
262
305
  * const account = await forkManager.getOrCreateAccount("0x123...");
263
306
  */
264
307
  async getOrCreateAccount(address) {
265
- const normalizedAddress = this.normalizeAddress(address);
308
+ const normalizedAddress = normalizeAddress(address);
266
309
  // Try to get existing account
267
310
  try {
268
311
  return await this.getAccount(normalizedAddress);
@@ -271,7 +314,7 @@ export class ForkManager {
271
314
  // If account doesn't exist, create a minimal one
272
315
  const newAccount = {
273
316
  sequenceNumber: '0',
274
- authenticationKey: normalizedAddress.padEnd(66, '0'),
317
+ authenticationKey: forkAuthKeyPlaceholder(normalizedAddress),
275
318
  };
276
319
  this.storage.saveAccount(normalizedAddress, newAccount);
277
320
  console.log(` āœ“ Created new account ${normalizedAddress}`);
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/fork/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/fork/manager.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
1
  /**
2
- * Fork Server - Serves fork data via Movement/Aptos RPC API
2
+ * Fork Server - Serves fork data via Movement L1 RPC API
3
3
  * Emulates a Movement L1 node using local fork storage
4
4
  */
5
5
  export declare class ForkServer {
6
6
  private server;
7
7
  private forkManager;
8
8
  private port;
9
- constructor(forkPath: string, port?: number);
9
+ private host;
10
+ /**
11
+ * @param host Interface to bind. Defaults to `127.0.0.1` so cached fork
12
+ * state (which may include sensitive resources) is not exposed on the LAN.
13
+ * Pass `'0.0.0.0'` only if you intentionally need to expose the server.
14
+ */
15
+ constructor(forkPath: string, port?: number, host?: string);
10
16
  /**
11
17
  * Start the fork server
12
18
  */
@@ -40,7 +46,9 @@ export declare class ForkServer {
40
46
  */
41
47
  private handleGetResources;
42
48
  /**
43
- * Send JSON response
49
+ * Send JSON response.
50
+ * unknown: arbitrary JSON-serializable payload; structural shape varies by
51
+ * endpoint (account metadata, resource arrays, error envelopes).
44
52
  */
45
53
  private sendJSON;
46
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/fork/server.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,IAAI,CAAS;gBAET,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAa;IAKjD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;YACW,aAAa;IAyD3B;;OAEG;YACW,gBAAgB;IA0B9B;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;YACW,iBAAiB;IAqB/B;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAiBhB;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;OAEG;IACH,OAAO,CAAC,SAAS;CAOlB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/fork/server.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IAErB;;;;OAIG;gBACS,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAa,EAAE,IAAI,GAAE,MAAoB;IAM7E;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8E5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;YACW,aAAa;IA6D3B;;OAEG;YACW,gBAAgB;IA0B9B;;OAEG;YACW,gBAAgB;IAqB9B;;OAEG;YACW,iBAAiB;IAsB/B;;OAEG;YACW,kBAAkB;IAwBhC;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAiBhB;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;OAEG;IACH,OAAO,CAAC,SAAS;CAOlB"}