movehat 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +17 -1
- package/dist/commands/run.js +46 -33
- 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 +109 -28
- 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 +6 -4
- package/dist/utils/parseCliOutput.js +10 -6
- 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
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
-
import { vol } from 'memfs';
|
|
3
|
-
import { ForkStorage } from '../storage.js';
|
|
4
|
-
|
|
5
|
-
// Mock fs module
|
|
6
|
-
vi.mock('fs', async () => {
|
|
7
|
-
const memfs = await import('memfs');
|
|
8
|
-
return memfs.fs;
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
describe('ForkStorage', () => {
|
|
12
|
-
const forkPath = '/test-fork';
|
|
13
|
-
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
vol.reset();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
afterEach(() => {
|
|
19
|
-
vol.reset();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
describe('initialize', () => {
|
|
23
|
-
it('should create fork directory structure', () => {
|
|
24
|
-
const storage = new ForkStorage(forkPath);
|
|
25
|
-
storage.initialize();
|
|
26
|
-
|
|
27
|
-
expect(vol.existsSync(forkPath)).toBe(true);
|
|
28
|
-
expect(vol.existsSync(`${forkPath}/resources`)).toBe(true);
|
|
29
|
-
expect(vol.existsSync(`${forkPath}/cache`)).toBe(true);
|
|
30
|
-
expect(vol.existsSync(`${forkPath}/cache/.gitignore`)).toBe(true);
|
|
31
|
-
expect(vol.existsSync(`${forkPath}/accounts.json`)).toBe(true);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('should not overwrite existing files', () => {
|
|
35
|
-
vol.fromJSON({
|
|
36
|
-
[`${forkPath}/accounts.json`]: '{"existing": "data"}',
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
const storage = new ForkStorage(forkPath);
|
|
40
|
-
storage.initialize();
|
|
41
|
-
|
|
42
|
-
const content = vol.readFileSync(`${forkPath}/accounts.json`, 'utf-8');
|
|
43
|
-
expect(content).toBe('{"existing": "data"}');
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe('exists', () => {
|
|
48
|
-
it('should return false if fork does not exist', () => {
|
|
49
|
-
const storage = new ForkStorage(forkPath);
|
|
50
|
-
expect(storage.exists()).toBe(false);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('should return false if metadata.json is missing', () => {
|
|
54
|
-
vol.fromJSON({
|
|
55
|
-
[`${forkPath}/accounts.json`]: '{}',
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
const storage = new ForkStorage(forkPath);
|
|
59
|
-
expect(storage.exists()).toBe(false);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('should return true if fork exists with metadata', () => {
|
|
63
|
-
vol.fromJSON({
|
|
64
|
-
[`${forkPath}/metadata.json`]: '{}',
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
const storage = new ForkStorage(forkPath);
|
|
68
|
-
expect(storage.exists()).toBe(true);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
describe('metadata', () => {
|
|
73
|
-
it('should save and load metadata', () => {
|
|
74
|
-
vol.mkdirSync(forkPath, { recursive: true });
|
|
75
|
-
|
|
76
|
-
const storage = new ForkStorage(forkPath);
|
|
77
|
-
const metadata = {
|
|
78
|
-
network: 'testnet',
|
|
79
|
-
nodeUrl: 'https://testnet.example.com/v1',
|
|
80
|
-
chainId: 250,
|
|
81
|
-
ledgerVersion: '12345',
|
|
82
|
-
timestamp: '1234567890',
|
|
83
|
-
epoch: '100',
|
|
84
|
-
blockHeight: '1000',
|
|
85
|
-
createdAt: '2024-01-01T00:00:00.000Z',
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
storage.saveMetadata(metadata);
|
|
89
|
-
const loaded = storage.loadMetadata();
|
|
90
|
-
|
|
91
|
-
expect(loaded).toEqual(metadata);
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it('should throw error if metadata does not exist', () => {
|
|
95
|
-
const storage = new ForkStorage(forkPath);
|
|
96
|
-
expect(() => storage.loadMetadata()).toThrow('Fork metadata not found');
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
describe('accounts', () => {
|
|
101
|
-
it('should save and get account state', () => {
|
|
102
|
-
vol.fromJSON({
|
|
103
|
-
[`${forkPath}/accounts.json`]: '{}',
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
const storage = new ForkStorage(forkPath);
|
|
107
|
-
const accountState = {
|
|
108
|
-
sequenceNumber: '10',
|
|
109
|
-
authenticationKey: '0xabc123',
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
storage.saveAccount('0x123', accountState);
|
|
113
|
-
const loaded = storage.getAccount('0x123');
|
|
114
|
-
|
|
115
|
-
expect(loaded).toEqual(accountState);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('should return null for non-existent account', () => {
|
|
119
|
-
vol.fromJSON({
|
|
120
|
-
[`${forkPath}/accounts.json`]: '{}',
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
const storage = new ForkStorage(forkPath);
|
|
124
|
-
const result = storage.getAccount('0xnonexistent');
|
|
125
|
-
|
|
126
|
-
expect(result).toBeNull();
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
it('should list all accounts', () => {
|
|
130
|
-
vol.fromJSON({
|
|
131
|
-
[`${forkPath}/accounts.json`]: JSON.stringify({
|
|
132
|
-
'0x1': { sequenceNumber: '0' },
|
|
133
|
-
'0x2': { sequenceNumber: '5' },
|
|
134
|
-
'0x3': { sequenceNumber: '10' },
|
|
135
|
-
}),
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
const storage = new ForkStorage(forkPath);
|
|
139
|
-
const accounts = storage.listAccounts();
|
|
140
|
-
|
|
141
|
-
expect(accounts).toHaveLength(3);
|
|
142
|
-
expect(accounts).toContain('0x1');
|
|
143
|
-
expect(accounts).toContain('0x2');
|
|
144
|
-
expect(accounts).toContain('0x3');
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it('should clear all accounts', () => {
|
|
148
|
-
vol.fromJSON({
|
|
149
|
-
[`${forkPath}/accounts.json`]: JSON.stringify({
|
|
150
|
-
'0x1': { sequenceNumber: '0' },
|
|
151
|
-
}),
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
const storage = new ForkStorage(forkPath);
|
|
155
|
-
storage.clearAccounts();
|
|
156
|
-
|
|
157
|
-
const accounts = storage.listAccounts();
|
|
158
|
-
expect(accounts).toHaveLength(0);
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
describe('resources', () => {
|
|
163
|
-
beforeEach(() => {
|
|
164
|
-
vol.fromJSON({
|
|
165
|
-
[`${forkPath}/resources/.gitkeep`]: '',
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
it('should save and get resource', () => {
|
|
170
|
-
const storage = new ForkStorage(forkPath);
|
|
171
|
-
const resource = { value: '100' };
|
|
172
|
-
|
|
173
|
-
storage.saveResource('0x1', '0x1::coin::CoinStore', resource);
|
|
174
|
-
const loaded = storage.getResource('0x1', '0x1::coin::CoinStore');
|
|
175
|
-
|
|
176
|
-
expect(loaded).toEqual(resource);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
it('should return null for non-existent resource', () => {
|
|
180
|
-
const storage = new ForkStorage(forkPath);
|
|
181
|
-
const result = storage.getResource('0x1', '0x1::nonexistent::Resource');
|
|
182
|
-
|
|
183
|
-
expect(result).toBeNull();
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
it('should get all resources for an account', () => {
|
|
187
|
-
vol.fromJSON({
|
|
188
|
-
[`${forkPath}/resources/0x1.json`]: JSON.stringify({
|
|
189
|
-
'0x1::coin::CoinStore': { value: '100' },
|
|
190
|
-
'0x1::account::Account': { sequence: '5' },
|
|
191
|
-
}),
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
const storage = new ForkStorage(forkPath);
|
|
195
|
-
const resources = storage.getAllResources('0x1');
|
|
196
|
-
|
|
197
|
-
expect(Object.keys(resources)).toHaveLength(2);
|
|
198
|
-
expect(resources['0x1::coin::CoinStore']).toEqual({ value: '100' });
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
it('should check if resource exists', () => {
|
|
202
|
-
vol.fromJSON({
|
|
203
|
-
[`${forkPath}/resources/0x1.json`]: JSON.stringify({
|
|
204
|
-
'0x1::coin::CoinStore': { value: '100' },
|
|
205
|
-
}),
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
const storage = new ForkStorage(forkPath);
|
|
209
|
-
|
|
210
|
-
expect(storage.hasResource('0x1', '0x1::coin::CoinStore')).toBe(true);
|
|
211
|
-
expect(storage.hasResource('0x1', '0x1::nonexistent::Resource')).toBe(false);
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
it('should clear all resources', () => {
|
|
215
|
-
vol.fromJSON({
|
|
216
|
-
[`${forkPath}/resources/0x1.json`]: '{}',
|
|
217
|
-
[`${forkPath}/resources/0x2.json`]: '{}',
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
const storage = new ForkStorage(forkPath);
|
|
221
|
-
storage.clearResources();
|
|
222
|
-
|
|
223
|
-
expect(vol.existsSync(`${forkPath}/resources/0x1.json`)).toBe(false);
|
|
224
|
-
expect(vol.existsSync(`${forkPath}/resources/0x2.json`)).toBe(false);
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
describe('address sanitization', () => {
|
|
229
|
-
beforeEach(() => {
|
|
230
|
-
vol.fromJSON({
|
|
231
|
-
[`${forkPath}/resources/.gitkeep`]: '',
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
it('should handle addresses with 0x prefix', () => {
|
|
236
|
-
const storage = new ForkStorage(forkPath);
|
|
237
|
-
storage.saveResource('0xabc123', 'test::Resource', { value: 1 });
|
|
238
|
-
|
|
239
|
-
expect(vol.existsSync(`${forkPath}/resources/0xabc123.json`)).toBe(true);
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
it('should normalize address to lowercase', () => {
|
|
243
|
-
const storage = new ForkStorage(forkPath);
|
|
244
|
-
storage.saveResource('0xABC123', 'test::Resource', { value: 1 });
|
|
245
|
-
|
|
246
|
-
expect(vol.existsSync(`${forkPath}/resources/0xabc123.json`)).toBe(true);
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
it('should reject invalid address formats', () => {
|
|
250
|
-
const storage = new ForkStorage(forkPath);
|
|
251
|
-
|
|
252
|
-
expect(() => {
|
|
253
|
-
storage.saveResource('../../../etc/passwd', 'test::Resource', { value: 1 });
|
|
254
|
-
}).toThrow('Invalid address format');
|
|
255
|
-
|
|
256
|
-
expect(() => {
|
|
257
|
-
storage.saveResource('0x123/../../etc', 'test::Resource', { value: 1 });
|
|
258
|
-
}).toThrow('Invalid address format');
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
it('should reject addresses with more than 64 hex chars (Movement cap)', () => {
|
|
262
|
-
const storage = new ForkStorage(forkPath);
|
|
263
|
-
const sixtyFiveHex = '0x' + 'a'.repeat(65);
|
|
264
|
-
|
|
265
|
-
expect(() => {
|
|
266
|
-
storage.saveResource(sixtyFiveHex, 'test::Resource', { value: 1 });
|
|
267
|
-
}).toThrow('Invalid address format');
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
it('should accept addresses exactly at the 64 hex char limit', () => {
|
|
271
|
-
const storage = new ForkStorage(forkPath);
|
|
272
|
-
const sixtyFourHex = '0x' + 'a'.repeat(64);
|
|
273
|
-
|
|
274
|
-
expect(() => {
|
|
275
|
-
storage.saveResource(sixtyFourHex, 'test::Resource', { value: 1 });
|
|
276
|
-
}).not.toThrow();
|
|
277
|
-
|
|
278
|
-
expect(vol.existsSync(`${forkPath}/resources/${sixtyFourHex}.json`)).toBe(true);
|
|
279
|
-
});
|
|
280
|
-
});
|
|
281
|
-
});
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
-
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { snapshot, viewForkResource } from '../test.js';
|
|
6
|
-
import type { ChildProcessAdapter, RunResult } from '../../utils/childProcessAdapter.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Guards the exitCode-failure path that CodeRabbit flagged on PR #100:
|
|
10
|
-
* before this hardening, an `aptos` command that exited non-zero with a
|
|
11
|
-
* stderr containing the word "Success" (or no stderr at all) could slip
|
|
12
|
-
* past the stderr-defense check in `snapshot`, and a non-JSON stderr from
|
|
13
|
-
* `view-resource` produced a cryptic JSON parse error instead of the
|
|
14
|
-
* actual aptos failure.
|
|
15
|
-
*/
|
|
16
|
-
describe('fork/test — exitCode failure paths', () => {
|
|
17
|
-
let tmpCwd: string;
|
|
18
|
-
let origCwd: string;
|
|
19
|
-
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
tmpCwd = mkdtempSync(join(tmpdir(), 'movehat-fork-test-'));
|
|
22
|
-
origCwd = process.cwd();
|
|
23
|
-
process.chdir(tmpCwd);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
afterEach(() => {
|
|
27
|
-
try {
|
|
28
|
-
process.chdir(origCwd);
|
|
29
|
-
} finally {
|
|
30
|
-
rmSync(tmpCwd, { recursive: true, force: true });
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
function adapterReturning(result: RunResult): ChildProcessAdapter {
|
|
35
|
-
return {
|
|
36
|
-
async run() {
|
|
37
|
-
return result;
|
|
38
|
-
},
|
|
39
|
-
spawn() {
|
|
40
|
-
throw new Error('spawn not used in fork/test failure-path tests');
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
it("snapshot throws on non-zero exit even when stderr contains 'Success'", async () => {
|
|
46
|
-
// The pre-fix edge case: aptos exits 1, stderr says
|
|
47
|
-
// "Failed: Success criteria not met" → the stderr.includes('Success')
|
|
48
|
-
// gate returned false-positive ok, and a stale directory from a prior
|
|
49
|
-
// run would mask the failure entirely.
|
|
50
|
-
const adapter = adapterReturning({
|
|
51
|
-
exitCode: 1,
|
|
52
|
-
stdout: '',
|
|
53
|
-
stderr: 'Failed: Success criteria not met for snapshot init',
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
await expect(snapshot({ name: 'edge', adapter })).rejects.toThrow(
|
|
57
|
-
/Success criteria not met/
|
|
58
|
-
);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('snapshot still throws when a stale directory from a prior run exists (the full edge case)', async () => {
|
|
62
|
-
// The pre-fix combined edge case: aptos exits non-zero, stderr happens
|
|
63
|
-
// to contain "Success" (so the stderr.includes('Success') gate would
|
|
64
|
-
// false-positive), AND the snapshot directory already exists from a
|
|
65
|
-
// previous successful run (so the existsSync check would false-positive
|
|
66
|
-
// too). The new exitCode check fires first and throws regardless.
|
|
67
|
-
const stalePath = join(tmpCwd, '.movehat', 'snapshots', 'stale');
|
|
68
|
-
mkdirSync(stalePath, { recursive: true });
|
|
69
|
-
writeFileSync(join(stalePath, 'config.json'), '{}');
|
|
70
|
-
|
|
71
|
-
const adapter = adapterReturning({
|
|
72
|
-
exitCode: 1,
|
|
73
|
-
stdout: '',
|
|
74
|
-
stderr: 'Failed but Success was nearby',
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
await expect(
|
|
78
|
-
snapshot({ name: 'stale', path: stalePath, adapter })
|
|
79
|
-
).rejects.toThrow(/Failed but Success was nearby/);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it('viewForkResource throws on non-zero exit with non-JSON stderr (informative message)', async () => {
|
|
83
|
-
// Pre-fix the failure surfaced as "Unexpected token ..." from
|
|
84
|
-
// JSON.parse, which obscured the actual aptos error.
|
|
85
|
-
const adapter = adapterReturning({
|
|
86
|
-
exitCode: 1,
|
|
87
|
-
stdout: '',
|
|
88
|
-
stderr: 'Error: session not found',
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
await expect(
|
|
92
|
-
viewForkResource('/nonexistent/session', '0x1', '0x1::coin::CoinStore', {
|
|
93
|
-
adapter,
|
|
94
|
-
})
|
|
95
|
-
).rejects.toThrow(/session not found/);
|
|
96
|
-
});
|
|
97
|
-
});
|
package/src/fork/api.ts
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import https from 'https';
|
|
2
|
-
import http from 'http';
|
|
3
|
-
import { URL } from 'url';
|
|
4
|
-
import type { LedgerInfo, AccountData, AccountResource } from '../types/fork.js';
|
|
5
|
-
import { normalizeAddressShort } from '../utils/address.js';
|
|
6
|
-
|
|
7
|
-
export interface MovementApiClientOptions {
|
|
8
|
-
/** Abort the request after this many ms (default: 30_000). */
|
|
9
|
-
timeoutMs?: number;
|
|
10
|
-
/** Reject responses larger than this many bytes (default: 16 MiB). */
|
|
11
|
-
maxBytes?: number;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
15
|
-
const DEFAULT_MAX_BYTES = 16 * 1024 * 1024;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Client for interacting with Movement L1 JSON API.
|
|
19
|
-
*
|
|
20
|
-
* When constructed with an `apiKey`, every outgoing request carries
|
|
21
|
-
* an `Authorization: Bearer <apiKey>` header. Use this for rate-
|
|
22
|
-
* limited public endpoints (e.g. Movement testnet under load) or
|
|
23
|
-
* auth-gated nodes.
|
|
24
|
-
*/
|
|
25
|
-
export class MovementApiClient {
|
|
26
|
-
private nodeUrl: string;
|
|
27
|
-
private readonly apiKey?: string;
|
|
28
|
-
private readonly timeoutMs: number;
|
|
29
|
-
private readonly maxBytes: number;
|
|
30
|
-
|
|
31
|
-
constructor(
|
|
32
|
-
nodeUrl: string,
|
|
33
|
-
apiKey?: string,
|
|
34
|
-
options: MovementApiClientOptions = {}
|
|
35
|
-
) {
|
|
36
|
-
// Remove trailing slash
|
|
37
|
-
let normalized = nodeUrl.replace(/\/$/, '');
|
|
38
|
-
|
|
39
|
-
// If URL already ends with /v1, use as is
|
|
40
|
-
// Otherwise, assume it's the base URL
|
|
41
|
-
if (!normalized.endsWith('/v1')) {
|
|
42
|
-
// Base URL without /v1, we'll add it in requests
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
this.nodeUrl = normalized;
|
|
46
|
-
if (apiKey !== undefined) this.apiKey = apiKey;
|
|
47
|
-
this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
48
|
-
this.maxBytes = options.maxBytes ?? DEFAULT_MAX_BYTES;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Make a GET request to the API.
|
|
53
|
-
*
|
|
54
|
-
* Adds `Authorization: Bearer <apiKey>` when the client was
|
|
55
|
-
* constructed with an `apiKey`. The header is omitted otherwise
|
|
56
|
-
* to preserve backwards-compatible behavior for unauthenticated
|
|
57
|
-
* public endpoints.
|
|
58
|
-
*/
|
|
59
|
-
private async get<T>(path: string): Promise<T> {
|
|
60
|
-
const fullUrl = `${this.nodeUrl}${path}`;
|
|
61
|
-
const parsedUrl = new URL(fullUrl);
|
|
62
|
-
const isHttps = parsedUrl.protocol === 'https:';
|
|
63
|
-
const client = isHttps ? https : http;
|
|
64
|
-
|
|
65
|
-
const requestOptions: {
|
|
66
|
-
method: 'GET';
|
|
67
|
-
headers?: Record<string, string>;
|
|
68
|
-
} = { method: 'GET' };
|
|
69
|
-
if (this.apiKey !== undefined) {
|
|
70
|
-
requestOptions.headers = { Authorization: `Bearer ${this.apiKey}` };
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const timeoutMs = this.timeoutMs;
|
|
74
|
-
const maxBytes = this.maxBytes;
|
|
75
|
-
|
|
76
|
-
return new Promise((resolve, reject) => {
|
|
77
|
-
let settled = false;
|
|
78
|
-
const settle = (fn: () => void) => {
|
|
79
|
-
if (settled) return;
|
|
80
|
-
settled = true;
|
|
81
|
-
fn();
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
const req = client.get(fullUrl, requestOptions, (res) => {
|
|
85
|
-
const chunks: Buffer[] = [];
|
|
86
|
-
let totalBytes = 0;
|
|
87
|
-
|
|
88
|
-
res.on('data', (chunk: Buffer | string) => {
|
|
89
|
-
const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
90
|
-
totalBytes += buf.length;
|
|
91
|
-
if (totalBytes > maxBytes) {
|
|
92
|
-
req.destroy();
|
|
93
|
-
settle(() =>
|
|
94
|
-
reject(
|
|
95
|
-
new Error(
|
|
96
|
-
`Response exceeded maxBytes (${maxBytes}); ${totalBytes} bytes received before abort`
|
|
97
|
-
)
|
|
98
|
-
)
|
|
99
|
-
);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
chunks.push(buf);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
res.on('end', () => {
|
|
106
|
-
if (settled) return;
|
|
107
|
-
const data = Buffer.concat(chunks).toString('utf8');
|
|
108
|
-
if (res.statusCode !== 200) {
|
|
109
|
-
settle(() =>
|
|
110
|
-
reject(
|
|
111
|
-
new Error(
|
|
112
|
-
`API request failed with status ${res.statusCode}: ${data}`
|
|
113
|
-
)
|
|
114
|
-
)
|
|
115
|
-
);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
try {
|
|
120
|
-
const parsed = JSON.parse(data);
|
|
121
|
-
settle(() => resolve(parsed));
|
|
122
|
-
} catch (err) {
|
|
123
|
-
settle(() =>
|
|
124
|
-
reject(new Error(`Failed to parse JSON response: ${err}`))
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
req.setTimeout(timeoutMs, () => {
|
|
131
|
-
req.destroy();
|
|
132
|
-
settle(() =>
|
|
133
|
-
reject(new Error(`API request timed out after ${timeoutMs}ms`))
|
|
134
|
-
);
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
req.on('error', (err) => {
|
|
138
|
-
settle(() => reject(new Error(`API request failed: ${err.message}`)));
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
req.end();
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Build API path with proper prefix
|
|
147
|
-
*/
|
|
148
|
-
private apiPath(suffix: string): string {
|
|
149
|
-
// If nodeUrl already ends with /v1, just add the suffix
|
|
150
|
-
// Otherwise add /v1 prefix
|
|
151
|
-
return this.nodeUrl.endsWith('/v1') ? suffix : `/v1${suffix}`;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Get ledger information
|
|
156
|
-
*/
|
|
157
|
-
async getLedgerInfo(): Promise<LedgerInfo> {
|
|
158
|
-
return this.get<LedgerInfo>(this.apiPath('/'));
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Get account information
|
|
163
|
-
*/
|
|
164
|
-
async getAccount(address: string): Promise<AccountData> {
|
|
165
|
-
const normalizedAddress = normalizeAddressShort(address);
|
|
166
|
-
|
|
167
|
-
return this.get<AccountData>(this.apiPath(`/accounts/${normalizedAddress}`));
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Get a specific account resource
|
|
172
|
-
*/
|
|
173
|
-
async getAccountResource(address: string, resourceType: string): Promise<any> {
|
|
174
|
-
const normalizedAddress = normalizeAddressShort(address);
|
|
175
|
-
|
|
176
|
-
// URL encode the resource type
|
|
177
|
-
const encodedType = encodeURIComponent(resourceType);
|
|
178
|
-
|
|
179
|
-
return this.get<any>(this.apiPath(`/accounts/${normalizedAddress}/resource/${encodedType}`));
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Get all resources for an account
|
|
184
|
-
*/
|
|
185
|
-
async getAccountResources(address: string): Promise<AccountResource[]> {
|
|
186
|
-
const normalizedAddress = normalizeAddressShort(address);
|
|
187
|
-
|
|
188
|
-
return this.get<AccountResource[]>(this.apiPath(`/accounts/${normalizedAddress}/resources`));
|
|
189
|
-
}
|
|
190
|
-
}
|