movehat 0.2.3 → 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 +15 -2
- package/dist/fork/manager.js +20 -2
- 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 +2 -3
- 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 +1 -2
- package/dist/node/LocalNodeManager.js +6 -4
- 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/src/helpers/setup.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Account,
|
|
3
|
-
Aptos,
|
|
4
|
-
AptosConfig,
|
|
5
|
-
Ed25519PrivateKey,
|
|
6
|
-
Network,
|
|
7
|
-
} from "@aptos-labs/ts-sdk";
|
|
8
|
-
import { loadUserConfig, resolveNetworkConfig } from "../core/config.js";
|
|
9
|
-
import { MovehatConfig } from "../types/config.js";
|
|
10
|
-
import { AccountManager } from "../core/AccountManager.js";
|
|
11
|
-
import { logger } from "../ui/index.js";
|
|
12
|
-
|
|
13
|
-
export interface TestEnvironment {
|
|
14
|
-
aptos: Aptos;
|
|
15
|
-
account: Account;
|
|
16
|
-
config: MovehatConfig;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export async function setupTestEnvironment(networkName?: string): Promise<TestEnvironment> {
|
|
20
|
-
// Load and resolve config for selected network
|
|
21
|
-
const userConfig = await loadUserConfig();
|
|
22
|
-
const network = networkName || process.env.MH_CLI_NETWORK;
|
|
23
|
-
const config = await resolveNetworkConfig(userConfig, network);
|
|
24
|
-
|
|
25
|
-
// Movement Network uses custom chain IDs, so we need to use Network.CUSTOM
|
|
26
|
-
// and let the SDK fetch the actual chainId from the node
|
|
27
|
-
const aptosConfig = new AptosConfig({
|
|
28
|
-
network: Network.CUSTOM,
|
|
29
|
-
fullnode: config.rpc,
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
const aptos = new Aptos(aptosConfig);
|
|
33
|
-
|
|
34
|
-
// Load account using AccountManager
|
|
35
|
-
const account = AccountManager.loadAccountFromPrivateKey(config.privateKey);
|
|
36
|
-
|
|
37
|
-
logger.success("Test environment ready");
|
|
38
|
-
logger.plain(` Account: ${account.accountAddress.toString()}`);
|
|
39
|
-
logger.plain(` Network: ${config.network}`);
|
|
40
|
-
logger.plain(` RPC: ${config.rpc}`);
|
|
41
|
-
logger.newline();
|
|
42
|
-
|
|
43
|
-
return {
|
|
44
|
-
aptos,
|
|
45
|
-
account,
|
|
46
|
-
config,
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function createTestAccount(): Account {
|
|
51
|
-
return AccountManager.createAccount();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
import { join } from "path";
|
|
2
|
-
import { existsSync } from "fs";
|
|
3
|
-
import { initRuntime } from "../runtime.js";
|
|
4
|
-
import type { MovehatRuntime } from "../types/runtime.js";
|
|
5
|
-
import { ForkManager } from "../fork/manager.js";
|
|
6
|
-
import { ForkServer } from "../fork/server.js";
|
|
7
|
-
import { LocalNodeManager } from "../node/LocalNodeManager.js";
|
|
8
|
-
import { AccountManager } from "../core/AccountManager.js";
|
|
9
|
-
import { logger } from "../ui/index.js";
|
|
10
|
-
import type { LocalTestOptions } from "../types/config.js";
|
|
11
|
-
|
|
12
|
-
const BUILTIN_FORK_RPCS: Record<string, string> = {
|
|
13
|
-
testnet: "https://testnet.movementnetwork.xyz/v1",
|
|
14
|
-
mainnet: "https://mainnet.movementnetwork.xyz/v1",
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
function resolveForkRpcUrl(
|
|
18
|
-
network: string,
|
|
19
|
-
override: string | undefined
|
|
20
|
-
): string {
|
|
21
|
-
if (override !== undefined) return override;
|
|
22
|
-
const builtin = BUILTIN_FORK_RPCS[network];
|
|
23
|
-
if (builtin !== undefined) return builtin;
|
|
24
|
-
throw new Error(
|
|
25
|
-
`Cannot fork unknown network "${network}" without a forkRpcUrl. ` +
|
|
26
|
-
`Either pass forkRpcUrl in LocalTestOptions or use one of: ` +
|
|
27
|
-
`${Object.keys(BUILTIN_FORK_RPCS).join(", ")}.`
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Context returned by {@link setupLocalTesting}.
|
|
33
|
-
*
|
|
34
|
-
* Replaces the module-scoped singletons that previously tracked the
|
|
35
|
-
* "current" local node / fork server / fork manager. Each invocation now
|
|
36
|
-
* owns its own handles, so two parallel `setupLocalTesting` calls in the
|
|
37
|
-
* same process do not trample each other.
|
|
38
|
-
*
|
|
39
|
-
* @public The `runtime` and `teardown` fields are the supported surface.
|
|
40
|
-
* `localNode`, `forkServer`, and `forkManager` are exposed for
|
|
41
|
-
* escape hatches (e.g. mid-test `forkManager.resetState()`) but
|
|
42
|
-
* their concrete shapes are `@internal`.
|
|
43
|
-
*/
|
|
44
|
-
export interface LocalTestingContext {
|
|
45
|
-
runtime: MovehatRuntime;
|
|
46
|
-
/** @internal */
|
|
47
|
-
localNode?: LocalNodeManager;
|
|
48
|
-
/** @internal */
|
|
49
|
-
forkServer?: ForkServer;
|
|
50
|
-
/** @internal */
|
|
51
|
-
forkManager?: ForkManager;
|
|
52
|
-
/** Stop the local node and/or fork server owned by this context. */
|
|
53
|
-
teardown: () => Promise<void>;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Setup a local testing environment with either a local node or fork server
|
|
58
|
-
*
|
|
59
|
-
* This function provides a complete local testing setup similar to Hardhat:
|
|
60
|
-
*
|
|
61
|
-
* **Local Node Mode** (default, recommended):
|
|
62
|
-
* 1. Starts a full Movement node locally
|
|
63
|
-
* 2. Generates and funds test accounts from local faucet
|
|
64
|
-
* 3. Auto-deploys modules (works because node can process transactions)
|
|
65
|
-
* 4. Returns runtime ready to use
|
|
66
|
-
*
|
|
67
|
-
* **Fork Mode** (faster, read-only):
|
|
68
|
-
* 1. Creates/loads a fork of testnet
|
|
69
|
-
* 2. Starts a fork server
|
|
70
|
-
* 3. Generates and funds accounts (in fork state only)
|
|
71
|
-
* 4. Cannot auto-deploy (fork is read-only)
|
|
72
|
-
* 5. Returns runtime for reading data
|
|
73
|
-
*
|
|
74
|
-
* @param options Configuration options for local testing
|
|
75
|
-
* @returns LocalTestingContext with runtime and a teardown closure
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* ```typescript
|
|
79
|
-
* // Local node mode (default) - Full blockchain, can deploy
|
|
80
|
-
* const ctx = await setupLocalTesting({
|
|
81
|
-
* mode: 'local-node',
|
|
82
|
-
* accountLabels: ['alice', 'bob'],
|
|
83
|
-
* autoDeploy: ['counter'], // works
|
|
84
|
-
* });
|
|
85
|
-
* // ...use ctx.runtime...
|
|
86
|
-
* await ctx.teardown();
|
|
87
|
-
* ```
|
|
88
|
-
*/
|
|
89
|
-
export async function setupLocalTesting(
|
|
90
|
-
options: LocalTestOptions = {}
|
|
91
|
-
): Promise<LocalTestingContext> {
|
|
92
|
-
const mode = options.mode || 'local-node';
|
|
93
|
-
const autoFund = options.autoFund !== false;
|
|
94
|
-
const defaultBalance = options.defaultBalance || 100_000_000;
|
|
95
|
-
const accountLabels = options.accountLabels || ["deployer", "alice", "bob"];
|
|
96
|
-
|
|
97
|
-
logger.newline();
|
|
98
|
-
logger.phase("Setting up local testing environment");
|
|
99
|
-
logger.kv("Mode", mode, 2);
|
|
100
|
-
logger.kv("Accounts", accountLabels.join(", "), 2);
|
|
101
|
-
logger.newline();
|
|
102
|
-
|
|
103
|
-
if (mode === 'local-node') {
|
|
104
|
-
const { runtime, localNode } = await setupWithLocalNode(
|
|
105
|
-
options, accountLabels, autoFund, defaultBalance
|
|
106
|
-
);
|
|
107
|
-
return {
|
|
108
|
-
runtime,
|
|
109
|
-
localNode,
|
|
110
|
-
teardown: async () => {
|
|
111
|
-
logger.newline();
|
|
112
|
-
logger.step("Stopping local testing environment...");
|
|
113
|
-
await localNode.stop();
|
|
114
|
-
logger.success("Environment stopped");
|
|
115
|
-
logger.newline();
|
|
116
|
-
},
|
|
117
|
-
};
|
|
118
|
-
} else {
|
|
119
|
-
const { runtime, forkServer, forkManager } = await setupWithFork(
|
|
120
|
-
options, accountLabels, autoFund, defaultBalance
|
|
121
|
-
);
|
|
122
|
-
return {
|
|
123
|
-
runtime,
|
|
124
|
-
forkServer,
|
|
125
|
-
forkManager,
|
|
126
|
-
teardown: async () => {
|
|
127
|
-
logger.newline();
|
|
128
|
-
logger.step("Stopping local testing environment...");
|
|
129
|
-
await forkServer.stop();
|
|
130
|
-
logger.success("Environment stopped");
|
|
131
|
-
logger.newline();
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Setup using local Movement node (full blockchain)
|
|
139
|
-
*/
|
|
140
|
-
async function setupWithLocalNode(
|
|
141
|
-
options: LocalTestOptions,
|
|
142
|
-
accountLabels: readonly string[],
|
|
143
|
-
autoFund: boolean,
|
|
144
|
-
defaultBalance: number
|
|
145
|
-
): Promise<{ runtime: MovehatRuntime; localNode: LocalNodeManager }> {
|
|
146
|
-
const nodeTestDir = options.nodeTestDir || join(process.cwd(), ".movehat", "local-node");
|
|
147
|
-
const nodeForceRestart = options.nodeForceRestart !== false;
|
|
148
|
-
const nodeFaucetPort = options.nodeFaucetPort || 8081;
|
|
149
|
-
const nodeApiPort = options.nodeApiPort || 8080;
|
|
150
|
-
const nodeReadyPort = options.nodeReadyPort || 8070;
|
|
151
|
-
const nodeSilent = options.nodeSilent ?? false;
|
|
152
|
-
|
|
153
|
-
const localNode = new LocalNodeManager({
|
|
154
|
-
testDir: nodeTestDir,
|
|
155
|
-
forceRestart: nodeForceRestart,
|
|
156
|
-
faucetPort: nodeFaucetPort,
|
|
157
|
-
apiPort: nodeApiPort,
|
|
158
|
-
readyPort: nodeReadyPort,
|
|
159
|
-
silent: nodeSilent,
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
const nodeInfo = await localNode.start();
|
|
163
|
-
|
|
164
|
-
// Once the node is up, every later step (account creation, funding,
|
|
165
|
-
// runtime init, autoDeploy) is fallible. If any of them throws we
|
|
166
|
-
// must stop the node we just started — otherwise the child process
|
|
167
|
-
// leaks and port 8080 stays bound until the OS reaps it (manifests as
|
|
168
|
-
// "Movement command failed" on the next test:example run).
|
|
169
|
-
try {
|
|
170
|
-
logger.step(`Generating ${accountLabels.length} test accounts...`);
|
|
171
|
-
const accounts = AccountManager.createBatch(accountLabels);
|
|
172
|
-
|
|
173
|
-
for (const [label, account] of Object.entries(accounts)) {
|
|
174
|
-
logger.plain(` ${label}: ${account.accountAddress.toString()}`);
|
|
175
|
-
}
|
|
176
|
-
logger.newline();
|
|
177
|
-
|
|
178
|
-
if (autoFund) {
|
|
179
|
-
const accountsList = Object.values(accounts);
|
|
180
|
-
await localNode.fundAccounts(accountsList, defaultBalance);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
logger.step("Initializing runtime for local network...");
|
|
184
|
-
|
|
185
|
-
const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
|
|
186
|
-
|
|
187
|
-
if (!deployerPrivateKey) {
|
|
188
|
-
throw new Error("Failed to get deployer private key");
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
const runtime = await initRuntime({
|
|
192
|
-
network: "local",
|
|
193
|
-
configOverride: {
|
|
194
|
-
networks: {
|
|
195
|
-
local: {
|
|
196
|
-
url: `${nodeInfo.rpcUrl}/v1`,
|
|
197
|
-
chainId: "local",
|
|
198
|
-
},
|
|
199
|
-
},
|
|
200
|
-
accounts: [deployerPrivateKey],
|
|
201
|
-
},
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
logger.success("Runtime initialized");
|
|
205
|
-
logger.newline();
|
|
206
|
-
|
|
207
|
-
if (options.autoDeploy && options.autoDeploy.length > 0) {
|
|
208
|
-
logger.step(`Auto-deploying ${options.autoDeploy.length} module(s)...`);
|
|
209
|
-
|
|
210
|
-
const previousRedeploy = process.env.MH_CLI_REDEPLOY;
|
|
211
|
-
process.env.MH_CLI_REDEPLOY = 'true';
|
|
212
|
-
|
|
213
|
-
try {
|
|
214
|
-
for (const moduleName of options.autoDeploy) {
|
|
215
|
-
try {
|
|
216
|
-
logger.plain(` Deploying ${moduleName}...`);
|
|
217
|
-
await runtime.deployContract(moduleName);
|
|
218
|
-
logger.success(`${moduleName} deployed`, 2);
|
|
219
|
-
} catch (error) {
|
|
220
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
221
|
-
logger.error(`Failed to deploy ${moduleName}: ${msg}`, 2);
|
|
222
|
-
throw error;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
} finally {
|
|
226
|
-
if (previousRedeploy === undefined) {
|
|
227
|
-
delete process.env.MH_CLI_REDEPLOY;
|
|
228
|
-
} else {
|
|
229
|
-
process.env.MH_CLI_REDEPLOY = previousRedeploy;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
logger.newline();
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
logger.success("Local testing environment ready!");
|
|
237
|
-
logger.newline();
|
|
238
|
-
logger.plain(` Mode: local-node`);
|
|
239
|
-
logger.plain(` RPC: ${nodeInfo.rpcUrl}/v1`);
|
|
240
|
-
logger.plain(` Faucet: ${nodeInfo.faucetUrl}`);
|
|
241
|
-
logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
242
|
-
logger.plain(` Balance per account: ${defaultBalance / 100_000_000} APT`);
|
|
243
|
-
logger.newline();
|
|
244
|
-
|
|
245
|
-
return { runtime, localNode };
|
|
246
|
-
} catch (error) {
|
|
247
|
-
// Best-effort cleanup. Swallow the stop() error so the original
|
|
248
|
-
// setup failure surfaces unchanged.
|
|
249
|
-
await localNode.stop().catch(() => {});
|
|
250
|
-
throw error;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Setup using fork server (read-only)
|
|
256
|
-
*/
|
|
257
|
-
async function setupWithFork(
|
|
258
|
-
options: LocalTestOptions,
|
|
259
|
-
accountLabels: readonly string[],
|
|
260
|
-
autoFund: boolean,
|
|
261
|
-
defaultBalance: number
|
|
262
|
-
): Promise<{ runtime: MovehatRuntime; forkServer: ForkServer; forkManager: ForkManager }> {
|
|
263
|
-
const forkNetwork = options.forkNetwork || "testnet";
|
|
264
|
-
const forkName = options.forkName || "test-local";
|
|
265
|
-
const forkPort = options.forkPort || 8080;
|
|
266
|
-
const forkResetState = options.forkResetState !== false;
|
|
267
|
-
|
|
268
|
-
logger.plain(` Fork network: ${forkNetwork}`);
|
|
269
|
-
logger.plain(` Fork name: ${forkName}`);
|
|
270
|
-
logger.plain(` Server port: ${forkPort}`);
|
|
271
|
-
logger.newline();
|
|
272
|
-
|
|
273
|
-
if (options.autoDeploy && options.autoDeploy.length > 0) {
|
|
274
|
-
logger.warning("Auto-deploy doesn't work in fork mode (read-only).");
|
|
275
|
-
logger.plain(" Switch to 'local-node' mode for deployment support.");
|
|
276
|
-
logger.newline();
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
const forkPath = join(process.cwd(), ".movehat", "forks", forkName);
|
|
280
|
-
const forkManager = new ForkManager(forkPath);
|
|
281
|
-
|
|
282
|
-
const forkExists = existsSync(join(forkPath, "metadata.json"));
|
|
283
|
-
|
|
284
|
-
if (!forkExists) {
|
|
285
|
-
logger.step(`Creating fork from ${forkNetwork}...`);
|
|
286
|
-
const rpcUrl = resolveForkRpcUrl(forkNetwork, options.forkRpcUrl);
|
|
287
|
-
await forkManager.initialize(rpcUrl, forkNetwork, options.forkApiKey);
|
|
288
|
-
logger.success(`Fork created at ${forkPath}`);
|
|
289
|
-
logger.newline();
|
|
290
|
-
} else {
|
|
291
|
-
logger.success(`Loading existing fork from ${forkPath}`);
|
|
292
|
-
// setApiKey BEFORE load() so the reconstructed MovementApiClient
|
|
293
|
-
// picks up the header. load() rebuilds the client using current
|
|
294
|
-
// apiKey state.
|
|
295
|
-
if (options.forkApiKey !== undefined) {
|
|
296
|
-
forkManager.setApiKey(options.forkApiKey);
|
|
297
|
-
}
|
|
298
|
-
forkManager.load();
|
|
299
|
-
|
|
300
|
-
// Guard against the audit-f1 follow-up case: the default forkName
|
|
301
|
-
// ("test-local") doesn't encode the network, so a fork created for
|
|
302
|
-
// testnet would silently serve mainnet requests. Refuse to load
|
|
303
|
-
// when the saved metadata's network doesn't match what the caller
|
|
304
|
-
// asked for — the user must either pass a network-specific
|
|
305
|
-
// `forkName` or delete the stale directory.
|
|
306
|
-
const savedNetwork = forkManager.getMetadata().network;
|
|
307
|
-
if (savedNetwork !== forkNetwork) {
|
|
308
|
-
throw new Error(
|
|
309
|
-
`Fork at ${forkPath} was created for network "${savedNetwork}" but ` +
|
|
310
|
-
`you requested "${forkNetwork}". Use a different forkName ` +
|
|
311
|
-
`(e.g. "${forkNetwork}-local") or delete ${forkPath} to recreate.`
|
|
312
|
-
);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
if (forkResetState) {
|
|
316
|
-
logger.step("Resetting fork state...");
|
|
317
|
-
await forkManager.resetState();
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
logger.newline();
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
logger.step(`Starting fork server on port ${forkPort}...`);
|
|
324
|
-
const forkServer = new ForkServer(forkPath, forkPort);
|
|
325
|
-
|
|
326
|
-
await forkServer.start();
|
|
327
|
-
logger.success(`Fork server running at http://localhost:${forkPort}`);
|
|
328
|
-
logger.newline();
|
|
329
|
-
|
|
330
|
-
// Same cleanup-on-failure pattern as setupWithLocalNode: once the
|
|
331
|
-
// fork server is listening, any later throw must stop the server or
|
|
332
|
-
// we leak the listener.
|
|
333
|
-
try {
|
|
334
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
335
|
-
|
|
336
|
-
logger.step(`Generating ${accountLabels.length} test accounts...`);
|
|
337
|
-
const accounts = AccountManager.createBatch(accountLabels);
|
|
338
|
-
|
|
339
|
-
for (const [label, account] of Object.entries(accounts)) {
|
|
340
|
-
logger.plain(` ${label}: ${account.accountAddress.toString()}`);
|
|
341
|
-
}
|
|
342
|
-
logger.newline();
|
|
343
|
-
|
|
344
|
-
if (autoFund) {
|
|
345
|
-
const addresses = Object.values(accounts).map((acc) =>
|
|
346
|
-
acc.accountAddress.toString()
|
|
347
|
-
);
|
|
348
|
-
await forkManager.fundMultipleAccounts(addresses, defaultBalance);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
logger.step("Initializing runtime for local network...");
|
|
352
|
-
|
|
353
|
-
const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
|
|
354
|
-
|
|
355
|
-
if (!deployerPrivateKey) {
|
|
356
|
-
throw new Error("Failed to get deployer private key");
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
const runtime = await initRuntime({
|
|
360
|
-
network: "local",
|
|
361
|
-
configOverride: {
|
|
362
|
-
networks: {
|
|
363
|
-
local: {
|
|
364
|
-
url: `http://localhost:${forkPort}/v1`,
|
|
365
|
-
chainId: "local",
|
|
366
|
-
},
|
|
367
|
-
},
|
|
368
|
-
accounts: [deployerPrivateKey],
|
|
369
|
-
},
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
logger.success("Runtime initialized");
|
|
373
|
-
logger.newline();
|
|
374
|
-
logger.success("Local testing environment ready!");
|
|
375
|
-
logger.newline();
|
|
376
|
-
logger.plain(` Mode: fork (read-only)`);
|
|
377
|
-
logger.plain(` RPC: http://localhost:${forkPort}/v1`);
|
|
378
|
-
logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
379
|
-
logger.plain(` Balance per account: ${defaultBalance / 100_000_000} APT`);
|
|
380
|
-
logger.newline();
|
|
381
|
-
|
|
382
|
-
return { runtime, forkServer, forkManager };
|
|
383
|
-
} catch (error) {
|
|
384
|
-
await forkServer.stop().catch(() => {});
|
|
385
|
-
throw error;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import type { Account } from "@aptos-labs/ts-sdk";
|
|
2
|
-
import type { MovehatRuntime } from "../types/runtime.js";
|
|
3
|
-
import type { MoveContract } from "../core/contract.js";
|
|
4
|
-
import { AccountManager } from "../core/AccountManager.js";
|
|
5
|
-
import { setupLocalTesting } from "./setupLocalTesting.js";
|
|
6
|
-
import { logger } from "../ui/index.js";
|
|
7
|
-
import type { LocalTestOptions } from "../types/config.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Test fixture with pre-configured accounts and contracts
|
|
11
|
-
*
|
|
12
|
-
* @template TModules - Union type of module names for type-safe contract access
|
|
13
|
-
*/
|
|
14
|
-
export interface TestFixture<TModules extends string = string> {
|
|
15
|
-
/** Movehat runtime instance */
|
|
16
|
-
mh: MovehatRuntime;
|
|
17
|
-
|
|
18
|
-
/** Named accounts (deployer, alice, bob, etc.) */
|
|
19
|
-
accounts: {
|
|
20
|
-
deployer: Account;
|
|
21
|
-
alice: Account;
|
|
22
|
-
bob: Account;
|
|
23
|
-
[key: string]: Account;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
/** Deployed contracts by module name - type-safe based on modules parameter */
|
|
27
|
-
contracts: Record<TModules, MoveContract>;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Stop the local node / fork server this fixture started.
|
|
31
|
-
*
|
|
32
|
-
* Does **not** clear the shared `AccountManager` pool — clearing it
|
|
33
|
-
* would break parallel `setupTestFixture` invocations that share the
|
|
34
|
-
* pool. The pool grows for the lifetime of the process; the process
|
|
35
|
-
* exit reclaims it.
|
|
36
|
-
*/
|
|
37
|
-
teardown: () => Promise<void>;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Setup a complete test fixture with local fork, accounts, and deployed contracts
|
|
42
|
-
*
|
|
43
|
-
* This is the recommended way to setup tests in movehat. It provides:
|
|
44
|
-
* - Local fork server (no testnet required)
|
|
45
|
-
* - Pre-funded labeled accounts
|
|
46
|
-
* - Auto-deployment of specified modules
|
|
47
|
-
* - Contract instances ready to use
|
|
48
|
-
*
|
|
49
|
-
* @param modules Array of module names to auto-deploy
|
|
50
|
-
* @param accountLabels Optional array of account labels (defaults to ['alice', 'bob'])
|
|
51
|
-
* @param options Optional LocalTestOptions for advanced configuration
|
|
52
|
-
* @returns TestFixture with runtime, accounts, contracts, and a teardown closure
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* import { setupTestFixture, type TestFixture } from "movehat/helpers";
|
|
57
|
-
*
|
|
58
|
-
* describe("Counter Contract", () => {
|
|
59
|
-
* let fixture: TestFixture<"counter">;
|
|
60
|
-
*
|
|
61
|
-
* before(async function () {
|
|
62
|
-
* this.timeout(60000);
|
|
63
|
-
* fixture = await setupTestFixture(['counter'] as const, ['alice', 'bob']);
|
|
64
|
-
* });
|
|
65
|
-
*
|
|
66
|
-
* after(async () => {
|
|
67
|
-
* await fixture.teardown();
|
|
68
|
-
* });
|
|
69
|
-
*
|
|
70
|
-
* it("alice can increment", async () => {
|
|
71
|
-
* const tx = await fixture.contracts.counter.call(
|
|
72
|
-
* fixture.accounts.alice, "increment", []
|
|
73
|
-
* );
|
|
74
|
-
* expect(tx.success).to.be.true;
|
|
75
|
-
* });
|
|
76
|
-
* });
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
export async function setupTestFixture<TModules extends readonly string[]>(
|
|
80
|
-
modules: TModules,
|
|
81
|
-
accountLabels: string[] = ["alice", "bob"],
|
|
82
|
-
options: Partial<LocalTestOptions> = {}
|
|
83
|
-
): Promise<TestFixture<TModules[number]>> {
|
|
84
|
-
logger.newline();
|
|
85
|
-
logger.step("Setting up test fixture...");
|
|
86
|
-
logger.plain(` Modules to deploy: ${modules.join(", ")}`);
|
|
87
|
-
logger.plain(` Account labels: deployer, ${accountLabels.join(", ")}`);
|
|
88
|
-
logger.newline();
|
|
89
|
-
|
|
90
|
-
const allLabels = ["deployer", ...accountLabels.filter((l) => l !== "deployer")];
|
|
91
|
-
|
|
92
|
-
const setupOptions: LocalTestOptions = {
|
|
93
|
-
...options,
|
|
94
|
-
accountLabels: allLabels,
|
|
95
|
-
autoDeploy: modules,
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
const ctx = await setupLocalTesting(setupOptions);
|
|
99
|
-
|
|
100
|
-
// Assembly is fallible — a missing deployment address (autoDeploy
|
|
101
|
-
// silently failed) or any unexpected throw would leak the started
|
|
102
|
-
// infrastructure. Tear down ctx on failure; the outer caller sees
|
|
103
|
-
// the original assembly error unchanged.
|
|
104
|
-
try {
|
|
105
|
-
const mh = ctx.runtime;
|
|
106
|
-
|
|
107
|
-
const labeledAccounts = AccountManager.getLabeledAccounts();
|
|
108
|
-
|
|
109
|
-
// any: TestFixture.accounts has a structural shape with required
|
|
110
|
-
// `deployer/alice/bob` plus a `[key: string]: Account` index. The
|
|
111
|
-
// builder fills the index dynamically; typing this as the exact
|
|
112
|
-
// intersection would require a generic over `accountLabels` and
|
|
113
|
-
// produce noisy errors for the dynamic key assignment below.
|
|
114
|
-
const accounts: any = {
|
|
115
|
-
// non-null: setupLocalTesting → setupWithLocalNode/Fork unconditionally
|
|
116
|
-
// funds the deployer account via accountLabels[0]; deployer is always
|
|
117
|
-
// first by construction at L93 above.
|
|
118
|
-
deployer: labeledAccounts.deployer!,
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
for (const label of accountLabels) {
|
|
122
|
-
accounts[label] = labeledAccounts[label] || AccountManager.getOrCreateLabeled(label);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const contracts = {} as Record<TModules[number], MoveContract>;
|
|
126
|
-
|
|
127
|
-
for (const moduleName of modules) {
|
|
128
|
-
const deploymentAddress = mh.getDeploymentAddress(moduleName);
|
|
129
|
-
|
|
130
|
-
if (!deploymentAddress) {
|
|
131
|
-
throw new Error(
|
|
132
|
-
`Module "${moduleName}" was not deployed. Check auto-deploy logs.`
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
contracts[moduleName as TModules[number]] = mh.getContract(deploymentAddress, moduleName);
|
|
137
|
-
logger.success(`Contract "${moduleName}" ready at ${deploymentAddress}`, 2);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
logger.newline();
|
|
141
|
-
logger.success("Test fixture ready!");
|
|
142
|
-
logger.newline();
|
|
143
|
-
|
|
144
|
-
return {
|
|
145
|
-
mh,
|
|
146
|
-
accounts,
|
|
147
|
-
contracts,
|
|
148
|
-
teardown: ctx.teardown,
|
|
149
|
-
} as TestFixture<TModules[number]>;
|
|
150
|
-
} catch (error) {
|
|
151
|
-
await ctx.teardown().catch(() => {});
|
|
152
|
-
throw error;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Create a minimal test fixture without auto-deployment
|
|
158
|
-
* Useful when you want to deploy contracts manually in tests
|
|
159
|
-
*
|
|
160
|
-
* @param accountLabels Account labels to create (defaults to ['alice', 'bob'])
|
|
161
|
-
* @param options Optional LocalTestOptions
|
|
162
|
-
* @returns Partial TestFixture (without contracts) plus a teardown closure
|
|
163
|
-
*/
|
|
164
|
-
export async function setupMinimalFixture(
|
|
165
|
-
accountLabels: string[] = ["alice", "bob"],
|
|
166
|
-
options: Partial<LocalTestOptions> = {}
|
|
167
|
-
): Promise<Omit<TestFixture, "contracts">> {
|
|
168
|
-
logger.newline();
|
|
169
|
-
logger.step("Setting up minimal test fixture (no auto-deploy)...");
|
|
170
|
-
|
|
171
|
-
const allLabels = ["deployer", ...accountLabels.filter((l) => l !== "deployer")];
|
|
172
|
-
|
|
173
|
-
const setupOptions: LocalTestOptions = {
|
|
174
|
-
...options,
|
|
175
|
-
accountLabels: allLabels,
|
|
176
|
-
autoDeploy: [],
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
const ctx = await setupLocalTesting(setupOptions);
|
|
180
|
-
|
|
181
|
-
// Same teardown-on-assembly-failure pattern as setupTestFixture.
|
|
182
|
-
try {
|
|
183
|
-
const mh = ctx.runtime;
|
|
184
|
-
|
|
185
|
-
const labeledAccounts = AccountManager.getLabeledAccounts();
|
|
186
|
-
|
|
187
|
-
// any: see setupTestFixture above — same dynamic-key builder pattern.
|
|
188
|
-
const accounts: any = {
|
|
189
|
-
// non-null: deployer is unconditionally added to allLabels at L156 above.
|
|
190
|
-
deployer: labeledAccounts.deployer!,
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
for (const label of accountLabels) {
|
|
194
|
-
accounts[label] = labeledAccounts[label] || AccountManager.getOrCreateLabeled(label);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
logger.newline();
|
|
198
|
-
logger.success("Minimal fixture ready!");
|
|
199
|
-
logger.newline();
|
|
200
|
-
|
|
201
|
-
return {
|
|
202
|
-
mh,
|
|
203
|
-
accounts,
|
|
204
|
-
teardown: ctx.teardown,
|
|
205
|
-
};
|
|
206
|
-
} catch (error) {
|
|
207
|
-
await ctx.teardown().catch(() => {});
|
|
208
|
-
throw error;
|
|
209
|
-
}
|
|
210
|
-
}
|