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.
- package/README.md +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -1
- package/dist/commands/compile.d.ts +0 -1
- package/dist/commands/compile.js +0 -1
- package/dist/commands/fork/create.d.ts +1 -1
- package/dist/commands/fork/create.js +18 -3
- package/dist/commands/fork/fund.d.ts +0 -1
- package/dist/commands/fork/fund.js +0 -1
- package/dist/commands/fork/list.d.ts +0 -1
- package/dist/commands/fork/list.js +0 -1
- package/dist/commands/fork/serve.d.ts +0 -1
- package/dist/commands/fork/serve.js +0 -1
- package/dist/commands/fork/view-resource.d.ts +0 -1
- package/dist/commands/fork/view-resource.js +0 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.js +0 -1
- package/dist/commands/run.d.ts +0 -1
- package/dist/commands/run.js +0 -1
- package/dist/commands/test-move.d.ts +0 -1
- package/dist/commands/test-move.js +0 -1
- package/dist/commands/test.d.ts +0 -1
- package/dist/commands/test.js +8 -1
- package/dist/commands/update.d.ts +0 -1
- package/dist/commands/update.js +0 -1
- package/dist/core/AccountManager.d.ts +15 -2
- package/dist/core/AccountManager.js +32 -20
- package/dist/core/Publisher.d.ts +0 -1
- package/dist/core/Publisher.js +0 -1
- package/dist/core/config.d.ts +0 -1
- package/dist/core/config.js +0 -1
- package/dist/core/contract.d.ts +0 -1
- package/dist/core/contract.js +0 -1
- package/dist/core/deployments.d.ts +0 -1
- package/dist/core/deployments.js +0 -1
- package/dist/core/movementProfile.d.ts +0 -1
- package/dist/core/movementProfile.js +0 -1
- package/dist/core/shell.d.ts +0 -1
- package/dist/core/shell.js +0 -1
- package/dist/errors.d.ts +0 -1
- package/dist/errors.js +0 -1
- package/dist/fork/api.d.ts +24 -1
- package/dist/fork/api.js +95 -1
- package/dist/fork/manager.d.ts +14 -1
- package/dist/fork/manager.js +19 -1
- package/dist/fork/server.d.ts +19 -1
- package/dist/fork/server.js +188 -8
- package/dist/fork/storage.d.ts +0 -1
- package/dist/fork/storage.js +50 -32
- package/dist/fork/test.d.ts +0 -1
- package/dist/fork/test.js +0 -1
- package/dist/harness/Harness.d.ts +0 -1
- package/dist/harness/Harness.js +6 -2
- package/dist/harness/codeObject.d.ts +0 -1
- package/dist/harness/codeObject.js +0 -1
- package/dist/harness/errors.d.ts +0 -1
- package/dist/harness/errors.js +0 -1
- package/dist/harness/index.d.ts +0 -1
- package/dist/harness/index.js +0 -1
- package/dist/harness/proxy.d.ts +12 -1
- package/dist/harness/proxy.js +23 -1
- package/dist/harness/script.d.ts +0 -1
- package/dist/harness/script.js +0 -1
- package/dist/harness/view.d.ts +0 -1
- package/dist/harness/view.js +0 -1
- package/dist/helpers/assertions.d.ts +0 -1
- package/dist/helpers/assertions.js +0 -1
- package/dist/helpers/banner.d.ts +0 -1
- package/dist/helpers/banner.js +0 -1
- package/dist/helpers/index.d.ts +0 -1
- package/dist/helpers/index.js +0 -1
- package/dist/helpers/move-tests.d.ts +0 -1
- package/dist/helpers/move-tests.js +0 -1
- package/dist/helpers/npm-registry.d.ts +0 -1
- package/dist/helpers/npm-registry.js +0 -1
- package/dist/helpers/semver-utils.d.ts +0 -1
- package/dist/helpers/semver-utils.js +0 -1
- package/dist/helpers/setup.d.ts +0 -1
- package/dist/helpers/setup.js +0 -1
- package/dist/helpers/setupLocalTesting.d.ts +2 -5
- package/dist/helpers/setupLocalTesting.js +0 -1
- package/dist/helpers/testFixtures.d.ts +0 -1
- package/dist/helpers/testFixtures.js +0 -1
- package/dist/helpers/version-check.d.ts +0 -1
- package/dist/helpers/version-check.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/node/LocalNodeManager.d.ts +0 -1
- package/dist/node/LocalNodeManager.js +4 -2
- package/dist/runtime.d.ts +0 -1
- package/dist/runtime.js +0 -1
- package/dist/types/config.d.ts +0 -1
- package/dist/types/config.js +0 -1
- package/dist/types/fork.d.ts +0 -1
- package/dist/types/fork.js +0 -1
- package/dist/types/harness.d.ts +0 -1
- package/dist/types/harness.js +0 -1
- package/dist/types/runtime.d.ts +0 -1
- package/dist/types/runtime.js +0 -1
- package/dist/ui/colors.d.ts +0 -1
- package/dist/ui/colors.js +0 -1
- package/dist/ui/formatters.d.ts +0 -1
- package/dist/ui/formatters.js +0 -1
- package/dist/ui/index.d.ts +0 -1
- package/dist/ui/index.js +0 -1
- package/dist/ui/logger.d.ts +0 -1
- package/dist/ui/logger.js +0 -1
- package/dist/ui/spinner.d.ts +0 -1
- package/dist/ui/spinner.js +0 -1
- package/dist/ui/symbols.d.ts +0 -1
- package/dist/ui/symbols.js +0 -1
- package/dist/ui/table.d.ts +0 -1
- package/dist/ui/table.js +0 -1
- package/dist/utils/address.d.ts +0 -1
- package/dist/utils/address.js +0 -1
- package/dist/utils/childProcessAdapter.d.ts +0 -1
- package/dist/utils/childProcessAdapter.js +46 -20
- package/dist/utils/movementCli.d.ts +5 -0
- package/dist/utils/movementCli.js +91 -0
- package/dist/utils/parseCliOutput.d.ts +0 -1
- package/dist/utils/parseCliOutput.js +0 -1
- package/dist/utils/redact.d.ts +3 -3
- package/dist/utils/redact.js +6 -5
- package/dist/utils/runCli.d.ts +0 -1
- package/dist/utils/runCli.js +10 -2
- package/package.json +4 -4
- package/dist/__tests__/deployContract.test.d.ts +0 -2
- package/dist/__tests__/deployContract.test.d.ts.map +0 -1
- package/dist/__tests__/deployContract.test.js +0 -377
- package/dist/__tests__/deployContract.test.js.map +0 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -46
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/exports.test.d.ts +0 -2
- package/dist/__tests__/exports.test.d.ts.map +0 -1
- package/dist/__tests__/exports.test.js +0 -30
- package/dist/__tests__/exports.test.js.map +0 -1
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +0 -25
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +0 -1
- package/dist/__tests__/fixtures/sigint-deploy-harness.js +0 -83
- package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +0 -1
- package/dist/__tests__/fork/api.test.d.ts +0 -2
- package/dist/__tests__/fork/api.test.d.ts.map +0 -1
- package/dist/__tests__/fork/api.test.js +0 -115
- package/dist/__tests__/fork/api.test.js.map +0 -1
- package/dist/__tests__/fork/api.timeout.test.d.ts +0 -2
- package/dist/__tests__/fork/api.timeout.test.d.ts.map +0 -1
- package/dist/__tests__/fork/api.timeout.test.js +0 -98
- package/dist/__tests__/fork/api.timeout.test.js.map +0 -1
- package/dist/__tests__/harness/Harness.createLive.test.d.ts +0 -2
- package/dist/__tests__/harness/Harness.createLive.test.d.ts.map +0 -1
- package/dist/__tests__/harness/Harness.createLive.test.js +0 -53
- package/dist/__tests__/harness/Harness.createLive.test.js.map +0 -1
- package/dist/__tests__/harness/Harness.proxy.test.d.ts +0 -2
- package/dist/__tests__/harness/Harness.proxy.test.d.ts.map +0 -1
- package/dist/__tests__/harness/Harness.proxy.test.js +0 -89
- package/dist/__tests__/harness/Harness.proxy.test.js.map +0 -1
- package/dist/__tests__/harness/_fixture.d.ts +0 -54
- package/dist/__tests__/harness/_fixture.d.ts.map +0 -1
- package/dist/__tests__/harness/_fixture.js +0 -69
- package/dist/__tests__/harness/_fixture.js.map +0 -1
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts +0 -2
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts.map +0 -1
- package/dist/__tests__/harness/codeObject.deploy.test.js +0 -288
- package/dist/__tests__/harness/codeObject.deploy.test.js.map +0 -1
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts +0 -2
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts.map +0 -1
- package/dist/__tests__/harness/codeObject.upgrade.test.js +0 -138
- package/dist/__tests__/harness/codeObject.upgrade.test.js.map +0 -1
- package/dist/__tests__/harness/script.test.d.ts +0 -2
- package/dist/__tests__/harness/script.test.d.ts.map +0 -1
- package/dist/__tests__/harness/script.test.js +0 -219
- package/dist/__tests__/harness/script.test.js.map +0 -1
- package/dist/__tests__/harness/view.test.d.ts +0 -2
- package/dist/__tests__/harness/view.test.d.ts.map +0 -1
- package/dist/__tests__/harness/view.test.js +0 -92
- package/dist/__tests__/harness/view.test.js.map +0 -1
- package/dist/__tests__/runtime.test.d.ts +0 -2
- package/dist/__tests__/runtime.test.d.ts.map +0 -1
- package/dist/__tests__/runtime.test.js +0 -141
- package/dist/__tests__/runtime.test.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/__tests__/compile.test.d.ts +0 -2
- package/dist/commands/__tests__/compile.test.d.ts.map +0 -1
- package/dist/commands/__tests__/compile.test.js +0 -351
- package/dist/commands/__tests__/compile.test.js.map +0 -1
- package/dist/commands/__tests__/compile.toml-mutation.test.d.ts +0 -2
- package/dist/commands/__tests__/compile.toml-mutation.test.d.ts.map +0 -1
- package/dist/commands/__tests__/compile.toml-mutation.test.js +0 -69
- package/dist/commands/__tests__/compile.toml-mutation.test.js.map +0 -1
- package/dist/commands/__tests__/init.test.d.ts +0 -2
- package/dist/commands/__tests__/init.test.d.ts.map +0 -1
- package/dist/commands/__tests__/init.test.js +0 -163
- package/dist/commands/__tests__/init.test.js.map +0 -1
- package/dist/commands/__tests__/run.test.d.ts +0 -2
- package/dist/commands/__tests__/run.test.d.ts.map +0 -1
- package/dist/commands/__tests__/run.test.js +0 -166
- package/dist/commands/__tests__/run.test.js.map +0 -1
- package/dist/commands/__tests__/test-move.test.d.ts +0 -2
- package/dist/commands/__tests__/test-move.test.d.ts.map +0 -1
- package/dist/commands/__tests__/test-move.test.js +0 -59
- package/dist/commands/__tests__/test-move.test.js.map +0 -1
- package/dist/commands/__tests__/test.test.d.ts +0 -2
- package/dist/commands/__tests__/test.test.d.ts.map +0 -1
- package/dist/commands/__tests__/test.test.js +0 -168
- package/dist/commands/__tests__/test.test.js.map +0 -1
- package/dist/commands/__tests__/update.test.d.ts +0 -2
- package/dist/commands/__tests__/update.test.d.ts.map +0 -1
- package/dist/commands/__tests__/update.test.js +0 -176
- package/dist/commands/__tests__/update.test.js.map +0 -1
- package/dist/commands/compile.d.ts.map +0 -1
- package/dist/commands/compile.js.map +0 -1
- package/dist/commands/fork/__tests__/create.test.d.ts +0 -2
- package/dist/commands/fork/__tests__/create.test.d.ts.map +0 -1
- package/dist/commands/fork/__tests__/create.test.js +0 -108
- package/dist/commands/fork/__tests__/create.test.js.map +0 -1
- package/dist/commands/fork/__tests__/fund.test.d.ts +0 -2
- package/dist/commands/fork/__tests__/fund.test.d.ts.map +0 -1
- package/dist/commands/fork/__tests__/fund.test.js +0 -72
- package/dist/commands/fork/__tests__/fund.test.js.map +0 -1
- package/dist/commands/fork/__tests__/list.test.d.ts +0 -2
- package/dist/commands/fork/__tests__/list.test.d.ts.map +0 -1
- package/dist/commands/fork/__tests__/list.test.js +0 -119
- package/dist/commands/fork/__tests__/list.test.js.map +0 -1
- package/dist/commands/fork/__tests__/serve.test.d.ts +0 -2
- package/dist/commands/fork/__tests__/serve.test.d.ts.map +0 -1
- package/dist/commands/fork/__tests__/serve.test.js +0 -97
- package/dist/commands/fork/__tests__/serve.test.js.map +0 -1
- package/dist/commands/fork/__tests__/view-resource.test.d.ts +0 -2
- package/dist/commands/fork/__tests__/view-resource.test.d.ts.map +0 -1
- package/dist/commands/fork/__tests__/view-resource.test.js +0 -77
- package/dist/commands/fork/__tests__/view-resource.test.js.map +0 -1
- package/dist/commands/fork/create.d.ts.map +0 -1
- package/dist/commands/fork/create.js.map +0 -1
- package/dist/commands/fork/fund.d.ts.map +0 -1
- package/dist/commands/fork/fund.js.map +0 -1
- package/dist/commands/fork/list.d.ts.map +0 -1
- package/dist/commands/fork/list.js.map +0 -1
- package/dist/commands/fork/serve.d.ts.map +0 -1
- package/dist/commands/fork/serve.js.map +0 -1
- package/dist/commands/fork/view-resource.d.ts.map +0 -1
- package/dist/commands/fork/view-resource.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/test-move.d.ts.map +0 -1
- package/dist/commands/test-move.js.map +0 -1
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js.map +0 -1
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js.map +0 -1
- package/dist/core/AccountManager.d.ts.map +0 -1
- package/dist/core/AccountManager.js.map +0 -1
- package/dist/core/Publisher.d.ts.map +0 -1
- package/dist/core/Publisher.js.map +0 -1
- package/dist/core/__tests__/AccountManager.global-state.test.d.ts +0 -2
- package/dist/core/__tests__/AccountManager.global-state.test.d.ts.map +0 -1
- package/dist/core/__tests__/AccountManager.global-state.test.js +0 -69
- package/dist/core/__tests__/AccountManager.global-state.test.js.map +0 -1
- package/dist/core/__tests__/AccountManager.test.d.ts +0 -2
- package/dist/core/__tests__/AccountManager.test.d.ts.map +0 -1
- package/dist/core/__tests__/AccountManager.test.js +0 -239
- package/dist/core/__tests__/AccountManager.test.js.map +0 -1
- package/dist/core/__tests__/config.test.d.ts +0 -2
- package/dist/core/__tests__/config.test.d.ts.map +0 -1
- package/dist/core/__tests__/config.test.js +0 -311
- package/dist/core/__tests__/config.test.js.map +0 -1
- package/dist/core/__tests__/deployments.test.d.ts +0 -2
- package/dist/core/__tests__/deployments.test.d.ts.map +0 -1
- package/dist/core/__tests__/deployments.test.js +0 -201
- package/dist/core/__tests__/deployments.test.js.map +0 -1
- package/dist/core/__tests__/movementProfile.test.d.ts +0 -2
- package/dist/core/__tests__/movementProfile.test.d.ts.map +0 -1
- package/dist/core/__tests__/movementProfile.test.js +0 -112
- package/dist/core/__tests__/movementProfile.test.js.map +0 -1
- package/dist/core/__tests__/shell.test.d.ts +0 -2
- package/dist/core/__tests__/shell.test.d.ts.map +0 -1
- package/dist/core/__tests__/shell.test.js +0 -107
- package/dist/core/__tests__/shell.test.js.map +0 -1
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js.map +0 -1
- package/dist/core/contract.d.ts.map +0 -1
- package/dist/core/contract.js.map +0 -1
- package/dist/core/deployments.d.ts.map +0 -1
- package/dist/core/deployments.js.map +0 -1
- package/dist/core/movementProfile.d.ts.map +0 -1
- package/dist/core/movementProfile.js.map +0 -1
- package/dist/core/shell.d.ts.map +0 -1
- package/dist/core/shell.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/fork/__tests__/manager.test.d.ts +0 -2
- package/dist/fork/__tests__/manager.test.d.ts.map +0 -1
- package/dist/fork/__tests__/manager.test.js +0 -309
- package/dist/fork/__tests__/manager.test.js.map +0 -1
- package/dist/fork/__tests__/server.cors.test.d.ts +0 -2
- package/dist/fork/__tests__/server.cors.test.d.ts.map +0 -1
- package/dist/fork/__tests__/server.cors.test.js +0 -79
- package/dist/fork/__tests__/server.cors.test.js.map +0 -1
- package/dist/fork/__tests__/server.test.d.ts +0 -2
- package/dist/fork/__tests__/server.test.d.ts.map +0 -1
- package/dist/fork/__tests__/server.test.js +0 -54
- package/dist/fork/__tests__/server.test.js.map +0 -1
- package/dist/fork/__tests__/storage.test.d.ts +0 -2
- package/dist/fork/__tests__/storage.test.d.ts.map +0 -1
- package/dist/fork/__tests__/storage.test.js +0 -222
- package/dist/fork/__tests__/storage.test.js.map +0 -1
- package/dist/fork/__tests__/test.test.d.ts +0 -2
- package/dist/fork/__tests__/test.test.d.ts.map +0 -1
- package/dist/fork/__tests__/test.test.js +0 -81
- package/dist/fork/__tests__/test.test.js.map +0 -1
- package/dist/fork/api.d.ts.map +0 -1
- package/dist/fork/api.js.map +0 -1
- package/dist/fork/manager.d.ts.map +0 -1
- package/dist/fork/manager.js.map +0 -1
- package/dist/fork/server.d.ts.map +0 -1
- package/dist/fork/server.js.map +0 -1
- package/dist/fork/storage.d.ts.map +0 -1
- package/dist/fork/storage.js.map +0 -1
- package/dist/fork/test.d.ts.map +0 -1
- package/dist/fork/test.js.map +0 -1
- package/dist/harness/Harness.d.ts.map +0 -1
- package/dist/harness/Harness.js.map +0 -1
- package/dist/harness/codeObject.d.ts.map +0 -1
- package/dist/harness/codeObject.js.map +0 -1
- package/dist/harness/errors.d.ts.map +0 -1
- package/dist/harness/errors.js.map +0 -1
- package/dist/harness/index.d.ts.map +0 -1
- package/dist/harness/index.js.map +0 -1
- package/dist/harness/proxy.d.ts.map +0 -1
- package/dist/harness/proxy.js.map +0 -1
- package/dist/harness/script.d.ts.map +0 -1
- package/dist/harness/script.js.map +0 -1
- package/dist/harness/view.d.ts.map +0 -1
- package/dist/harness/view.js.map +0 -1
- package/dist/helpers/__tests__/semver-utils.test.d.ts +0 -2
- package/dist/helpers/__tests__/semver-utils.test.d.ts.map +0 -1
- package/dist/helpers/__tests__/semver-utils.test.js +0 -103
- package/dist/helpers/__tests__/semver-utils.test.js.map +0 -1
- package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts +0 -2
- package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts.map +0 -1
- package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js +0 -172
- package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js.map +0 -1
- package/dist/helpers/assertions.d.ts.map +0 -1
- package/dist/helpers/assertions.js.map +0 -1
- package/dist/helpers/banner.d.ts.map +0 -1
- package/dist/helpers/banner.js.map +0 -1
- package/dist/helpers/index.d.ts.map +0 -1
- package/dist/helpers/index.js.map +0 -1
- package/dist/helpers/move-tests.d.ts.map +0 -1
- package/dist/helpers/move-tests.js.map +0 -1
- package/dist/helpers/npm-registry.d.ts.map +0 -1
- package/dist/helpers/npm-registry.js.map +0 -1
- package/dist/helpers/semver-utils.d.ts.map +0 -1
- package/dist/helpers/semver-utils.js.map +0 -1
- package/dist/helpers/setup.d.ts.map +0 -1
- package/dist/helpers/setup.js.map +0 -1
- package/dist/helpers/setupLocalTesting.d.ts.map +0 -1
- package/dist/helpers/setupLocalTesting.js.map +0 -1
- package/dist/helpers/testFixtures.d.ts.map +0 -1
- package/dist/helpers/testFixtures.js.map +0 -1
- package/dist/helpers/version-check.d.ts.map +0 -1
- package/dist/helpers/version-check.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/node/LocalNodeManager.d.ts.map +0 -1
- package/dist/node/LocalNodeManager.js.map +0 -1
- package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts +0 -2
- package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts.map +0 -1
- package/dist/node/__tests__/LocalNodeManager.api-port.test.js +0 -55
- package/dist/node/__tests__/LocalNodeManager.api-port.test.js.map +0 -1
- package/dist/node/__tests__/LocalNodeManager.test.d.ts +0 -2
- package/dist/node/__tests__/LocalNodeManager.test.d.ts.map +0 -1
- package/dist/node/__tests__/LocalNodeManager.test.js +0 -449
- package/dist/node/__tests__/LocalNodeManager.test.js.map +0 -1
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js.map +0 -1
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js.map +0 -1
- package/dist/types/fork.d.ts.map +0 -1
- package/dist/types/fork.js.map +0 -1
- package/dist/types/harness.d.ts.map +0 -1
- package/dist/types/harness.js.map +0 -1
- package/dist/types/runtime.d.ts.map +0 -1
- package/dist/types/runtime.js.map +0 -1
- package/dist/ui/__tests__/colors.test.d.ts +0 -2
- package/dist/ui/__tests__/colors.test.d.ts.map +0 -1
- package/dist/ui/__tests__/colors.test.js +0 -127
- package/dist/ui/__tests__/colors.test.js.map +0 -1
- package/dist/ui/__tests__/logger.test.d.ts +0 -2
- package/dist/ui/__tests__/logger.test.d.ts.map +0 -1
- package/dist/ui/__tests__/logger.test.js +0 -75
- package/dist/ui/__tests__/logger.test.js.map +0 -1
- package/dist/ui/colors.d.ts.map +0 -1
- package/dist/ui/colors.js.map +0 -1
- package/dist/ui/formatters.d.ts.map +0 -1
- package/dist/ui/formatters.js.map +0 -1
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/logger.d.ts.map +0 -1
- package/dist/ui/logger.js.map +0 -1
- package/dist/ui/spinner.d.ts.map +0 -1
- package/dist/ui/spinner.js.map +0 -1
- package/dist/ui/symbols.d.ts.map +0 -1
- package/dist/ui/symbols.js.map +0 -1
- package/dist/ui/table.d.ts.map +0 -1
- package/dist/ui/table.js.map +0 -1
- package/dist/utils/__tests__/address.test.d.ts +0 -2
- package/dist/utils/__tests__/address.test.d.ts.map +0 -1
- package/dist/utils/__tests__/address.test.js +0 -70
- package/dist/utils/__tests__/address.test.js.map +0 -1
- package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts +0 -2
- package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts.map +0 -1
- package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js +0 -43
- package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js.map +0 -1
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts +0 -2
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts.map +0 -1
- package/dist/utils/__tests__/childProcessAdapter.test.js +0 -217
- package/dist/utils/__tests__/childProcessAdapter.test.js.map +0 -1
- package/dist/utils/__tests__/runCli.test.d.ts +0 -2
- package/dist/utils/__tests__/runCli.test.d.ts.map +0 -1
- package/dist/utils/__tests__/runCli.test.js +0 -187
- package/dist/utils/__tests__/runCli.test.js.map +0 -1
- package/dist/utils/address.d.ts.map +0 -1
- package/dist/utils/address.js.map +0 -1
- package/dist/utils/childProcessAdapter.d.ts.map +0 -1
- package/dist/utils/childProcessAdapter.js.map +0 -1
- package/dist/utils/parseCliOutput.d.ts.map +0 -1
- package/dist/utils/parseCliOutput.js.map +0 -1
- package/dist/utils/redact.d.ts.map +0 -1
- package/dist/utils/redact.js.map +0 -1
- package/dist/utils/runCli.d.ts.map +0 -1
- package/dist/utils/runCli.js.map +0 -1
- package/src/__tests__/deployContract.test.ts +0 -438
- package/src/__tests__/errors.test.ts +0 -84
- package/src/__tests__/exports.test.ts +0 -32
- package/src/__tests__/fixtures/sigint-deploy-harness.ts +0 -96
- package/src/__tests__/fork/api.test.ts +0 -148
- package/src/__tests__/fork/api.timeout.test.ts +0 -150
- package/src/__tests__/harness/Harness.createLive.test.ts +0 -57
- package/src/__tests__/harness/Harness.proxy.test.ts +0 -111
- package/src/__tests__/harness/_fixture.ts +0 -131
- package/src/__tests__/harness/codeObject.deploy.test.ts +0 -319
- package/src/__tests__/harness/codeObject.upgrade.test.ts +0 -156
- package/src/__tests__/harness/script.test.ts +0 -245
- package/src/__tests__/harness/view.test.ts +0 -104
- package/src/__tests__/runtime.test.ts +0 -182
- package/src/cli.ts +0 -164
- package/src/commands/__tests__/compile.test.ts +0 -407
- package/src/commands/__tests__/compile.toml-mutation.test.ts +0 -77
- package/src/commands/__tests__/init.test.ts +0 -210
- package/src/commands/__tests__/run.test.ts +0 -192
- package/src/commands/__tests__/test-move.test.ts +0 -81
- package/src/commands/__tests__/test.test.ts +0 -204
- package/src/commands/__tests__/update.test.ts +0 -223
- package/src/commands/compile.ts +0 -339
- package/src/commands/fork/__tests__/create.test.ts +0 -132
- package/src/commands/fork/__tests__/fund.test.ts +0 -104
- package/src/commands/fork/__tests__/list.test.ts +0 -139
- package/src/commands/fork/__tests__/serve.test.ts +0 -121
- package/src/commands/fork/__tests__/view-resource.test.ts +0 -101
- package/src/commands/fork/create.ts +0 -110
- package/src/commands/fork/fund.ts +0 -64
- package/src/commands/fork/list.ts +0 -98
- package/src/commands/fork/serve.ts +0 -80
- package/src/commands/fork/view-resource.ts +0 -51
- package/src/commands/init.ts +0 -264
- package/src/commands/run.ts +0 -125
- package/src/commands/test-move.ts +0 -27
- package/src/commands/test.ts +0 -255
- package/src/commands/update.ts +0 -201
- package/src/core/AccountManager.ts +0 -457
- package/src/core/Publisher.ts +0 -310
- package/src/core/__tests__/AccountManager.global-state.test.ts +0 -83
- package/src/core/__tests__/AccountManager.test.ts +0 -290
- package/src/core/__tests__/config.test.ts +0 -377
- package/src/core/__tests__/deployments.test.ts +0 -247
- package/src/core/__tests__/movementProfile.test.ts +0 -131
- package/src/core/__tests__/shell.test.ts +0 -138
- package/src/core/config.ts +0 -286
- package/src/core/contract.ts +0 -103
- package/src/core/deployments.ts +0 -155
- package/src/core/movementProfile.ts +0 -127
- package/src/core/shell.ts +0 -86
- package/src/errors.ts +0 -81
- package/src/fork/__tests__/manager.test.ts +0 -385
- package/src/fork/__tests__/server.cors.test.ts +0 -101
- package/src/fork/__tests__/server.test.ts +0 -65
- package/src/fork/__tests__/storage.test.ts +0 -281
- package/src/fork/__tests__/test.test.ts +0 -97
- package/src/fork/api.ts +0 -190
- package/src/fork/manager.ts +0 -343
- package/src/fork/server.ts +0 -380
- package/src/fork/storage.ts +0 -253
- package/src/fork/test.ts +0 -221
- package/src/harness/Harness.ts +0 -231
- package/src/harness/codeObject.ts +0 -381
- package/src/harness/errors.ts +0 -22
- package/src/harness/index.ts +0 -3
- package/src/harness/proxy.ts +0 -40
- package/src/harness/script.ts +0 -200
- package/src/harness/view.ts +0 -34
- package/src/helpers/__tests__/semver-utils.test.ts +0 -121
- package/src/helpers/__tests__/setupLocalTesting.fork-network.test.ts +0 -212
- package/src/helpers/assertions.ts +0 -29
- package/src/helpers/banner.ts +0 -63
- package/src/helpers/index.ts +0 -37
- package/src/helpers/move-tests.ts +0 -72
- package/src/helpers/npm-registry.ts +0 -72
- package/src/helpers/semver-utils.ts +0 -54
- package/src/helpers/setup.ts +0 -54
- package/src/helpers/setupLocalTesting.ts +0 -387
- package/src/helpers/testFixtures.ts +0 -210
- package/src/helpers/version-check.ts +0 -114
- package/src/index.ts +0 -30
- package/src/node/LocalNodeManager.ts +0 -383
- package/src/node/__tests__/LocalNodeManager.api-port.test.ts +0 -62
- package/src/node/__tests__/LocalNodeManager.test.ts +0 -579
- package/src/runtime.ts +0 -157
- package/src/templates/.env.example +0 -9
- package/src/templates/.mocharc.json +0 -8
- package/src/templates/.vscode/settings.json +0 -11
- package/src/templates/README.md +0 -146
- package/src/templates/gitignore +0 -22
- package/src/templates/move/Move.toml +0 -19
- package/src/templates/move/sources/Counter.move +0 -96
- package/src/templates/movehat.config.ts +0 -57
- package/src/templates/package.json +0 -27
- package/src/templates/scripts/deploy-counter.ts +0 -66
- package/src/templates/tests/Counter.test.ts +0 -113
- package/src/templates/tsconfig.json +0 -15
- package/src/templates/types/movehat.d.ts +0 -101
- package/src/types/config.ts +0 -83
- package/src/types/fork.ts +0 -47
- package/src/types/harness.ts +0 -182
- package/src/types/runtime.ts +0 -57
- package/src/ui/__tests__/colors.test.ts +0 -156
- package/src/ui/__tests__/logger.test.ts +0 -89
- package/src/ui/colors.ts +0 -144
- package/src/ui/formatters.ts +0 -246
- package/src/ui/index.ts +0 -62
- package/src/ui/logger.ts +0 -310
- package/src/ui/spinner.ts +0 -218
- package/src/ui/symbols.ts +0 -80
- package/src/ui/table.ts +0 -191
- package/src/utils/__tests__/address.test.ts +0 -93
- package/src/utils/__tests__/childProcessAdapter.maxBuffer.test.ts +0 -51
- package/src/utils/__tests__/childProcessAdapter.test.ts +0 -266
- package/src/utils/__tests__/runCli.test.ts +0 -240
- package/src/utils/address.ts +0 -52
- package/src/utils/childProcessAdapter.ts +0 -244
- package/src/utils/parseCliOutput.ts +0 -27
- package/src/utils/redact.ts +0 -24
- package/src/utils/runCli.ts +0 -64
package/dist/fork/manager.js
CHANGED
|
@@ -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
|
package/dist/fork/server.d.ts
CHANGED
|
@@ -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
|
package/dist/fork/server.js
CHANGED
|
@@ -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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
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
|
package/dist/fork/storage.d.ts
CHANGED
package/dist/fork/storage.js
CHANGED
|
@@ -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
|
-
|
|
44
|
-
mkdirSync(this.forkPath, { recursive: true });
|
|
45
|
-
}
|
|
70
|
+
ensurePrivateDirectory(this.forkPath);
|
|
46
71
|
// Create subdirectories
|
|
47
72
|
const resourcesDir = join(this.forkPath, 'resources');
|
|
48
|
-
|
|
49
|
-
mkdirSync(resourcesDir, { recursive: true });
|
|
50
|
-
}
|
|
73
|
+
ensurePrivateDirectory(resourcesDir);
|
|
51
74
|
const cacheDir = join(this.forkPath, 'cache');
|
|
52
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
131
|
+
accounts = readJsonFile(accountsPath, 'fork accounts');
|
|
109
132
|
}
|
|
110
133
|
accounts[address] = state;
|
|
111
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
142
|
-
mkdirSync(resourcesDir, { recursive: true });
|
|
143
|
-
}
|
|
164
|
+
ensurePrivateDirectory(resourcesDir);
|
|
144
165
|
let resources = {};
|
|
145
166
|
if (existsSync(resourceFilePath)) {
|
|
146
|
-
resources =
|
|
167
|
+
resources = readJsonFile(resourceFilePath, 'fork resources');
|
|
147
168
|
}
|
|
148
169
|
resources[resourceType] = data;
|
|
149
|
-
|
|
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
|
-
|
|
159
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
package/dist/fork/test.d.ts
CHANGED
package/dist/fork/test.js
CHANGED
package/dist/harness/Harness.js
CHANGED
|
@@ -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
|
package/dist/harness/errors.d.ts
CHANGED
package/dist/harness/errors.js
CHANGED
package/dist/harness/index.d.ts
CHANGED
package/dist/harness/index.js
CHANGED
package/dist/harness/proxy.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/dist/harness/proxy.js
CHANGED
|
@@ -33,4 +33,26 @@ export function createHarnessProxy(target, isPoisoned) {
|
|
|
33
33
|
},
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
|
|
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
|
+
}
|
package/dist/harness/script.d.ts
CHANGED
|
@@ -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
|
package/dist/harness/script.js
CHANGED
package/dist/harness/view.d.ts
CHANGED
|
@@ -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
|