movehat 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.d.ts +0 -1
  3. package/dist/cli.js +0 -1
  4. package/dist/commands/compile.d.ts +0 -1
  5. package/dist/commands/compile.js +0 -1
  6. package/dist/commands/fork/create.d.ts +1 -1
  7. package/dist/commands/fork/create.js +18 -3
  8. package/dist/commands/fork/fund.d.ts +0 -1
  9. package/dist/commands/fork/fund.js +0 -1
  10. package/dist/commands/fork/list.d.ts +0 -1
  11. package/dist/commands/fork/list.js +0 -1
  12. package/dist/commands/fork/serve.d.ts +0 -1
  13. package/dist/commands/fork/serve.js +0 -1
  14. package/dist/commands/fork/view-resource.d.ts +0 -1
  15. package/dist/commands/fork/view-resource.js +0 -1
  16. package/dist/commands/init.d.ts +0 -1
  17. package/dist/commands/init.js +0 -1
  18. package/dist/commands/run.d.ts +0 -1
  19. package/dist/commands/run.js +0 -1
  20. package/dist/commands/test-move.d.ts +0 -1
  21. package/dist/commands/test-move.js +0 -1
  22. package/dist/commands/test.d.ts +0 -1
  23. package/dist/commands/test.js +8 -1
  24. package/dist/commands/update.d.ts +0 -1
  25. package/dist/commands/update.js +0 -1
  26. package/dist/core/AccountManager.d.ts +15 -2
  27. package/dist/core/AccountManager.js +32 -20
  28. package/dist/core/Publisher.d.ts +0 -1
  29. package/dist/core/Publisher.js +0 -1
  30. package/dist/core/config.d.ts +0 -1
  31. package/dist/core/config.js +0 -1
  32. package/dist/core/contract.d.ts +0 -1
  33. package/dist/core/contract.js +0 -1
  34. package/dist/core/deployments.d.ts +0 -1
  35. package/dist/core/deployments.js +0 -1
  36. package/dist/core/movementProfile.d.ts +0 -1
  37. package/dist/core/movementProfile.js +0 -1
  38. package/dist/core/shell.d.ts +0 -1
  39. package/dist/core/shell.js +0 -1
  40. package/dist/errors.d.ts +0 -1
  41. package/dist/errors.js +0 -1
  42. package/dist/fork/api.d.ts +24 -1
  43. package/dist/fork/api.js +95 -1
  44. package/dist/fork/manager.d.ts +14 -1
  45. package/dist/fork/manager.js +19 -1
  46. package/dist/fork/server.d.ts +19 -1
  47. package/dist/fork/server.js +188 -8
  48. package/dist/fork/storage.d.ts +0 -1
  49. package/dist/fork/storage.js +50 -32
  50. package/dist/fork/test.d.ts +0 -1
  51. package/dist/fork/test.js +0 -1
  52. package/dist/harness/Harness.d.ts +0 -1
  53. package/dist/harness/Harness.js +6 -2
  54. package/dist/harness/codeObject.d.ts +0 -1
  55. package/dist/harness/codeObject.js +0 -1
  56. package/dist/harness/errors.d.ts +0 -1
  57. package/dist/harness/errors.js +0 -1
  58. package/dist/harness/index.d.ts +0 -1
  59. package/dist/harness/index.js +0 -1
  60. package/dist/harness/proxy.d.ts +12 -1
  61. package/dist/harness/proxy.js +23 -1
  62. package/dist/harness/script.d.ts +0 -1
  63. package/dist/harness/script.js +0 -1
  64. package/dist/harness/view.d.ts +0 -1
  65. package/dist/harness/view.js +0 -1
  66. package/dist/helpers/assertions.d.ts +0 -1
  67. package/dist/helpers/assertions.js +0 -1
  68. package/dist/helpers/banner.d.ts +0 -1
  69. package/dist/helpers/banner.js +0 -1
  70. package/dist/helpers/index.d.ts +0 -1
  71. package/dist/helpers/index.js +0 -1
  72. package/dist/helpers/move-tests.d.ts +0 -1
  73. package/dist/helpers/move-tests.js +0 -1
  74. package/dist/helpers/npm-registry.d.ts +0 -1
  75. package/dist/helpers/npm-registry.js +0 -1
  76. package/dist/helpers/semver-utils.d.ts +0 -1
  77. package/dist/helpers/semver-utils.js +0 -1
  78. package/dist/helpers/setup.d.ts +0 -1
  79. package/dist/helpers/setup.js +0 -1
  80. package/dist/helpers/setupLocalTesting.d.ts +2 -5
  81. package/dist/helpers/setupLocalTesting.js +0 -1
  82. package/dist/helpers/testFixtures.d.ts +0 -1
  83. package/dist/helpers/testFixtures.js +0 -1
  84. package/dist/helpers/version-check.d.ts +0 -1
  85. package/dist/helpers/version-check.js +0 -1
  86. package/dist/index.d.ts +0 -1
  87. package/dist/index.js +0 -1
  88. package/dist/node/LocalNodeManager.d.ts +0 -1
  89. package/dist/node/LocalNodeManager.js +4 -2
  90. package/dist/runtime.d.ts +0 -1
  91. package/dist/runtime.js +0 -1
  92. package/dist/types/config.d.ts +0 -1
  93. package/dist/types/config.js +0 -1
  94. package/dist/types/fork.d.ts +0 -1
  95. package/dist/types/fork.js +0 -1
  96. package/dist/types/harness.d.ts +0 -1
  97. package/dist/types/harness.js +0 -1
  98. package/dist/types/runtime.d.ts +0 -1
  99. package/dist/types/runtime.js +0 -1
  100. package/dist/ui/colors.d.ts +0 -1
  101. package/dist/ui/colors.js +0 -1
  102. package/dist/ui/formatters.d.ts +0 -1
  103. package/dist/ui/formatters.js +0 -1
  104. package/dist/ui/index.d.ts +0 -1
  105. package/dist/ui/index.js +0 -1
  106. package/dist/ui/logger.d.ts +0 -1
  107. package/dist/ui/logger.js +0 -1
  108. package/dist/ui/spinner.d.ts +0 -1
  109. package/dist/ui/spinner.js +0 -1
  110. package/dist/ui/symbols.d.ts +0 -1
  111. package/dist/ui/symbols.js +0 -1
  112. package/dist/ui/table.d.ts +0 -1
  113. package/dist/ui/table.js +0 -1
  114. package/dist/utils/address.d.ts +0 -1
  115. package/dist/utils/address.js +0 -1
  116. package/dist/utils/childProcessAdapter.d.ts +0 -1
  117. package/dist/utils/childProcessAdapter.js +46 -20
  118. package/dist/utils/movementCli.d.ts +5 -0
  119. package/dist/utils/movementCli.js +91 -0
  120. package/dist/utils/parseCliOutput.d.ts +0 -1
  121. package/dist/utils/parseCliOutput.js +0 -1
  122. package/dist/utils/redact.d.ts +3 -3
  123. package/dist/utils/redact.js +6 -5
  124. package/dist/utils/runCli.d.ts +0 -1
  125. package/dist/utils/runCli.js +10 -2
  126. package/package.json +4 -4
  127. package/dist/__tests__/deployContract.test.d.ts +0 -2
  128. package/dist/__tests__/deployContract.test.d.ts.map +0 -1
  129. package/dist/__tests__/deployContract.test.js +0 -377
  130. package/dist/__tests__/deployContract.test.js.map +0 -1
  131. package/dist/__tests__/errors.test.d.ts +0 -2
  132. package/dist/__tests__/errors.test.d.ts.map +0 -1
  133. package/dist/__tests__/errors.test.js +0 -46
  134. package/dist/__tests__/errors.test.js.map +0 -1
  135. package/dist/__tests__/exports.test.d.ts +0 -2
  136. package/dist/__tests__/exports.test.d.ts.map +0 -1
  137. package/dist/__tests__/exports.test.js +0 -30
  138. package/dist/__tests__/exports.test.js.map +0 -1
  139. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +0 -25
  140. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +0 -1
  141. package/dist/__tests__/fixtures/sigint-deploy-harness.js +0 -83
  142. package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +0 -1
  143. package/dist/__tests__/fork/api.test.d.ts +0 -2
  144. package/dist/__tests__/fork/api.test.d.ts.map +0 -1
  145. package/dist/__tests__/fork/api.test.js +0 -115
  146. package/dist/__tests__/fork/api.test.js.map +0 -1
  147. package/dist/__tests__/fork/api.timeout.test.d.ts +0 -2
  148. package/dist/__tests__/fork/api.timeout.test.d.ts.map +0 -1
  149. package/dist/__tests__/fork/api.timeout.test.js +0 -98
  150. package/dist/__tests__/fork/api.timeout.test.js.map +0 -1
  151. package/dist/__tests__/harness/Harness.createLive.test.d.ts +0 -2
  152. package/dist/__tests__/harness/Harness.createLive.test.d.ts.map +0 -1
  153. package/dist/__tests__/harness/Harness.createLive.test.js +0 -53
  154. package/dist/__tests__/harness/Harness.createLive.test.js.map +0 -1
  155. package/dist/__tests__/harness/Harness.proxy.test.d.ts +0 -2
  156. package/dist/__tests__/harness/Harness.proxy.test.d.ts.map +0 -1
  157. package/dist/__tests__/harness/Harness.proxy.test.js +0 -89
  158. package/dist/__tests__/harness/Harness.proxy.test.js.map +0 -1
  159. package/dist/__tests__/harness/_fixture.d.ts +0 -54
  160. package/dist/__tests__/harness/_fixture.d.ts.map +0 -1
  161. package/dist/__tests__/harness/_fixture.js +0 -69
  162. package/dist/__tests__/harness/_fixture.js.map +0 -1
  163. package/dist/__tests__/harness/codeObject.deploy.test.d.ts +0 -2
  164. package/dist/__tests__/harness/codeObject.deploy.test.d.ts.map +0 -1
  165. package/dist/__tests__/harness/codeObject.deploy.test.js +0 -288
  166. package/dist/__tests__/harness/codeObject.deploy.test.js.map +0 -1
  167. package/dist/__tests__/harness/codeObject.upgrade.test.d.ts +0 -2
  168. package/dist/__tests__/harness/codeObject.upgrade.test.d.ts.map +0 -1
  169. package/dist/__tests__/harness/codeObject.upgrade.test.js +0 -138
  170. package/dist/__tests__/harness/codeObject.upgrade.test.js.map +0 -1
  171. package/dist/__tests__/harness/script.test.d.ts +0 -2
  172. package/dist/__tests__/harness/script.test.d.ts.map +0 -1
  173. package/dist/__tests__/harness/script.test.js +0 -219
  174. package/dist/__tests__/harness/script.test.js.map +0 -1
  175. package/dist/__tests__/harness/view.test.d.ts +0 -2
  176. package/dist/__tests__/harness/view.test.d.ts.map +0 -1
  177. package/dist/__tests__/harness/view.test.js +0 -92
  178. package/dist/__tests__/harness/view.test.js.map +0 -1
  179. package/dist/__tests__/runtime.test.d.ts +0 -2
  180. package/dist/__tests__/runtime.test.d.ts.map +0 -1
  181. package/dist/__tests__/runtime.test.js +0 -141
  182. package/dist/__tests__/runtime.test.js.map +0 -1
  183. package/dist/cli.d.ts.map +0 -1
  184. package/dist/cli.js.map +0 -1
  185. package/dist/commands/__tests__/compile.test.d.ts +0 -2
  186. package/dist/commands/__tests__/compile.test.d.ts.map +0 -1
  187. package/dist/commands/__tests__/compile.test.js +0 -351
  188. package/dist/commands/__tests__/compile.test.js.map +0 -1
  189. package/dist/commands/__tests__/compile.toml-mutation.test.d.ts +0 -2
  190. package/dist/commands/__tests__/compile.toml-mutation.test.d.ts.map +0 -1
  191. package/dist/commands/__tests__/compile.toml-mutation.test.js +0 -69
  192. package/dist/commands/__tests__/compile.toml-mutation.test.js.map +0 -1
  193. package/dist/commands/__tests__/init.test.d.ts +0 -2
  194. package/dist/commands/__tests__/init.test.d.ts.map +0 -1
  195. package/dist/commands/__tests__/init.test.js +0 -163
  196. package/dist/commands/__tests__/init.test.js.map +0 -1
  197. package/dist/commands/__tests__/run.test.d.ts +0 -2
  198. package/dist/commands/__tests__/run.test.d.ts.map +0 -1
  199. package/dist/commands/__tests__/run.test.js +0 -166
  200. package/dist/commands/__tests__/run.test.js.map +0 -1
  201. package/dist/commands/__tests__/test-move.test.d.ts +0 -2
  202. package/dist/commands/__tests__/test-move.test.d.ts.map +0 -1
  203. package/dist/commands/__tests__/test-move.test.js +0 -59
  204. package/dist/commands/__tests__/test-move.test.js.map +0 -1
  205. package/dist/commands/__tests__/test.test.d.ts +0 -2
  206. package/dist/commands/__tests__/test.test.d.ts.map +0 -1
  207. package/dist/commands/__tests__/test.test.js +0 -168
  208. package/dist/commands/__tests__/test.test.js.map +0 -1
  209. package/dist/commands/__tests__/update.test.d.ts +0 -2
  210. package/dist/commands/__tests__/update.test.d.ts.map +0 -1
  211. package/dist/commands/__tests__/update.test.js +0 -176
  212. package/dist/commands/__tests__/update.test.js.map +0 -1
  213. package/dist/commands/compile.d.ts.map +0 -1
  214. package/dist/commands/compile.js.map +0 -1
  215. package/dist/commands/fork/__tests__/create.test.d.ts +0 -2
  216. package/dist/commands/fork/__tests__/create.test.d.ts.map +0 -1
  217. package/dist/commands/fork/__tests__/create.test.js +0 -108
  218. package/dist/commands/fork/__tests__/create.test.js.map +0 -1
  219. package/dist/commands/fork/__tests__/fund.test.d.ts +0 -2
  220. package/dist/commands/fork/__tests__/fund.test.d.ts.map +0 -1
  221. package/dist/commands/fork/__tests__/fund.test.js +0 -72
  222. package/dist/commands/fork/__tests__/fund.test.js.map +0 -1
  223. package/dist/commands/fork/__tests__/list.test.d.ts +0 -2
  224. package/dist/commands/fork/__tests__/list.test.d.ts.map +0 -1
  225. package/dist/commands/fork/__tests__/list.test.js +0 -119
  226. package/dist/commands/fork/__tests__/list.test.js.map +0 -1
  227. package/dist/commands/fork/__tests__/serve.test.d.ts +0 -2
  228. package/dist/commands/fork/__tests__/serve.test.d.ts.map +0 -1
  229. package/dist/commands/fork/__tests__/serve.test.js +0 -97
  230. package/dist/commands/fork/__tests__/serve.test.js.map +0 -1
  231. package/dist/commands/fork/__tests__/view-resource.test.d.ts +0 -2
  232. package/dist/commands/fork/__tests__/view-resource.test.d.ts.map +0 -1
  233. package/dist/commands/fork/__tests__/view-resource.test.js +0 -77
  234. package/dist/commands/fork/__tests__/view-resource.test.js.map +0 -1
  235. package/dist/commands/fork/create.d.ts.map +0 -1
  236. package/dist/commands/fork/create.js.map +0 -1
  237. package/dist/commands/fork/fund.d.ts.map +0 -1
  238. package/dist/commands/fork/fund.js.map +0 -1
  239. package/dist/commands/fork/list.d.ts.map +0 -1
  240. package/dist/commands/fork/list.js.map +0 -1
  241. package/dist/commands/fork/serve.d.ts.map +0 -1
  242. package/dist/commands/fork/serve.js.map +0 -1
  243. package/dist/commands/fork/view-resource.d.ts.map +0 -1
  244. package/dist/commands/fork/view-resource.js.map +0 -1
  245. package/dist/commands/init.d.ts.map +0 -1
  246. package/dist/commands/init.js.map +0 -1
  247. package/dist/commands/run.d.ts.map +0 -1
  248. package/dist/commands/run.js.map +0 -1
  249. package/dist/commands/test-move.d.ts.map +0 -1
  250. package/dist/commands/test-move.js.map +0 -1
  251. package/dist/commands/test.d.ts.map +0 -1
  252. package/dist/commands/test.js.map +0 -1
  253. package/dist/commands/update.d.ts.map +0 -1
  254. package/dist/commands/update.js.map +0 -1
  255. package/dist/core/AccountManager.d.ts.map +0 -1
  256. package/dist/core/AccountManager.js.map +0 -1
  257. package/dist/core/Publisher.d.ts.map +0 -1
  258. package/dist/core/Publisher.js.map +0 -1
  259. package/dist/core/__tests__/AccountManager.global-state.test.d.ts +0 -2
  260. package/dist/core/__tests__/AccountManager.global-state.test.d.ts.map +0 -1
  261. package/dist/core/__tests__/AccountManager.global-state.test.js +0 -69
  262. package/dist/core/__tests__/AccountManager.global-state.test.js.map +0 -1
  263. package/dist/core/__tests__/AccountManager.test.d.ts +0 -2
  264. package/dist/core/__tests__/AccountManager.test.d.ts.map +0 -1
  265. package/dist/core/__tests__/AccountManager.test.js +0 -239
  266. package/dist/core/__tests__/AccountManager.test.js.map +0 -1
  267. package/dist/core/__tests__/config.test.d.ts +0 -2
  268. package/dist/core/__tests__/config.test.d.ts.map +0 -1
  269. package/dist/core/__tests__/config.test.js +0 -311
  270. package/dist/core/__tests__/config.test.js.map +0 -1
  271. package/dist/core/__tests__/deployments.test.d.ts +0 -2
  272. package/dist/core/__tests__/deployments.test.d.ts.map +0 -1
  273. package/dist/core/__tests__/deployments.test.js +0 -201
  274. package/dist/core/__tests__/deployments.test.js.map +0 -1
  275. package/dist/core/__tests__/movementProfile.test.d.ts +0 -2
  276. package/dist/core/__tests__/movementProfile.test.d.ts.map +0 -1
  277. package/dist/core/__tests__/movementProfile.test.js +0 -112
  278. package/dist/core/__tests__/movementProfile.test.js.map +0 -1
  279. package/dist/core/__tests__/shell.test.d.ts +0 -2
  280. package/dist/core/__tests__/shell.test.d.ts.map +0 -1
  281. package/dist/core/__tests__/shell.test.js +0 -107
  282. package/dist/core/__tests__/shell.test.js.map +0 -1
  283. package/dist/core/config.d.ts.map +0 -1
  284. package/dist/core/config.js.map +0 -1
  285. package/dist/core/contract.d.ts.map +0 -1
  286. package/dist/core/contract.js.map +0 -1
  287. package/dist/core/deployments.d.ts.map +0 -1
  288. package/dist/core/deployments.js.map +0 -1
  289. package/dist/core/movementProfile.d.ts.map +0 -1
  290. package/dist/core/movementProfile.js.map +0 -1
  291. package/dist/core/shell.d.ts.map +0 -1
  292. package/dist/core/shell.js.map +0 -1
  293. package/dist/errors.d.ts.map +0 -1
  294. package/dist/errors.js.map +0 -1
  295. package/dist/fork/__tests__/manager.test.d.ts +0 -2
  296. package/dist/fork/__tests__/manager.test.d.ts.map +0 -1
  297. package/dist/fork/__tests__/manager.test.js +0 -309
  298. package/dist/fork/__tests__/manager.test.js.map +0 -1
  299. package/dist/fork/__tests__/server.cors.test.d.ts +0 -2
  300. package/dist/fork/__tests__/server.cors.test.d.ts.map +0 -1
  301. package/dist/fork/__tests__/server.cors.test.js +0 -79
  302. package/dist/fork/__tests__/server.cors.test.js.map +0 -1
  303. package/dist/fork/__tests__/server.test.d.ts +0 -2
  304. package/dist/fork/__tests__/server.test.d.ts.map +0 -1
  305. package/dist/fork/__tests__/server.test.js +0 -54
  306. package/dist/fork/__tests__/server.test.js.map +0 -1
  307. package/dist/fork/__tests__/storage.test.d.ts +0 -2
  308. package/dist/fork/__tests__/storage.test.d.ts.map +0 -1
  309. package/dist/fork/__tests__/storage.test.js +0 -222
  310. package/dist/fork/__tests__/storage.test.js.map +0 -1
  311. package/dist/fork/__tests__/test.test.d.ts +0 -2
  312. package/dist/fork/__tests__/test.test.d.ts.map +0 -1
  313. package/dist/fork/__tests__/test.test.js +0 -81
  314. package/dist/fork/__tests__/test.test.js.map +0 -1
  315. package/dist/fork/api.d.ts.map +0 -1
  316. package/dist/fork/api.js.map +0 -1
  317. package/dist/fork/manager.d.ts.map +0 -1
  318. package/dist/fork/manager.js.map +0 -1
  319. package/dist/fork/server.d.ts.map +0 -1
  320. package/dist/fork/server.js.map +0 -1
  321. package/dist/fork/storage.d.ts.map +0 -1
  322. package/dist/fork/storage.js.map +0 -1
  323. package/dist/fork/test.d.ts.map +0 -1
  324. package/dist/fork/test.js.map +0 -1
  325. package/dist/harness/Harness.d.ts.map +0 -1
  326. package/dist/harness/Harness.js.map +0 -1
  327. package/dist/harness/codeObject.d.ts.map +0 -1
  328. package/dist/harness/codeObject.js.map +0 -1
  329. package/dist/harness/errors.d.ts.map +0 -1
  330. package/dist/harness/errors.js.map +0 -1
  331. package/dist/harness/index.d.ts.map +0 -1
  332. package/dist/harness/index.js.map +0 -1
  333. package/dist/harness/proxy.d.ts.map +0 -1
  334. package/dist/harness/proxy.js.map +0 -1
  335. package/dist/harness/script.d.ts.map +0 -1
  336. package/dist/harness/script.js.map +0 -1
  337. package/dist/harness/view.d.ts.map +0 -1
  338. package/dist/harness/view.js.map +0 -1
  339. package/dist/helpers/__tests__/semver-utils.test.d.ts +0 -2
  340. package/dist/helpers/__tests__/semver-utils.test.d.ts.map +0 -1
  341. package/dist/helpers/__tests__/semver-utils.test.js +0 -103
  342. package/dist/helpers/__tests__/semver-utils.test.js.map +0 -1
  343. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts +0 -2
  344. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts.map +0 -1
  345. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js +0 -172
  346. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js.map +0 -1
  347. package/dist/helpers/assertions.d.ts.map +0 -1
  348. package/dist/helpers/assertions.js.map +0 -1
  349. package/dist/helpers/banner.d.ts.map +0 -1
  350. package/dist/helpers/banner.js.map +0 -1
  351. package/dist/helpers/index.d.ts.map +0 -1
  352. package/dist/helpers/index.js.map +0 -1
  353. package/dist/helpers/move-tests.d.ts.map +0 -1
  354. package/dist/helpers/move-tests.js.map +0 -1
  355. package/dist/helpers/npm-registry.d.ts.map +0 -1
  356. package/dist/helpers/npm-registry.js.map +0 -1
  357. package/dist/helpers/semver-utils.d.ts.map +0 -1
  358. package/dist/helpers/semver-utils.js.map +0 -1
  359. package/dist/helpers/setup.d.ts.map +0 -1
  360. package/dist/helpers/setup.js.map +0 -1
  361. package/dist/helpers/setupLocalTesting.d.ts.map +0 -1
  362. package/dist/helpers/setupLocalTesting.js.map +0 -1
  363. package/dist/helpers/testFixtures.d.ts.map +0 -1
  364. package/dist/helpers/testFixtures.js.map +0 -1
  365. package/dist/helpers/version-check.d.ts.map +0 -1
  366. package/dist/helpers/version-check.js.map +0 -1
  367. package/dist/index.d.ts.map +0 -1
  368. package/dist/index.js.map +0 -1
  369. package/dist/node/LocalNodeManager.d.ts.map +0 -1
  370. package/dist/node/LocalNodeManager.js.map +0 -1
  371. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts +0 -2
  372. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts.map +0 -1
  373. package/dist/node/__tests__/LocalNodeManager.api-port.test.js +0 -55
  374. package/dist/node/__tests__/LocalNodeManager.api-port.test.js.map +0 -1
  375. package/dist/node/__tests__/LocalNodeManager.test.d.ts +0 -2
  376. package/dist/node/__tests__/LocalNodeManager.test.d.ts.map +0 -1
  377. package/dist/node/__tests__/LocalNodeManager.test.js +0 -449
  378. package/dist/node/__tests__/LocalNodeManager.test.js.map +0 -1
  379. package/dist/runtime.d.ts.map +0 -1
  380. package/dist/runtime.js.map +0 -1
  381. package/dist/types/config.d.ts.map +0 -1
  382. package/dist/types/config.js.map +0 -1
  383. package/dist/types/fork.d.ts.map +0 -1
  384. package/dist/types/fork.js.map +0 -1
  385. package/dist/types/harness.d.ts.map +0 -1
  386. package/dist/types/harness.js.map +0 -1
  387. package/dist/types/runtime.d.ts.map +0 -1
  388. package/dist/types/runtime.js.map +0 -1
  389. package/dist/ui/__tests__/colors.test.d.ts +0 -2
  390. package/dist/ui/__tests__/colors.test.d.ts.map +0 -1
  391. package/dist/ui/__tests__/colors.test.js +0 -127
  392. package/dist/ui/__tests__/colors.test.js.map +0 -1
  393. package/dist/ui/__tests__/logger.test.d.ts +0 -2
  394. package/dist/ui/__tests__/logger.test.d.ts.map +0 -1
  395. package/dist/ui/__tests__/logger.test.js +0 -75
  396. package/dist/ui/__tests__/logger.test.js.map +0 -1
  397. package/dist/ui/colors.d.ts.map +0 -1
  398. package/dist/ui/colors.js.map +0 -1
  399. package/dist/ui/formatters.d.ts.map +0 -1
  400. package/dist/ui/formatters.js.map +0 -1
  401. package/dist/ui/index.d.ts.map +0 -1
  402. package/dist/ui/index.js.map +0 -1
  403. package/dist/ui/logger.d.ts.map +0 -1
  404. package/dist/ui/logger.js.map +0 -1
  405. package/dist/ui/spinner.d.ts.map +0 -1
  406. package/dist/ui/spinner.js.map +0 -1
  407. package/dist/ui/symbols.d.ts.map +0 -1
  408. package/dist/ui/symbols.js.map +0 -1
  409. package/dist/ui/table.d.ts.map +0 -1
  410. package/dist/ui/table.js.map +0 -1
  411. package/dist/utils/__tests__/address.test.d.ts +0 -2
  412. package/dist/utils/__tests__/address.test.d.ts.map +0 -1
  413. package/dist/utils/__tests__/address.test.js +0 -70
  414. package/dist/utils/__tests__/address.test.js.map +0 -1
  415. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts +0 -2
  416. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts.map +0 -1
  417. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js +0 -43
  418. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js.map +0 -1
  419. package/dist/utils/__tests__/childProcessAdapter.test.d.ts +0 -2
  420. package/dist/utils/__tests__/childProcessAdapter.test.d.ts.map +0 -1
  421. package/dist/utils/__tests__/childProcessAdapter.test.js +0 -217
  422. package/dist/utils/__tests__/childProcessAdapter.test.js.map +0 -1
  423. package/dist/utils/__tests__/runCli.test.d.ts +0 -2
  424. package/dist/utils/__tests__/runCli.test.d.ts.map +0 -1
  425. package/dist/utils/__tests__/runCli.test.js +0 -187
  426. package/dist/utils/__tests__/runCli.test.js.map +0 -1
  427. package/dist/utils/address.d.ts.map +0 -1
  428. package/dist/utils/address.js.map +0 -1
  429. package/dist/utils/childProcessAdapter.d.ts.map +0 -1
  430. package/dist/utils/childProcessAdapter.js.map +0 -1
  431. package/dist/utils/parseCliOutput.d.ts.map +0 -1
  432. package/dist/utils/parseCliOutput.js.map +0 -1
  433. package/dist/utils/redact.d.ts.map +0 -1
  434. package/dist/utils/redact.js.map +0 -1
  435. package/dist/utils/runCli.d.ts.map +0 -1
  436. package/dist/utils/runCli.js.map +0 -1
  437. package/src/__tests__/deployContract.test.ts +0 -438
  438. package/src/__tests__/errors.test.ts +0 -84
  439. package/src/__tests__/exports.test.ts +0 -32
  440. package/src/__tests__/fixtures/sigint-deploy-harness.ts +0 -96
  441. package/src/__tests__/fork/api.test.ts +0 -148
  442. package/src/__tests__/fork/api.timeout.test.ts +0 -150
  443. package/src/__tests__/harness/Harness.createLive.test.ts +0 -57
  444. package/src/__tests__/harness/Harness.proxy.test.ts +0 -111
  445. package/src/__tests__/harness/_fixture.ts +0 -131
  446. package/src/__tests__/harness/codeObject.deploy.test.ts +0 -319
  447. package/src/__tests__/harness/codeObject.upgrade.test.ts +0 -156
  448. package/src/__tests__/harness/script.test.ts +0 -245
  449. package/src/__tests__/harness/view.test.ts +0 -104
  450. package/src/__tests__/runtime.test.ts +0 -182
  451. package/src/cli.ts +0 -164
  452. package/src/commands/__tests__/compile.test.ts +0 -407
  453. package/src/commands/__tests__/compile.toml-mutation.test.ts +0 -77
  454. package/src/commands/__tests__/init.test.ts +0 -210
  455. package/src/commands/__tests__/run.test.ts +0 -192
  456. package/src/commands/__tests__/test-move.test.ts +0 -81
  457. package/src/commands/__tests__/test.test.ts +0 -204
  458. package/src/commands/__tests__/update.test.ts +0 -223
  459. package/src/commands/compile.ts +0 -339
  460. package/src/commands/fork/__tests__/create.test.ts +0 -132
  461. package/src/commands/fork/__tests__/fund.test.ts +0 -104
  462. package/src/commands/fork/__tests__/list.test.ts +0 -139
  463. package/src/commands/fork/__tests__/serve.test.ts +0 -121
  464. package/src/commands/fork/__tests__/view-resource.test.ts +0 -101
  465. package/src/commands/fork/create.ts +0 -110
  466. package/src/commands/fork/fund.ts +0 -64
  467. package/src/commands/fork/list.ts +0 -98
  468. package/src/commands/fork/serve.ts +0 -80
  469. package/src/commands/fork/view-resource.ts +0 -51
  470. package/src/commands/init.ts +0 -264
  471. package/src/commands/run.ts +0 -125
  472. package/src/commands/test-move.ts +0 -27
  473. package/src/commands/test.ts +0 -255
  474. package/src/commands/update.ts +0 -201
  475. package/src/core/AccountManager.ts +0 -457
  476. package/src/core/Publisher.ts +0 -310
  477. package/src/core/__tests__/AccountManager.global-state.test.ts +0 -83
  478. package/src/core/__tests__/AccountManager.test.ts +0 -290
  479. package/src/core/__tests__/config.test.ts +0 -377
  480. package/src/core/__tests__/deployments.test.ts +0 -247
  481. package/src/core/__tests__/movementProfile.test.ts +0 -131
  482. package/src/core/__tests__/shell.test.ts +0 -138
  483. package/src/core/config.ts +0 -286
  484. package/src/core/contract.ts +0 -103
  485. package/src/core/deployments.ts +0 -155
  486. package/src/core/movementProfile.ts +0 -127
  487. package/src/core/shell.ts +0 -86
  488. package/src/errors.ts +0 -81
  489. package/src/fork/__tests__/manager.test.ts +0 -385
  490. package/src/fork/__tests__/server.cors.test.ts +0 -101
  491. package/src/fork/__tests__/server.test.ts +0 -65
  492. package/src/fork/__tests__/storage.test.ts +0 -281
  493. package/src/fork/__tests__/test.test.ts +0 -97
  494. package/src/fork/api.ts +0 -190
  495. package/src/fork/manager.ts +0 -343
  496. package/src/fork/server.ts +0 -380
  497. package/src/fork/storage.ts +0 -253
  498. package/src/fork/test.ts +0 -221
  499. package/src/harness/Harness.ts +0 -231
  500. package/src/harness/codeObject.ts +0 -381
  501. package/src/harness/errors.ts +0 -22
  502. package/src/harness/index.ts +0 -3
  503. package/src/harness/proxy.ts +0 -40
  504. package/src/harness/script.ts +0 -200
  505. package/src/harness/view.ts +0 -34
  506. package/src/helpers/__tests__/semver-utils.test.ts +0 -121
  507. package/src/helpers/__tests__/setupLocalTesting.fork-network.test.ts +0 -212
  508. package/src/helpers/assertions.ts +0 -29
  509. package/src/helpers/banner.ts +0 -63
  510. package/src/helpers/index.ts +0 -37
  511. package/src/helpers/move-tests.ts +0 -72
  512. package/src/helpers/npm-registry.ts +0 -72
  513. package/src/helpers/semver-utils.ts +0 -54
  514. package/src/helpers/setup.ts +0 -54
  515. package/src/helpers/setupLocalTesting.ts +0 -387
  516. package/src/helpers/testFixtures.ts +0 -210
  517. package/src/helpers/version-check.ts +0 -114
  518. package/src/index.ts +0 -30
  519. package/src/node/LocalNodeManager.ts +0 -383
  520. package/src/node/__tests__/LocalNodeManager.api-port.test.ts +0 -62
  521. package/src/node/__tests__/LocalNodeManager.test.ts +0 -579
  522. package/src/runtime.ts +0 -157
  523. package/src/templates/.env.example +0 -9
  524. package/src/templates/.mocharc.json +0 -8
  525. package/src/templates/.vscode/settings.json +0 -11
  526. package/src/templates/README.md +0 -146
  527. package/src/templates/gitignore +0 -22
  528. package/src/templates/move/Move.toml +0 -19
  529. package/src/templates/move/sources/Counter.move +0 -96
  530. package/src/templates/movehat.config.ts +0 -57
  531. package/src/templates/package.json +0 -27
  532. package/src/templates/scripts/deploy-counter.ts +0 -66
  533. package/src/templates/tests/Counter.test.ts +0 -113
  534. package/src/templates/tsconfig.json +0 -15
  535. package/src/templates/types/movehat.d.ts +0 -101
  536. package/src/types/config.ts +0 -83
  537. package/src/types/fork.ts +0 -47
  538. package/src/types/harness.ts +0 -182
  539. package/src/types/runtime.ts +0 -57
  540. package/src/ui/__tests__/colors.test.ts +0 -156
  541. package/src/ui/__tests__/logger.test.ts +0 -89
  542. package/src/ui/colors.ts +0 -144
  543. package/src/ui/formatters.ts +0 -246
  544. package/src/ui/index.ts +0 -62
  545. package/src/ui/logger.ts +0 -310
  546. package/src/ui/spinner.ts +0 -218
  547. package/src/ui/symbols.ts +0 -80
  548. package/src/ui/table.ts +0 -191
  549. package/src/utils/__tests__/address.test.ts +0 -93
  550. package/src/utils/__tests__/childProcessAdapter.maxBuffer.test.ts +0 -51
  551. package/src/utils/__tests__/childProcessAdapter.test.ts +0 -266
  552. package/src/utils/__tests__/runCli.test.ts +0 -240
  553. package/src/utils/address.ts +0 -52
  554. package/src/utils/childProcessAdapter.ts +0 -244
  555. package/src/utils/parseCliOutput.ts +0 -27
  556. package/src/utils/redact.ts +0 -24
  557. package/src/utils/runCli.ts +0 -64
@@ -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
@@ -2,6 +2,7 @@ import http from 'http';
2
2
  import { URL } from 'url';
3
3
  import { ForkManager } from './manager.js';
4
4
  import { logger } from '../ui/index.js';
5
+ import { redactSecrets } from '../utils/redact.js';
5
6
  /**
6
7
  * Fork Server - Serves fork data via Movement L1 RPC API
7
8
  * Emulates a Movement L1 node using local fork storage
@@ -37,6 +38,64 @@ export class ForkServer {
37
38
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
38
39
  }
39
40
  }
41
+ isOriginAllowed(req) {
42
+ const origin = req.headers.origin;
43
+ return typeof origin !== 'string' || this.corsAllowOrigins.has(origin);
44
+ }
45
+ allowedMethodsForPath(pathname) {
46
+ if (pathname === '/v1' || pathname === '/v1/') {
47
+ return ['GET'];
48
+ }
49
+ if (pathname === '/v1/view') {
50
+ return ['POST'];
51
+ }
52
+ if (pathname.match(/^\/v1\/accounts\/0x[a-fA-F0-9]{1,64}$/)) {
53
+ return ['GET'];
54
+ }
55
+ if (pathname.match(/^\/v1\/accounts\/0x[a-fA-F0-9]{1,64}\/resource\/.+$/)) {
56
+ return ['GET'];
57
+ }
58
+ if (pathname.match(/^\/v1\/accounts\/0x[a-fA-F0-9]{1,64}\/resources$/)) {
59
+ return ['GET'];
60
+ }
61
+ return null;
62
+ }
63
+ sendMethodNotAllowed(res, allowedMethods) {
64
+ this.sendJSON(res, 405, {
65
+ message: `Method not allowed. Allowed methods: ${allowedMethods.join(', ')}`,
66
+ error_code: 'method_not_allowed',
67
+ vm_error_code: null
68
+ }, { Allow: allowedMethods.join(', ') });
69
+ }
70
+ sendForbiddenOrigin(res) {
71
+ this.sendJSON(res, 403, {
72
+ message: 'Origin is not allowed to access this fork server',
73
+ error_code: 'cors_origin_forbidden',
74
+ vm_error_code: null
75
+ });
76
+ }
77
+ handleOptions(req, res, pathname) {
78
+ if (req.method !== 'OPTIONS') {
79
+ return false;
80
+ }
81
+ const origin = req.headers.origin;
82
+ const allowedMethods = this.allowedMethodsForPath(pathname);
83
+ if (typeof origin !== 'string' || !allowedMethods) {
84
+ this.sendMethodNotAllowed(res, allowedMethods ?? ['GET', 'POST']);
85
+ return true;
86
+ }
87
+ this.applyCors(req, res);
88
+ const requestedMethod = req.headers['access-control-request-method'];
89
+ if (typeof requestedMethod === 'string' &&
90
+ !allowedMethods.includes(requestedMethod.toUpperCase())) {
91
+ this.sendMethodNotAllowed(res, allowedMethods);
92
+ return true;
93
+ }
94
+ res.setHeader('Allow', allowedMethods.join(', '));
95
+ res.writeHead(204);
96
+ res.end();
97
+ return true;
98
+ }
40
99
  /**
41
100
  * Start the fork server
42
101
  */
@@ -53,7 +112,7 @@ export class ForkServer {
53
112
  this.server = http.createServer((req, res) => {
54
113
  this.handleRequest(req, res).catch((error) => {
55
114
  // Log full error server-side for diagnostics
56
- logger.error(`Error handling request: ${error instanceof Error ? error.message : String(error)}`);
115
+ logger.error(`Error handling request: ${this.sanitizeErrorMessage(error instanceof Error ? error.message : String(error))}`);
57
116
  // Only send response if headers haven't been sent yet
58
117
  if (!res.headersSent) {
59
118
  this.applyCors(req, res);
@@ -135,6 +194,9 @@ export class ForkServer {
135
194
  // Truncate to reasonable length
136
195
  return sanitized.length > 100 ? sanitized.substring(0, 100) + '...' : sanitized;
137
196
  }
197
+ sanitizeErrorMessage(message) {
198
+ return this.sanitizePathname(redactSecrets(message));
199
+ }
138
200
  /**
139
201
  * Handle incoming HTTP requests
140
202
  */
@@ -145,10 +207,16 @@ export class ForkServer {
145
207
  // grep-friendly line shape (timestamp + method + path, no symbol).
146
208
  logger.plain(`[${new Date().toISOString()}] ${req.method} ${pathname}`);
147
209
  this.applyCors(req, res);
148
- // Handle OPTIONS for CORS preflight
149
- if (req.method === 'OPTIONS') {
150
- res.writeHead(200);
151
- res.end();
210
+ if (!this.isOriginAllowed(req)) {
211
+ this.sendForbiddenOrigin(res);
212
+ return;
213
+ }
214
+ if (this.handleOptions(req, res, pathname)) {
215
+ return;
216
+ }
217
+ const allowedMethods = this.allowedMethodsForPath(pathname);
218
+ if (allowedMethods && !allowedMethods.includes(req.method ?? '')) {
219
+ this.sendMethodNotAllowed(res, allowedMethods);
152
220
  return;
153
221
  }
154
222
  try {
@@ -165,13 +233,27 @@ export class ForkServer {
165
233
  const accountIndex = parts.indexOf('accounts') + 1;
166
234
  const resourceIndex = parts.indexOf('resource') + 1;
167
235
  const address = parts[accountIndex];
168
- const resourceType = decodeURIComponent(parts.slice(resourceIndex).join('/'));
236
+ let resourceType;
237
+ try {
238
+ resourceType = decodeURIComponent(parts.slice(resourceIndex).join('/'));
239
+ }
240
+ catch {
241
+ this.sendJSON(res, 400, {
242
+ message: 'Malformed resource path',
243
+ error_code: 'malformed_path',
244
+ vm_error_code: null
245
+ });
246
+ return;
247
+ }
169
248
  if (!address) {
170
249
  this.send404(res, 'Malformed resource path', 'malformed_path');
171
250
  return;
172
251
  }
173
252
  await this.handleGetResource(address, resourceType, res);
174
253
  }
254
+ else if (pathname === '/v1/view' && req.method === 'POST') {
255
+ await this.handleViewProxy(req, res);
256
+ }
175
257
  else {
176
258
  // Use regex capture for resources endpoint
177
259
  const resourcesMatch = pathname.match(/^\/v1\/accounts\/(0x[a-fA-F0-9]{1,64})\/resources$/);
@@ -188,7 +270,7 @@ export class ForkServer {
188
270
  }
189
271
  catch (error) {
190
272
  // Log full error server-side for diagnostics
191
- logger.error(`Error handling request: ${error instanceof Error ? error.message : String(error)}`);
273
+ logger.error(`Error handling request: ${this.sanitizeErrorMessage(error instanceof Error ? error.message : String(error))}`);
192
274
  // Send generic error to client (don't expose internal details)
193
275
  this.sendError(res, 500, 'Internal server error');
194
276
  }
@@ -284,6 +366,105 @@ export class ForkServer {
284
366
  }
285
367
  }
286
368
  }
369
+ /**
370
+ * Handle POST /v1/view — proxy to upstream RPC.
371
+ *
372
+ * Stateless: view results are not cached. Buffers the request body
373
+ * with a 1 MiB ceiling, parses JSON, delegates to
374
+ * `forkManager.forwardView`, and returns the upstream array verbatim.
375
+ *
376
+ * Errors map to:
377
+ * 413 — body exceeds MAX_VIEW_BODY_BYTES
378
+ * 400 — body is not valid JSON
379
+ * 502 — upstream RPC failed (timeout, network error, non-200 response)
380
+ */
381
+ async handleViewProxy(req, res) {
382
+ const MAX_VIEW_BODY_BYTES = 1 * 1024 * 1024; // 1 MiB
383
+ let body;
384
+ try {
385
+ body = await new Promise((resolve, reject) => {
386
+ const chunks = [];
387
+ let totalBytes = 0;
388
+ let overflow = false;
389
+ req.on('data', (chunk) => {
390
+ if (overflow)
391
+ return;
392
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
393
+ totalBytes += buf.length;
394
+ if (totalBytes > MAX_VIEW_BODY_BYTES) {
395
+ overflow = true;
396
+ reject(new Error('body_too_large'));
397
+ return;
398
+ }
399
+ chunks.push(buf);
400
+ });
401
+ req.on('end', () => {
402
+ if (overflow)
403
+ return;
404
+ resolve(Buffer.concat(chunks).toString('utf8'));
405
+ });
406
+ req.on('error', (err) => {
407
+ if (overflow)
408
+ return;
409
+ reject(err);
410
+ });
411
+ });
412
+ }
413
+ catch (error) {
414
+ const msg = error instanceof Error ? error.message : String(error);
415
+ if (msg === 'body_too_large') {
416
+ this.sendJSON(res, 413, {
417
+ message: `Request body exceeds ${MAX_VIEW_BODY_BYTES} bytes`,
418
+ error_code: 'body_too_large',
419
+ vm_error_code: null
420
+ });
421
+ return;
422
+ }
423
+ throw error;
424
+ }
425
+ let payload;
426
+ try {
427
+ payload = JSON.parse(body);
428
+ }
429
+ catch {
430
+ this.sendJSON(res, 400, {
431
+ message: 'Request body is not valid JSON',
432
+ error_code: 'invalid_body',
433
+ vm_error_code: null
434
+ });
435
+ return;
436
+ }
437
+ // Forward a narrow set of client headers to upstream so that
438
+ // BCS-encoded responses (`Accept: application/x-bcs`) and client
439
+ // identification (`X-Aptos-Client`) round-trip through the proxy.
440
+ // Hop-by-hop and connection-level headers (host, connection,
441
+ // content-length, etc.) are deliberately not forwarded.
442
+ const forwardableHeaders = {};
443
+ for (const name of ['accept', 'x-aptos-client']) {
444
+ const value = req.headers[name];
445
+ if (typeof value === 'string') {
446
+ // Use the canonical capitalization upstream expects.
447
+ const canonical = name === 'accept' ? 'Accept' : 'X-Aptos-Client';
448
+ forwardableHeaders[canonical] = value;
449
+ }
450
+ }
451
+ try {
452
+ const result = await this.forkManager.forwardView(payload, forwardableHeaders);
453
+ this.sendJSON(res, 200, result);
454
+ }
455
+ catch (error) {
456
+ const rawMsg = error instanceof Error ? error.message : String(error);
457
+ // Sanitize: reuse the existing log-injection guard from
458
+ // sanitizePathname (control chars, length cap).
459
+ const safeMsg = this.sanitizeErrorMessage(rawMsg);
460
+ logger.error(`Upstream view-fn call failed: ${safeMsg}`);
461
+ this.sendJSON(res, 502, {
462
+ message: `Upstream view-fn call failed: ${safeMsg}`,
463
+ error_code: 'upstream_error',
464
+ vm_error_code: null
465
+ });
466
+ }
467
+ }
287
468
  /**
288
469
  * Send JSON response.
289
470
  * unknown: arbitrary JSON-serializable payload; structural shape varies by
@@ -319,4 +500,3 @@ export class ForkServer {
319
500
  });
320
501
  }
321
502
  }
322
- //# sourceMappingURL=server.js.map
@@ -70,4 +70,3 @@ export declare class ForkStorage {
70
70
  */
71
71
  clearResources(): void;
72
72
  }
73
- //# sourceMappingURL=storage.d.ts.map
@@ -1,4 +1,4 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, unlinkSync } from 'fs';
1
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, unlinkSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { isHexAddress } from '../utils/address.js';
4
4
  /**
@@ -18,6 +18,33 @@ function sanitizeAddressForFilename(address) {
18
18
  }
19
19
  return safe;
20
20
  }
21
+ const PRIVATE_DIR_MODE = 0o700;
22
+ const PRIVATE_FILE_MODE = 0o600;
23
+ function ensurePrivateDirectory(path) {
24
+ if (!existsSync(path)) {
25
+ mkdirSync(path, { recursive: true, mode: PRIVATE_DIR_MODE });
26
+ }
27
+ chmodSync(path, PRIVATE_DIR_MODE);
28
+ }
29
+ function writePrivateFile(path, data) {
30
+ writeFileSync(path, data, { mode: PRIVATE_FILE_MODE });
31
+ chmodSync(path, PRIVATE_FILE_MODE);
32
+ }
33
+ function readJsonFile(path, label) {
34
+ try {
35
+ const value = JSON.parse(readFileSync(path, 'utf-8'));
36
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
37
+ throw new Error(`Invalid JSON in ${label} at ${path}. Expected an object.`);
38
+ }
39
+ return value;
40
+ }
41
+ catch (error) {
42
+ if (error instanceof SyntaxError) {
43
+ throw new Error(`Invalid JSON in ${label} at ${path}. Delete or repair the file and retry.`);
44
+ }
45
+ throw error;
46
+ }
47
+ }
21
48
  /**
22
49
  * Storage system for fork state
23
50
  * Manages the file structure and I/O for fork data
@@ -40,27 +67,24 @@ export class ForkStorage {
40
67
  */
41
68
  initialize() {
42
69
  // Create main fork directory
43
- if (!existsSync(this.forkPath)) {
44
- mkdirSync(this.forkPath, { recursive: true });
45
- }
70
+ ensurePrivateDirectory(this.forkPath);
46
71
  // Create subdirectories
47
72
  const resourcesDir = join(this.forkPath, 'resources');
48
- if (!existsSync(resourcesDir)) {
49
- mkdirSync(resourcesDir, { recursive: true });
50
- }
73
+ ensurePrivateDirectory(resourcesDir);
51
74
  const cacheDir = join(this.forkPath, 'cache');
52
- if (!existsSync(cacheDir)) {
53
- mkdirSync(cacheDir, { recursive: true });
54
- }
75
+ ensurePrivateDirectory(cacheDir);
55
76
  // Create .gitignore for cache
56
77
  const gitignorePath = join(cacheDir, '.gitignore');
57
78
  if (!existsSync(gitignorePath)) {
58
- writeFileSync(gitignorePath, '*\n!.gitignore\n');
79
+ writePrivateFile(gitignorePath, '*\n!.gitignore\n');
59
80
  }
60
81
  // Initialize accounts.json if it doesn't exist
61
82
  const accountsPath = join(this.forkPath, 'accounts.json');
62
83
  if (!existsSync(accountsPath)) {
63
- writeFileSync(accountsPath, JSON.stringify({}, null, 2));
84
+ writePrivateFile(accountsPath, JSON.stringify({}, null, 2));
85
+ }
86
+ else {
87
+ chmodSync(accountsPath, PRIVATE_FILE_MODE);
64
88
  }
65
89
  }
66
90
  /**
@@ -74,7 +98,7 @@ export class ForkStorage {
74
98
  */
75
99
  saveMetadata(metadata) {
76
100
  const metadataPath = join(this.forkPath, 'metadata.json');
77
- writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
101
+ writePrivateFile(metadataPath, JSON.stringify(metadata, null, 2));
78
102
  }
79
103
  /**
80
104
  * Load fork metadata
@@ -84,8 +108,7 @@ export class ForkStorage {
84
108
  if (!existsSync(metadataPath)) {
85
109
  throw new Error(`Fork metadata not found at ${metadataPath}`);
86
110
  }
87
- const data = readFileSync(metadataPath, 'utf-8');
88
- return JSON.parse(data);
111
+ return readJsonFile(metadataPath, 'fork metadata');
89
112
  }
90
113
  /**
91
114
  * Get account state
@@ -95,7 +118,7 @@ export class ForkStorage {
95
118
  if (!existsSync(accountsPath)) {
96
119
  return null;
97
120
  }
98
- const accounts = JSON.parse(readFileSync(accountsPath, 'utf-8'));
121
+ const accounts = readJsonFile(accountsPath, 'fork accounts');
99
122
  return accounts[address] || null;
100
123
  }
101
124
  /**
@@ -105,10 +128,10 @@ export class ForkStorage {
105
128
  const accountsPath = join(this.forkPath, 'accounts.json');
106
129
  let accounts = {};
107
130
  if (existsSync(accountsPath)) {
108
- accounts = JSON.parse(readFileSync(accountsPath, 'utf-8'));
131
+ accounts = readJsonFile(accountsPath, 'fork accounts');
109
132
  }
110
133
  accounts[address] = state;
111
- writeFileSync(accountsPath, JSON.stringify(accounts, null, 2));
134
+ writePrivateFile(accountsPath, JSON.stringify(accounts, null, 2));
112
135
  }
113
136
  /**
114
137
  * Get resource for an account
@@ -118,7 +141,7 @@ export class ForkStorage {
118
141
  if (!existsSync(resourceFilePath)) {
119
142
  return null;
120
143
  }
121
- const resources = JSON.parse(readFileSync(resourceFilePath, 'utf-8'));
144
+ const resources = readJsonFile(resourceFilePath, 'fork resources');
122
145
  return resources[resourceType] || null;
123
146
  }
124
147
  /**
@@ -129,7 +152,7 @@ export class ForkStorage {
129
152
  if (!existsSync(resourceFilePath)) {
130
153
  return {};
131
154
  }
132
- return JSON.parse(readFileSync(resourceFilePath, 'utf-8'));
155
+ return readJsonFile(resourceFilePath, 'fork resources');
133
156
  }
134
157
  /**
135
158
  * Save resource for an account
@@ -138,15 +161,13 @@ export class ForkStorage {
138
161
  const resourceFilePath = this.getResourceFilePath(address);
139
162
  // Ensure resources directory exists
140
163
  const resourcesDir = join(this.forkPath, 'resources');
141
- if (!existsSync(resourcesDir)) {
142
- mkdirSync(resourcesDir, { recursive: true });
143
- }
164
+ ensurePrivateDirectory(resourcesDir);
144
165
  let resources = {};
145
166
  if (existsSync(resourceFilePath)) {
146
- resources = JSON.parse(readFileSync(resourceFilePath, 'utf-8'));
167
+ resources = readJsonFile(resourceFilePath, 'fork resources');
147
168
  }
148
169
  resources[resourceType] = data;
149
- writeFileSync(resourceFilePath, JSON.stringify(resources, null, 2));
170
+ writePrivateFile(resourceFilePath, JSON.stringify(resources, null, 2));
150
171
  }
151
172
  /**
152
173
  * Save all resources for an account
@@ -155,10 +176,8 @@ export class ForkStorage {
155
176
  const resourceFilePath = this.getResourceFilePath(address);
156
177
  // Ensure resources directory exists
157
178
  const resourcesDir = join(this.forkPath, 'resources');
158
- if (!existsSync(resourcesDir)) {
159
- mkdirSync(resourcesDir, { recursive: true });
160
- }
161
- writeFileSync(resourceFilePath, JSON.stringify(resources, null, 2));
179
+ ensurePrivateDirectory(resourcesDir);
180
+ writePrivateFile(resourceFilePath, JSON.stringify(resources, null, 2));
162
181
  }
163
182
  /**
164
183
  * Check if resource is cached
@@ -174,7 +193,7 @@ export class ForkStorage {
174
193
  if (!existsSync(accountsPath)) {
175
194
  return [];
176
195
  }
177
- const accounts = JSON.parse(readFileSync(accountsPath, 'utf-8'));
196
+ const accounts = readJsonFile(accountsPath, 'fork accounts');
178
197
  return Object.keys(accounts);
179
198
  }
180
199
  /**
@@ -183,7 +202,7 @@ export class ForkStorage {
183
202
  */
184
203
  clearAccounts() {
185
204
  const accountsPath = join(this.forkPath, 'accounts.json');
186
- writeFileSync(accountsPath, JSON.stringify({}, null, 2));
205
+ writePrivateFile(accountsPath, JSON.stringify({}, null, 2));
187
206
  }
188
207
  /**
189
208
  * Clear all cached resources
@@ -205,4 +224,3 @@ export class ForkStorage {
205
224
  }
206
225
  }
207
226
  }
208
- //# sourceMappingURL=storage.js.map
@@ -80,4 +80,3 @@ export declare function compareForkState(forkPath: string, account: string, reso
80
80
  * @returns Array of snapshot paths
81
81
  */
82
82
  export declare function listSnapshots(): Promise<string[]>;
83
- //# sourceMappingURL=test.d.ts.map
package/dist/fork/test.js CHANGED
@@ -164,4 +164,3 @@ export async function listSnapshots() {
164
164
  .filter(entry => entry.isDirectory())
165
165
  .map(entry => join(snapshotsDir, entry.name));
166
166
  }
167
- //# sourceMappingURL=test.js.map
@@ -119,4 +119,3 @@ export declare class Harness {
119
119
  */
120
120
  runMoveScript(options: RunMoveScriptOptions): Promise<MoveScriptResult>;
121
121
  }
122
- //# sourceMappingURL=Harness.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { setupLocalTesting } from "../helpers/setupLocalTesting.js";
2
2
  import { initRuntime } from "../runtime.js";
3
- import { createHarnessProxy } from "./proxy.js";
3
+ import { createHarnessProxy, createForkContractProxy } from "./proxy.js";
4
4
  import { deployCodeObject, upgradeCodeObject } from "./codeObject.js";
5
5
  import { runViewFunction } from "./view.js";
6
6
  import { runMoveScript } from "./script.js";
@@ -87,6 +87,11 @@ export class Harness {
87
87
  if (rpcUrl !== undefined)
88
88
  setupOpts.forkRpcUrl = rpcUrl;
89
89
  const ctx = await setupLocalTesting(setupOpts);
90
+ // Wrap getContract so contracts obtained in fork mode reject .call()
91
+ // synchronously instead of 404'ing against the fork server's
92
+ // unhandled /v1/transactions endpoint. View methods pass through.
93
+ const originalGetContract = ctx.runtime.getContract;
94
+ ctx.runtime.getContract = (address, moduleName) => createForkContractProxy(originalGetContract(address, moduleName));
90
95
  const init = {
91
96
  mode: "fork",
92
97
  runtime: ctx.runtime,
@@ -190,4 +195,3 @@ export class Harness {
190
195
  return runMoveScript(this.runtime, options);
191
196
  }
192
197
  }
193
- //# sourceMappingURL=Harness.js.map
@@ -28,4 +28,3 @@ export declare function deployCodeObject(runtime: MovehatRuntime, options: Deplo
28
28
  * @internal — called from `Harness.upgradeCodeObject`.
29
29
  */
30
30
  export declare function upgradeCodeObject(runtime: MovehatRuntime, options: UpgradeCodeObjectOptions): Promise<CodeObjectInfo>;
31
- //# sourceMappingURL=codeObject.d.ts.map
@@ -264,4 +264,3 @@ function parseObjectAddress(stdout) {
264
264
  return jsonMatch[1];
265
265
  return undefined;
266
266
  }
267
- //# sourceMappingURL=codeObject.js.map
@@ -11,4 +11,3 @@ export declare class HarnessDisposedError extends Error {
11
11
  readonly methodName: string;
12
12
  constructor(methodName: string);
13
13
  }
14
- //# sourceMappingURL=errors.d.ts.map
@@ -19,4 +19,3 @@ export class HarnessDisposedError extends Error {
19
19
  }
20
20
  }
21
21
  }
22
- //# sourceMappingURL=errors.js.map
@@ -1,4 +1,3 @@
1
1
  export { Harness } from "./Harness.js";
2
2
  export type { HarnessMode } from "./Harness.js";
3
3
  export { HarnessDisposedError } from "./errors.js";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export { Harness } from "./Harness.js";
2
2
  export { HarnessDisposedError } from "./errors.js";
3
- //# sourceMappingURL=index.js.map
@@ -4,4 +4,15 @@
4
4
  * `isPoisoned()` returns true.
5
5
  */
6
6
  export declare function createHarnessProxy<T extends object>(target: T, isPoisoned: () => boolean): T;
7
- //# sourceMappingURL=proxy.d.ts.map
7
+ /**
8
+ * Wrap a `MoveContract` so that `.call(...)` throws synchronously in
9
+ * fork mode instead of hitting the fork server's unhandled
10
+ * `/v1/transactions` endpoint and surfacing as a confusing HTTP 404.
11
+ *
12
+ * Read methods (`view`, `getModuleId`) pass through. Tracks the same
13
+ * design as the harness-level guards in {@link createHarnessProxy} for
14
+ * `deployCodeObject` / `upgradeCodeObject` / `runMoveScript`. Writable-
15
+ * fork support that would make `.call` execute against a local Move VM
16
+ * is tracked separately.
17
+ */
18
+ export declare function createForkContractProxy<T extends object>(target: T): T;
@@ -33,4 +33,26 @@ export function createHarnessProxy(target, isPoisoned) {
33
33
  },
34
34
  });
35
35
  }
36
- //# sourceMappingURL=proxy.js.map
36
+ /**
37
+ * Wrap a `MoveContract` so that `.call(...)` throws synchronously in
38
+ * fork mode instead of hitting the fork server's unhandled
39
+ * `/v1/transactions` endpoint and surfacing as a confusing HTTP 404.
40
+ *
41
+ * Read methods (`view`, `getModuleId`) pass through. Tracks the same
42
+ * design as the harness-level guards in {@link createHarnessProxy} for
43
+ * `deployCodeObject` / `upgradeCodeObject` / `runMoveScript`. Writable-
44
+ * fork support that would make `.call` execute against a local Move VM
45
+ * is tracked separately.
46
+ */
47
+ export function createForkContractProxy(target) {
48
+ return new Proxy(target, {
49
+ get(obj, prop, receiver) {
50
+ if (prop === "call") {
51
+ return () => {
52
+ throw new Error("Harness.createFork is read-only; MoveContract.call requires Harness.createLocal or createLive. Writable-fork support is tracked in #192.");
53
+ };
54
+ }
55
+ return Reflect.get(obj, prop, receiver);
56
+ },
57
+ });
58
+ }
@@ -18,4 +18,3 @@ import type { RunMoveScriptOptions, MoveScriptResult } from "../types/harness.js
18
18
  * @internal — called from `Harness.runMoveScript`.
19
19
  */
20
20
  export declare function runMoveScript(runtime: MovehatRuntime, options: RunMoveScriptOptions): Promise<MoveScriptResult>;
21
- //# sourceMappingURL=script.d.ts.map
@@ -159,4 +159,3 @@ function parseVmStatus(stdout) {
159
159
  const m = stdout.match(/"vm_status"\s*:\s*"([^"]*)"/);
160
160
  return m?.[1];
161
161
  }
162
- //# sourceMappingURL=script.js.map
@@ -19,4 +19,3 @@ import type { RunViewFunctionOptions } from "../types/harness.js";
19
19
  * @internal — called from `Harness.runViewFunction`.
20
20
  */
21
21
  export declare function runViewFunction(runtime: MovehatRuntime, options: RunViewFunctionOptions): Promise<unknown[]>;
22
- //# sourceMappingURL=view.d.ts.map