movehat 0.2.4 → 0.2.6

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 +17 -1
  19. package/dist/commands/run.js +46 -33
  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 +109 -28
  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 +6 -4
  121. package/dist/utils/parseCliOutput.js +10 -6
  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
@@ -13,6 +13,45 @@ import { logger } from "../ui/index.js";
13
13
  // same value here. No corruption, no in-flight-promise memoization
14
14
  // needed.
15
15
  const configCache = new Map();
16
+ // In-flight load deduplication (#47). When two callers hit a cold cache
17
+ // for the same config file concurrently, both would invoke
18
+ // `register()` from `tsx/esm/api` and race on the unregister cleanup.
19
+ // The dedup map ensures only ONE load runs per (path, mtime) burst —
20
+ // concurrent callers await the same Promise. Cleared after the load
21
+ // settles so a later edit (new mtime) can re-trigger a cold load.
22
+ const inFlightLoads = new Map();
23
+ // Hostnames recognized as safe targets for the deterministic test key
24
+ // auto-injection. Any URL whose hostname is not in this set causes the
25
+ // test-key path to be skipped even if the network NAME is 'testnet' or
26
+ // 'local' (#40 — name-only gating was spoofable when users named a
27
+ // production-pointing network 'testnet').
28
+ const TEST_ENDPOINT_HOSTS = new Set([
29
+ "testnet.movementnetwork.xyz",
30
+ "localhost",
31
+ "127.0.0.1",
32
+ "::1",
33
+ ]);
34
+ function isKnownTestEndpoint(url) {
35
+ try {
36
+ return TEST_ENDPOINT_HOSTS.has(new URL(url).hostname.toLowerCase());
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ }
42
+ // Render a URL for log output without exposing userinfo (`user:pass@`)
43
+ // or query strings (`?apiKey=…`). Returns the protocol + host + pathname
44
+ // only, which is enough for the operator to identify the endpoint
45
+ // without leaking embedded credentials to CI logs.
46
+ function sanitizeUrlForLog(url) {
47
+ try {
48
+ const parsed = new URL(url);
49
+ return `${parsed.protocol}//${parsed.host}${parsed.pathname}`;
50
+ }
51
+ catch {
52
+ return "<invalid-url>";
53
+ }
54
+ }
16
55
  /**
17
56
  * Loads the user's movehat.config.{ts,js} from the current working directory.
18
57
  *
@@ -47,32 +86,58 @@ export async function loadUserConfig() {
47
86
  if (cached && cached.mtimeMs === mtimeMs) {
48
87
  return cached.config;
49
88
  }
50
- let configModule;
51
- if (configPath.endsWith('.ts')) {
52
- const { register } = await import('tsx/esm/api');
53
- const unregister = register();
54
- try {
55
- const configUrl = pathToFileURL(configPath).href;
56
- configModule = await import(configUrl + '?mtime=' + mtimeMs);
57
- }
58
- finally {
59
- unregister();
60
- }
89
+ // Dedup concurrent cold-cache loads of the same file (#47).
90
+ // Without this, two callers race on tsx's register/unregister and
91
+ // the second may run its `await import()` after the first calls
92
+ // unregister(), removing the loader mid-flight. All callers go
93
+ // through the same `return await loadPromise` below so the outer
94
+ // try/catch wraps a consistent error regardless of who started the
95
+ // load.
96
+ let loadPromise = inFlightLoads.get(configPath);
97
+ if (!loadPromise) {
98
+ loadPromise = doLoadConfig(configPath, mtimeMs);
99
+ inFlightLoads.set(configPath, loadPromise);
100
+ // Clean up after settles. `.catch(() => undefined)` after the
101
+ // finally chain swallows the cleanup-promise rejection so it
102
+ // does not become an unhandled rejection — the actual awaiters
103
+ // still see the original rejection via `return await loadPromise`.
104
+ void loadPromise
105
+ .finally(() => {
106
+ if (inFlightLoads.get(configPath) === loadPromise) {
107
+ inFlightLoads.delete(configPath);
108
+ }
109
+ })
110
+ .catch(() => undefined);
61
111
  }
62
- else {
112
+ return await loadPromise;
113
+ }
114
+ catch (error) {
115
+ throw new Error(`Failed to load configuration file '${configPath}': ${error}`);
116
+ }
117
+ }
118
+ async function doLoadConfig(configPath, mtimeMs) {
119
+ let configModule;
120
+ if (configPath.endsWith('.ts')) {
121
+ const { register } = await import('tsx/esm/api');
122
+ const unregister = register();
123
+ try {
63
124
  const configUrl = pathToFileURL(configPath).href;
64
125
  configModule = await import(configUrl + '?mtime=' + mtimeMs);
65
126
  }
66
- const userConfig = configModule.default;
67
- if (!userConfig.networks || Object.keys(userConfig.networks).length === 0) {
68
- throw new Error("No networks defined in configuration. Add at least one network in the 'networks' field.");
127
+ finally {
128
+ unregister();
69
129
  }
70
- configCache.set(configPath, { mtimeMs, config: userConfig });
71
- return userConfig;
72
130
  }
73
- catch (error) {
74
- throw new Error(`Failed to load configuration file '${configPath}': ${error}`);
131
+ else {
132
+ const configUrl = pathToFileURL(configPath).href;
133
+ configModule = await import(configUrl + '?mtime=' + mtimeMs);
75
134
  }
135
+ const userConfig = configModule.default;
136
+ if (!userConfig.networks || Object.keys(userConfig.networks).length === 0) {
137
+ throw new Error("No networks defined in configuration. Add at least one network in the 'networks' field.");
138
+ }
139
+ configCache.set(configPath, { mtimeMs, config: userConfig });
140
+ return userConfig;
76
141
  }
77
142
  /**
78
143
  * Clear the in-memory config cache. Test-only escape hatch.
@@ -82,6 +147,7 @@ export async function loadUserConfig() {
82
147
  */
83
148
  export function _resetConfigCache() {
84
149
  configCache.clear();
150
+ inFlightLoads.clear();
85
151
  }
86
152
  /**
87
153
  * Resolve configuration for a specific network
@@ -136,15 +202,30 @@ export async function resolveNetworkConfig(userConfig, networkName) {
136
202
  if (accounts.length === 0 && process.env.PRIVATE_KEY) {
137
203
  accounts = [process.env.PRIVATE_KEY];
138
204
  }
139
- // 4. Validate we have at least one account (unless using testnet/local)
205
+ // 4. Validate we have at least one account (unless using testnet/local
206
+ // AND the URL is a recognized test endpoint — name alone is not enough
207
+ // per #40, since a user can name a network 'testnet' but point it at
208
+ // a production RPC and would otherwise inherit the deterministic test
209
+ // key with a production endpoint).
140
210
  if (accounts.length === 0 || !accounts[0]) {
141
- // Special case: Auto-generate test accounts for testing networks
142
- // testnet = public Movement test network (recommended)
143
- // local = local fork server
144
- if (selectedNetwork === "testnet" || selectedNetwork === "local") {
211
+ const isTestNetworkName = selectedNetwork === "testnet" || selectedNetwork === "local";
212
+ const isTestEndpoint = isTestNetworkName && isKnownTestEndpoint(networkConfig.url);
213
+ if (isTestNetworkName && !isTestEndpoint) {
214
+ // Name matches the reserved convention but URL is not a recognized
215
+ // test endpoint — block the deterministic test-key injection. Falls
216
+ // through to the standard "no accounts" throw below so the user gets
217
+ // actionable guidance.
218
+ logger.warning(`Network '${selectedNetwork}' uses a name reserved for testnet/local ` +
219
+ `but '${sanitizeUrlForLog(networkConfig.url)}' is not a recognized test endpoint. ` +
220
+ `Skipping auto-injection of the deterministic test key to protect ` +
221
+ `against accidental production use. Set PRIVATE_KEY explicitly, ` +
222
+ `configure 'accounts' in movehat.config.ts, or rename this network.`);
223
+ }
224
+ if (isTestEndpoint) {
145
225
  // Security: Using a deterministic test account (like Hardhat's default accounts)
146
226
  // This is SAFE because:
147
- // 1. Only used for testnet/local (never mainnet - that throws error below)
227
+ // 1. Only used for testnet/local against a known test endpoint
228
+ // (network NAME + URL allowlist enforced above; bypassed otherwise)
148
229
  // 2. Perfect for transaction simulation (no real funds)
149
230
  // 3. Deterministic = consistent test results
150
231
  const testPrivateKey = "0x0000000000000000000000000000000000000000000000000000000000000001";
@@ -155,8 +236,9 @@ export async function resolveNetworkConfig(userConfig, networkName) {
155
236
  logger.newline();
156
237
  }
157
238
  else {
158
- // For any other network (especially mainnet), REQUIRE explicit configuration
159
- // This prevents accidentally using the test key on production networks
239
+ // For any other network (mainnet, or testnet/local with a non-test
240
+ // URL), REQUIRE explicit configuration. This prevents accidentally
241
+ // using the test key on production networks.
160
242
  throw new Error(`Network '${selectedNetwork}' has no accounts configured.\n` +
161
243
  `\n` +
162
244
  `SECURITY: This network requires explicit account configuration.\n` +
@@ -233,4 +315,3 @@ function deriveAccountAddress(privateKeyHex) {
233
315
  return "";
234
316
  }
235
317
  }
236
- //# sourceMappingURL=config.js.map
@@ -14,4 +14,3 @@ export declare class MoveContract {
14
14
  getModuleId(): string;
15
15
  }
16
16
  export declare function getContract(aptos: Aptos, moduleAddress: string, moduleName: string): MoveContract;
17
- //# sourceMappingURL=contract.d.ts.map
@@ -64,4 +64,3 @@ export class MoveContract {
64
64
  export function getContract(aptos, moduleAddress, moduleName) {
65
65
  return new MoveContract(aptos, moduleAddress, moduleName);
66
66
  }
67
- //# sourceMappingURL=contract.js.map
@@ -23,4 +23,3 @@ export declare function getAllDeployments(network: string): Record<string, Deplo
23
23
  * Get deployed address for a module
24
24
  */
25
25
  export declare function getDeployedAddress(network: string, moduleName: string): string | null;
26
- //# sourceMappingURL=deployments.d.ts.map
@@ -111,4 +111,3 @@ export function getDeployedAddress(network, moduleName) {
111
111
  const deployment = loadDeployment(network, moduleName);
112
112
  return deployment ? deployment.address : null;
113
113
  }
114
- //# sourceMappingURL=deployments.js.map
@@ -64,4 +64,3 @@ export declare function removeKeyFile(path: string): Error | null;
64
64
  */
65
65
  export declare const cleanupCallbacks: Set<() => void>;
66
66
  export declare function ensureSignalHandler(): void;
67
- //# sourceMappingURL=movementProfile.d.ts.map
@@ -125,4 +125,3 @@ export function ensureSignalHandler() {
125
125
  process.on("SIGINT", handler);
126
126
  process.on("SIGTERM", handler);
127
127
  }
128
- //# sourceMappingURL=movementProfile.js.map
@@ -38,4 +38,3 @@ export declare function validateProfileSafety(profile: string): string;
38
38
  * commands (e.g. `exec`).
39
39
  */
40
40
  export declare function validateAndEscapeProfile(profile: string): string;
41
- //# sourceMappingURL=shell.d.ts.map
@@ -71,4 +71,3 @@ export function validateProfileSafety(profile) {
71
71
  export function validateAndEscapeProfile(profile) {
72
72
  return escapeShellArg(validateProfileSafety(profile));
73
73
  }
74
- //# sourceMappingURL=shell.js.map
package/dist/errors.d.ts CHANGED
@@ -44,4 +44,3 @@ export declare class CliExecutionError extends Error {
44
44
  readonly args: readonly string[];
45
45
  constructor(message: string, command: string, args: readonly string[], exitCode: number, stderr: string, stdoutPreview: string);
46
46
  }
47
- //# sourceMappingURL=errors.d.ts.map
package/dist/errors.js CHANGED
@@ -75,4 +75,3 @@ export class CliExecutionError extends Error {
75
75
  }
76
76
  }
77
77
  }
78
- //# sourceMappingURL=errors.js.map
@@ -28,6 +28,18 @@ export declare class MovementApiClient {
28
28
  * public endpoints.
29
29
  */
30
30
  private get;
31
+ /**
32
+ * Make a POST request to the API with a JSON body.
33
+ *
34
+ * Mirrors `get<T>` for TLS/timeout/maxBytes/error-wrapping; differs
35
+ * only in `method: 'POST'`, the `Content-Type: application/json`
36
+ * header, and writing `body` to the request stream before `end()`.
37
+ *
38
+ * `extraHeaders` are merged in last and override defaults — used by
39
+ * the fork-server view proxy to forward client headers like
40
+ * `Accept` or `X-Aptos-Client` through to the upstream node.
41
+ */
42
+ private post;
31
43
  /**
32
44
  * Build API path with proper prefix
33
45
  */
@@ -48,5 +60,16 @@ export declare class MovementApiClient {
48
60
  * Get all resources for an account
49
61
  */
50
62
  getAccountResources(address: string): Promise<AccountResource[]>;
63
+ /**
64
+ * Execute a Move view function via the upstream node's POST /v1/view.
65
+ *
66
+ * Stateless passthrough — view results are not cached. Returns the raw
67
+ * array the upstream API returns (single-value views still come back as
68
+ * a one-element tuple).
69
+ *
70
+ * `extraHeaders` are forwarded to upstream — used by the fork server's
71
+ * view proxy to relay client headers (`Accept`, `X-Aptos-Client`, …)
72
+ * so downstream behavior such as BCS-encoded responses is preserved.
73
+ */
74
+ view(payload: unknown, extraHeaders?: Record<string, string>): Promise<unknown[]>;
51
75
  }
52
- //# sourceMappingURL=api.d.ts.map
package/dist/fork/api.js CHANGED
@@ -98,6 +98,87 @@ export class MovementApiClient {
98
98
  req.end();
99
99
  });
100
100
  }
101
+ /**
102
+ * Make a POST request to the API with a JSON body.
103
+ *
104
+ * Mirrors `get<T>` for TLS/timeout/maxBytes/error-wrapping; differs
105
+ * only in `method: 'POST'`, the `Content-Type: application/json`
106
+ * header, and writing `body` to the request stream before `end()`.
107
+ *
108
+ * `extraHeaders` are merged in last and override defaults — used by
109
+ * the fork-server view proxy to forward client headers like
110
+ * `Accept` or `X-Aptos-Client` through to the upstream node.
111
+ */
112
+ async post(path, body, extraHeaders = {}) {
113
+ const fullUrl = `${this.nodeUrl}${path}`;
114
+ const parsedUrl = new URL(fullUrl);
115
+ const isHttps = parsedUrl.protocol === 'https:';
116
+ const client = isHttps ? https : http;
117
+ const payload = JSON.stringify(body);
118
+ const headers = {
119
+ 'Content-Type': 'application/json',
120
+ 'Content-Length': Buffer.byteLength(payload).toString(),
121
+ };
122
+ if (this.apiKey !== undefined) {
123
+ headers.Authorization = `Bearer ${this.apiKey}`;
124
+ }
125
+ for (const [k, v] of Object.entries(extraHeaders)) {
126
+ // Don't let callers override Content-Length — we just computed it.
127
+ if (k.toLowerCase() === 'content-length')
128
+ continue;
129
+ headers[k] = v;
130
+ }
131
+ const timeoutMs = this.timeoutMs;
132
+ const maxBytes = this.maxBytes;
133
+ return new Promise((resolve, reject) => {
134
+ let settled = false;
135
+ const settle = (fn) => {
136
+ if (settled)
137
+ return;
138
+ settled = true;
139
+ fn();
140
+ };
141
+ const req = client.request(fullUrl, { method: 'POST', headers }, (res) => {
142
+ const chunks = [];
143
+ let totalBytes = 0;
144
+ res.on('data', (chunk) => {
145
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
146
+ totalBytes += buf.length;
147
+ if (totalBytes > maxBytes) {
148
+ req.destroy();
149
+ settle(() => reject(new Error(`Response exceeded maxBytes (${maxBytes}); ${totalBytes} bytes received before abort`)));
150
+ return;
151
+ }
152
+ chunks.push(buf);
153
+ });
154
+ res.on('end', () => {
155
+ if (settled)
156
+ return;
157
+ const data = Buffer.concat(chunks).toString('utf8');
158
+ if (res.statusCode !== 200) {
159
+ settle(() => reject(new Error(`API request failed with status ${res.statusCode}: ${data}`)));
160
+ return;
161
+ }
162
+ try {
163
+ const parsed = JSON.parse(data);
164
+ settle(() => resolve(parsed));
165
+ }
166
+ catch (err) {
167
+ settle(() => reject(new Error(`Failed to parse JSON response: ${err}`)));
168
+ }
169
+ });
170
+ });
171
+ req.setTimeout(timeoutMs, () => {
172
+ req.destroy();
173
+ settle(() => reject(new Error(`API request timed out after ${timeoutMs}ms`)));
174
+ });
175
+ req.on('error', (err) => {
176
+ settle(() => reject(new Error(`API request failed: ${err.message}`)));
177
+ });
178
+ req.write(payload);
179
+ req.end();
180
+ });
181
+ }
101
182
  /**
102
183
  * Build API path with proper prefix
103
184
  */
@@ -135,5 +216,18 @@ export class MovementApiClient {
135
216
  const normalizedAddress = normalizeAddressShort(address);
136
217
  return this.get(this.apiPath(`/accounts/${normalizedAddress}/resources`));
137
218
  }
219
+ /**
220
+ * Execute a Move view function via the upstream node's POST /v1/view.
221
+ *
222
+ * Stateless passthrough — view results are not cached. Returns the raw
223
+ * array the upstream API returns (single-value views still come back as
224
+ * a one-element tuple).
225
+ *
226
+ * `extraHeaders` are forwarded to upstream — used by the fork server's
227
+ * view proxy to relay client headers (`Accept`, `X-Aptos-Client`, …)
228
+ * so downstream behavior such as BCS-encoded responses is preserved.
229
+ */
230
+ async view(payload, extraHeaders = {}) {
231
+ return this.post(this.apiPath('/view'), payload, extraHeaders);
232
+ }
138
233
  }
139
- //# sourceMappingURL=api.js.map
@@ -38,6 +38,20 @@ export declare class ForkManager {
38
38
  getAccount(address: string): Promise<AccountState>;
39
39
  getResource(address: string, resourceType: string): Promise<any>;
40
40
  getAllResources(address: string): Promise<Record<string, any>>;
41
+ /**
42
+ * Stateless passthrough of `POST /v1/view` to the upstream RPC.
43
+ *
44
+ * View results are not cached — they depend on ledger version and
45
+ * arguments, so any caching layer would need version-aware
46
+ * invalidation that the fork system does not implement today. The
47
+ * payload is forwarded verbatim and the upstream response array is
48
+ * returned unchanged.
49
+ *
50
+ * `extraHeaders` are forwarded to upstream so that client headers
51
+ * such as `Accept: application/x-bcs` (for BCS-encoded view results)
52
+ * or `X-Aptos-Client` round-trip through the proxy.
53
+ */
54
+ forwardView(payload: unknown, extraHeaders?: Record<string, string>): Promise<unknown[]>;
41
55
  setResource(address: string, resourceType: string, data: unknown): Promise<void>;
42
56
  /** Adds to the existing balance rather than replacing it. */
43
57
  fundAccount(address: string, amount: number, coinType?: string): Promise<void>;
@@ -76,4 +90,3 @@ export declare class ForkManager {
76
90
  */
77
91
  getOrCreateAccount(address: string): Promise<AccountState>;
78
92
  }
79
- //# sourceMappingURL=manager.d.ts.map
@@ -154,6 +154,25 @@ export class ForkManager {
154
154
  }
155
155
  return resources;
156
156
  }
157
+ /**
158
+ * Stateless passthrough of `POST /v1/view` to the upstream RPC.
159
+ *
160
+ * View results are not cached — they depend on ledger version and
161
+ * arguments, so any caching layer would need version-aware
162
+ * invalidation that the fork system does not implement today. The
163
+ * payload is forwarded verbatim and the upstream response array is
164
+ * returned unchanged.
165
+ *
166
+ * `extraHeaders` are forwarded to upstream so that client headers
167
+ * such as `Accept: application/x-bcs` (for BCS-encoded view results)
168
+ * or `X-Aptos-Client` round-trip through the proxy.
169
+ */
170
+ async forwardView(payload, extraHeaders = {}) {
171
+ if (!this.apiClient) {
172
+ throw new Error('Fork not initialized. Call initialize() or load() first.');
173
+ }
174
+ return this.apiClient.view(payload, extraHeaders);
175
+ }
157
176
  async setResource(address, resourceType, data) {
158
177
  const normalizedAddress = normalizeAddress(address);
159
178
  this.storage.saveResource(normalizedAddress, resourceType, data);
@@ -282,4 +301,3 @@ export class ForkManager {
282
301
  }
283
302
  }
284
303
  }
285
- //# sourceMappingURL=manager.js.map
@@ -32,6 +32,11 @@ export declare class ForkServer {
32
32
  * the allowlist. No-op otherwise.
33
33
  */
34
34
  private applyCors;
35
+ private isOriginAllowed;
36
+ private allowedMethodsForPath;
37
+ private sendMethodNotAllowed;
38
+ private sendForbiddenOrigin;
39
+ private handleOptions;
35
40
  /**
36
41
  * Start the fork server
37
42
  */
@@ -44,6 +49,7 @@ export declare class ForkServer {
44
49
  * Sanitize pathname for error messages to prevent log injection
45
50
  */
46
51
  private sanitizePathname;
52
+ private sanitizeErrorMessage;
47
53
  /**
48
54
  * Handle incoming HTTP requests
49
55
  */
@@ -64,6 +70,19 @@ export declare class ForkServer {
64
70
  * Handle GET /v1/accounts/:address/resources
65
71
  */
66
72
  private handleGetResources;
73
+ /**
74
+ * Handle POST /v1/view — proxy to upstream RPC.
75
+ *
76
+ * Stateless: view results are not cached. Buffers the request body
77
+ * with a 1 MiB ceiling, parses JSON, delegates to
78
+ * `forkManager.forwardView`, and returns the upstream array verbatim.
79
+ *
80
+ * Errors map to:
81
+ * 413 — body exceeds MAX_VIEW_BODY_BYTES
82
+ * 400 — body is not valid JSON
83
+ * 502 — upstream RPC failed (timeout, network error, non-200 response)
84
+ */
85
+ private handleViewProxy;
67
86
  /**
68
87
  * Send JSON response.
69
88
  * unknown: arbitrary JSON-serializable payload; structural shape varies by
@@ -79,4 +98,3 @@ export declare class ForkServer {
79
98
  */
80
99
  private sendError;
81
100
  }
82
- //# sourceMappingURL=server.d.ts.map