movehat 0.1.8 ā 0.2.0
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 +2 -2
- package/dist/__tests__/deployContract.test.d.ts +2 -0
- package/dist/__tests__/deployContract.test.d.ts.map +1 -0
- package/dist/__tests__/deployContract.test.js +368 -0
- package/dist/__tests__/deployContract.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +46 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +24 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +1 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.js +82 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +1 -0
- package/dist/__tests__/fork/api.test.d.ts +2 -0
- package/dist/__tests__/fork/api.test.d.ts.map +1 -0
- package/dist/__tests__/fork/api.test.js +110 -0
- package/dist/__tests__/fork/api.test.js.map +1 -0
- package/dist/__tests__/harness/Harness.createLive.test.d.ts +2 -0
- package/dist/__tests__/harness/Harness.createLive.test.d.ts.map +1 -0
- package/dist/__tests__/harness/Harness.createLive.test.js +53 -0
- package/dist/__tests__/harness/Harness.createLive.test.js.map +1 -0
- package/dist/__tests__/harness/Harness.proxy.test.d.ts +2 -0
- package/dist/__tests__/harness/Harness.proxy.test.d.ts.map +1 -0
- package/dist/__tests__/harness/Harness.proxy.test.js +93 -0
- package/dist/__tests__/harness/Harness.proxy.test.js.map +1 -0
- package/dist/__tests__/harness/_fixture.d.ts +54 -0
- package/dist/__tests__/harness/_fixture.d.ts.map +1 -0
- package/dist/__tests__/harness/_fixture.js +69 -0
- package/dist/__tests__/harness/_fixture.js.map +1 -0
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts +2 -0
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts.map +1 -0
- package/dist/__tests__/harness/codeObject.deploy.test.js +288 -0
- package/dist/__tests__/harness/codeObject.deploy.test.js.map +1 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts +2 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts.map +1 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.js +138 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.js.map +1 -0
- package/dist/__tests__/harness/script.test.d.ts +2 -0
- package/dist/__tests__/harness/script.test.d.ts.map +1 -0
- package/dist/__tests__/harness/script.test.js +219 -0
- package/dist/__tests__/harness/script.test.js.map +1 -0
- package/dist/__tests__/harness/view.test.d.ts +2 -0
- package/dist/__tests__/harness/view.test.d.ts.map +1 -0
- package/dist/__tests__/harness/view.test.js +92 -0
- package/dist/__tests__/harness/view.test.js.map +1 -0
- package/dist/__tests__/runtime.test.d.ts +2 -0
- package/dist/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/__tests__/runtime.test.js +141 -0
- package/dist/__tests__/runtime.test.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/__tests__/compile.test.d.ts +2 -0
- package/dist/commands/__tests__/compile.test.d.ts.map +1 -0
- package/dist/commands/__tests__/compile.test.js +351 -0
- package/dist/commands/__tests__/compile.test.js.map +1 -0
- package/dist/commands/__tests__/init.test.d.ts +2 -0
- package/dist/commands/__tests__/init.test.d.ts.map +1 -0
- package/dist/commands/__tests__/init.test.js +101 -0
- package/dist/commands/__tests__/init.test.js.map +1 -0
- package/dist/commands/__tests__/run.test.d.ts +2 -0
- package/dist/commands/__tests__/run.test.d.ts.map +1 -0
- package/dist/commands/__tests__/run.test.js +166 -0
- package/dist/commands/__tests__/run.test.js.map +1 -0
- package/dist/commands/__tests__/test-move.test.d.ts +2 -0
- package/dist/commands/__tests__/test-move.test.d.ts.map +1 -0
- package/dist/commands/__tests__/test-move.test.js +59 -0
- package/dist/commands/__tests__/test-move.test.js.map +1 -0
- package/dist/commands/__tests__/test.test.d.ts +2 -0
- package/dist/commands/__tests__/test.test.d.ts.map +1 -0
- package/dist/commands/__tests__/test.test.js +168 -0
- package/dist/commands/__tests__/test.test.js.map +1 -0
- package/dist/commands/__tests__/update.test.d.ts +2 -0
- package/dist/commands/__tests__/update.test.d.ts.map +1 -0
- package/dist/commands/__tests__/update.test.js +176 -0
- package/dist/commands/__tests__/update.test.js.map +1 -0
- package/dist/commands/compile.d.ts +7 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +150 -33
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/fork/__tests__/create.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/create.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/create.test.js +108 -0
- package/dist/commands/fork/__tests__/create.test.js.map +1 -0
- package/dist/commands/fork/__tests__/fund.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/fund.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/fund.test.js +72 -0
- package/dist/commands/fork/__tests__/fund.test.js.map +1 -0
- package/dist/commands/fork/__tests__/list.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/list.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/list.test.js +119 -0
- package/dist/commands/fork/__tests__/list.test.js.map +1 -0
- package/dist/commands/fork/__tests__/serve.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/serve.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/serve.test.js +97 -0
- package/dist/commands/fork/__tests__/serve.test.js.map +1 -0
- package/dist/commands/fork/__tests__/view-resource.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/view-resource.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/view-resource.test.js +77 -0
- package/dist/commands/fork/__tests__/view-resource.test.js.map +1 -0
- package/dist/commands/fork/create.d.ts +1 -1
- package/dist/commands/fork/create.d.ts.map +1 -1
- package/dist/commands/fork/create.js +3 -2
- package/dist/commands/fork/create.js.map +1 -1
- package/dist/commands/fork/fund.d.ts.map +1 -1
- package/dist/commands/fork/fund.js +15 -8
- package/dist/commands/fork/fund.js.map +1 -1
- package/dist/commands/fork/list.d.ts.map +1 -1
- package/dist/commands/fork/list.js +2 -1
- package/dist/commands/fork/list.js.map +1 -1
- package/dist/commands/fork/serve.d.ts +1 -0
- package/dist/commands/fork/serve.d.ts.map +1 -1
- package/dist/commands/fork/serve.js +4 -2
- package/dist/commands/fork/serve.js.map +1 -1
- package/dist/commands/fork/view-resource.d.ts.map +1 -1
- package/dist/commands/fork/view-resource.js +10 -5
- package/dist/commands/fork/view-resource.js.map +1 -1
- package/dist/commands/run.d.ts +15 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +50 -27
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/test-move.d.ts.map +1 -1
- package/dist/commands/test-move.js +3 -2
- package/dist/commands/test-move.js.map +1 -1
- package/dist/commands/test.js +52 -46
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +15 -13
- package/dist/commands/update.js.map +1 -1
- package/dist/core/AccountManager.d.ts +1 -1
- package/dist/core/AccountManager.d.ts.map +1 -1
- package/dist/core/AccountManager.js +20 -7
- package/dist/core/AccountManager.js.map +1 -1
- package/dist/core/Publisher.d.ts +31 -0
- package/dist/core/Publisher.d.ts.map +1 -0
- package/dist/core/Publisher.js +248 -0
- package/dist/core/Publisher.js.map +1 -0
- package/dist/core/__tests__/AccountManager.test.d.ts +2 -0
- package/dist/core/__tests__/AccountManager.test.d.ts.map +1 -0
- package/dist/core/__tests__/AccountManager.test.js +239 -0
- package/dist/core/__tests__/AccountManager.test.js.map +1 -0
- package/dist/core/__tests__/config.test.d.ts +2 -0
- package/dist/core/__tests__/config.test.d.ts.map +1 -0
- package/dist/core/__tests__/config.test.js +311 -0
- package/dist/core/__tests__/config.test.js.map +1 -0
- package/dist/core/__tests__/deployments.test.d.ts +2 -0
- package/dist/core/__tests__/deployments.test.d.ts.map +1 -0
- package/dist/core/__tests__/deployments.test.js +201 -0
- package/dist/core/__tests__/deployments.test.js.map +1 -0
- package/dist/core/__tests__/shell.test.d.ts +2 -0
- package/dist/core/__tests__/shell.test.d.ts.map +1 -0
- package/dist/core/__tests__/shell.test.js +107 -0
- package/dist/core/__tests__/shell.test.js.map +1 -0
- package/dist/core/config.d.ts +13 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +80 -11
- package/dist/core/config.js.map +1 -1
- package/dist/core/contract.d.ts +1 -1
- package/dist/core/contract.d.ts.map +1 -1
- package/dist/core/contract.js +15 -4
- package/dist/core/contract.js.map +1 -1
- package/dist/core/deployments.d.ts +2 -2
- package/dist/core/deployments.d.ts.map +1 -1
- package/dist/core/deployments.js +8 -6
- package/dist/core/deployments.js.map +1 -1
- package/dist/core/movementProfile.d.ts +34 -0
- package/dist/core/movementProfile.d.ts.map +1 -0
- package/dist/core/movementProfile.js +150 -0
- package/dist/core/movementProfile.js.map +1 -0
- package/dist/core/shell.d.ts +23 -7
- package/dist/core/shell.d.ts.map +1 -1
- package/dist/core/shell.js +32 -14
- package/dist/core/shell.js.map +1 -1
- package/dist/errors.d.ts +35 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +54 -0
- package/dist/errors.js.map +1 -1
- package/dist/fork/__tests__/manager.test.d.ts +2 -0
- package/dist/fork/__tests__/manager.test.d.ts.map +1 -0
- package/dist/fork/__tests__/manager.test.js +309 -0
- package/dist/fork/__tests__/manager.test.js.map +1 -0
- package/dist/fork/__tests__/server.test.d.ts +2 -0
- package/dist/fork/__tests__/server.test.d.ts.map +1 -0
- package/dist/fork/__tests__/server.test.js +54 -0
- package/dist/fork/__tests__/server.test.js.map +1 -0
- package/dist/fork/__tests__/storage.test.d.ts +2 -0
- package/dist/fork/__tests__/storage.test.d.ts.map +1 -0
- package/dist/fork/__tests__/storage.test.js +222 -0
- package/dist/fork/__tests__/storage.test.js.map +1 -0
- package/dist/fork/__tests__/test.test.d.ts +2 -0
- package/dist/fork/__tests__/test.test.d.ts.map +1 -0
- package/dist/fork/__tests__/test.test.js +81 -0
- package/dist/fork/__tests__/test.test.js.map +1 -0
- package/dist/fork/api.d.ts +14 -3
- package/dist/fork/api.d.ts.map +1 -1
- package/dist/fork/api.js +25 -14
- package/dist/fork/api.js.map +1 -1
- package/dist/fork/manager.d.ts +23 -9
- package/dist/fork/manager.d.ts.map +1 -1
- package/dist/fork/manager.js +79 -36
- package/dist/fork/manager.js.map +1 -1
- package/dist/fork/server.d.ts +11 -3
- package/dist/fork/server.d.ts.map +1 -1
- package/dist/fork/server.js +45 -13
- package/dist/fork/server.js.map +1 -1
- package/dist/fork/storage.d.ts +4 -4
- package/dist/fork/storage.d.ts.map +1 -1
- package/dist/fork/storage.js +7 -9
- package/dist/fork/storage.js.map +1 -1
- package/dist/fork/test.d.ts +13 -4
- package/dist/fork/test.d.ts.map +1 -1
- package/dist/fork/test.js +36 -27
- package/dist/fork/test.js.map +1 -1
- package/dist/harness/Harness.d.ts +124 -0
- package/dist/harness/Harness.d.ts.map +1 -0
- package/dist/harness/Harness.js +193 -0
- package/dist/harness/Harness.js.map +1 -0
- package/dist/harness/codeObject.d.ts +31 -0
- package/dist/harness/codeObject.d.ts.map +1 -0
- package/dist/harness/codeObject.js +271 -0
- package/dist/harness/codeObject.js.map +1 -0
- package/dist/harness/errors.d.ts +14 -0
- package/dist/harness/errors.d.ts.map +1 -0
- package/dist/harness/errors.js +22 -0
- package/dist/harness/errors.js.map +1 -0
- package/dist/harness/index.d.ts +4 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +3 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/proxy.d.ts +7 -0
- package/dist/harness/proxy.d.ts.map +1 -0
- package/dist/harness/proxy.js +36 -0
- package/dist/harness/proxy.js.map +1 -0
- package/dist/harness/script.d.ts +21 -0
- package/dist/harness/script.d.ts.map +1 -0
- package/dist/harness/script.js +155 -0
- package/dist/harness/script.js.map +1 -0
- package/dist/harness/view.d.ts +22 -0
- package/dist/harness/view.d.ts.map +1 -0
- package/dist/harness/view.js +28 -0
- package/dist/harness/view.js.map +1 -0
- package/dist/helpers/__tests__/semver-utils.test.d.ts +2 -0
- package/dist/helpers/__tests__/semver-utils.test.d.ts.map +1 -0
- package/dist/helpers/__tests__/semver-utils.test.js +103 -0
- package/dist/helpers/__tests__/semver-utils.test.js.map +1 -0
- package/dist/helpers/index.d.ts +3 -2
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +2 -2
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/move-tests.d.ts +3 -3
- package/dist/helpers/move-tests.d.ts.map +1 -1
- package/dist/helpers/move-tests.js +21 -20
- package/dist/helpers/move-tests.js.map +1 -1
- package/dist/helpers/npm-registry.d.ts.map +1 -1
- package/dist/helpers/npm-registry.js +1 -3
- package/dist/helpers/npm-registry.js.map +1 -1
- package/dist/helpers/semver-utils.d.ts.map +1 -1
- package/dist/helpers/semver-utils.js +4 -3
- package/dist/helpers/semver-utils.js.map +1 -1
- package/dist/helpers/setup.d.ts.map +1 -1
- package/dist/helpers/setup.js +10 -6
- package/dist/helpers/setup.js.map +1 -1
- package/dist/helpers/setupLocalTesting.d.ts +32 -27
- package/dist/helpers/setupLocalTesting.d.ts.map +1 -1
- package/dist/helpers/setupLocalTesting.js +179 -180
- package/dist/helpers/setupLocalTesting.js.map +1 -1
- package/dist/helpers/testFixtures.d.ts +19 -53
- package/dist/helpers/testFixtures.d.ts.map +1 -1
- package/dist/helpers/testFixtures.js +89 -107
- package/dist/helpers/testFixtures.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/node/LocalNodeManager.d.ts +9 -1
- package/dist/node/LocalNodeManager.d.ts.map +1 -1
- package/dist/node/LocalNodeManager.js +75 -58
- package/dist/node/LocalNodeManager.js.map +1 -1
- package/dist/node/__tests__/LocalNodeManager.test.d.ts +2 -0
- package/dist/node/__tests__/LocalNodeManager.test.d.ts.map +1 -0
- package/dist/node/__tests__/LocalNodeManager.test.js +349 -0
- package/dist/node/__tests__/LocalNodeManager.test.js.map +1 -0
- package/dist/runtime.d.ts +12 -15
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +32 -241
- package/dist/runtime.js.map +1 -1
- package/dist/templates/README.md +1 -1
- package/dist/templates/movehat.config.ts +10 -0
- package/dist/templates/package.json +2 -1
- package/dist/templates/scripts/deploy-counter.ts +46 -38
- package/dist/templates/tests/Counter.test.ts +51 -51
- package/dist/templates/types/movehat.d.ts +6 -9
- package/dist/types/config.d.ts +8 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/fork.d.ts +7 -1
- package/dist/types/fork.d.ts.map +1 -1
- package/dist/types/harness.d.ts +166 -0
- package/dist/types/harness.d.ts.map +1 -0
- package/dist/types/harness.js +2 -0
- package/dist/types/harness.js.map +1 -0
- package/dist/types/runtime.d.ts +7 -1
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/ui/__tests__/colors.test.d.ts +2 -0
- package/dist/ui/__tests__/colors.test.d.ts.map +1 -0
- package/dist/ui/__tests__/colors.test.js +127 -0
- package/dist/ui/__tests__/colors.test.js.map +1 -0
- package/dist/ui/colors.d.ts.map +1 -1
- package/dist/ui/colors.js +6 -2
- package/dist/ui/colors.js.map +1 -1
- package/dist/ui/logger.d.ts +17 -0
- package/dist/ui/logger.d.ts.map +1 -1
- package/dist/ui/logger.js +22 -0
- package/dist/ui/logger.js.map +1 -1
- package/dist/ui/symbols.d.ts +1 -0
- package/dist/ui/symbols.d.ts.map +1 -1
- package/dist/ui/symbols.js +7 -1
- package/dist/ui/symbols.js.map +1 -1
- package/dist/utils/__tests__/address.test.d.ts +2 -0
- package/dist/utils/__tests__/address.test.d.ts.map +1 -0
- package/dist/utils/__tests__/address.test.js +70 -0
- package/dist/utils/__tests__/address.test.js.map +1 -0
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts +2 -0
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts.map +1 -0
- package/dist/utils/__tests__/childProcessAdapter.test.js +217 -0
- package/dist/utils/__tests__/childProcessAdapter.test.js.map +1 -0
- package/dist/utils/__tests__/runCli.test.d.ts +2 -0
- package/dist/utils/__tests__/runCli.test.d.ts.map +1 -0
- package/dist/utils/__tests__/runCli.test.js +187 -0
- package/dist/utils/__tests__/runCli.test.js.map +1 -0
- package/dist/utils/address.d.ts +33 -0
- package/dist/utils/address.d.ts.map +1 -0
- package/dist/utils/address.js +52 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/childProcessAdapter.d.ts +93 -0
- package/dist/utils/childProcessAdapter.d.ts.map +1 -0
- package/dist/utils/childProcessAdapter.js +109 -0
- package/dist/utils/childProcessAdapter.js.map +1 -0
- package/dist/utils/parseCliOutput.d.ts +20 -0
- package/dist/utils/parseCliOutput.d.ts.map +1 -0
- package/dist/utils/parseCliOutput.js +26 -0
- package/dist/utils/parseCliOutput.js.map +1 -0
- package/dist/utils/redact.d.ts +15 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +24 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/runCli.d.ts +24 -0
- package/dist/utils/runCli.d.ts.map +1 -0
- package/dist/utils/runCli.js +37 -0
- package/dist/utils/runCli.js.map +1 -0
- package/package.json +14 -4
- package/src/__tests__/deployContract.test.ts +429 -0
- package/src/__tests__/errors.test.ts +84 -0
- package/src/__tests__/fixtures/sigint-deploy-harness.ts +95 -0
- package/src/__tests__/fork/api.test.ts +143 -0
- package/src/__tests__/harness/Harness.createLive.test.ts +57 -0
- package/src/__tests__/harness/Harness.proxy.test.ts +115 -0
- package/src/__tests__/harness/_fixture.ts +131 -0
- package/src/__tests__/harness/codeObject.deploy.test.ts +319 -0
- package/src/__tests__/harness/codeObject.upgrade.test.ts +156 -0
- package/src/__tests__/harness/script.test.ts +245 -0
- package/src/__tests__/harness/view.test.ts +104 -0
- package/src/__tests__/runtime.test.ts +182 -0
- package/src/cli.ts +2 -1
- package/src/commands/__tests__/compile.test.ts +407 -0
- package/src/commands/__tests__/init.test.ts +125 -0
- package/src/commands/__tests__/run.test.ts +192 -0
- package/src/commands/__tests__/test-move.test.ts +81 -0
- package/src/commands/__tests__/test.test.ts +204 -0
- package/src/commands/__tests__/update.test.ts +223 -0
- package/src/commands/compile.ts +168 -32
- package/src/commands/fork/__tests__/create.test.ts +132 -0
- package/src/commands/fork/__tests__/fund.test.ts +104 -0
- package/src/commands/fork/__tests__/list.test.ts +139 -0
- package/src/commands/fork/__tests__/serve.test.ts +121 -0
- package/src/commands/fork/__tests__/view-resource.test.ts +101 -0
- package/src/commands/fork/create.ts +4 -3
- package/src/commands/fork/fund.ts +16 -9
- package/src/commands/fork/list.ts +3 -2
- package/src/commands/fork/serve.ts +6 -3
- package/src/commands/fork/view-resource.ts +11 -6
- package/src/commands/run.ts +54 -28
- package/src/commands/test-move.ts +4 -3
- package/src/commands/test.ts +56 -44
- package/src/commands/update.ts +19 -16
- package/src/core/AccountManager.ts +23 -10
- package/src/core/Publisher.ts +322 -0
- package/src/core/__tests__/AccountManager.test.ts +290 -0
- package/src/core/__tests__/config.test.ts +377 -0
- package/src/core/__tests__/deployments.test.ts +247 -0
- package/src/core/__tests__/shell.test.ts +138 -0
- package/src/core/config.ts +96 -12
- package/src/core/contract.ts +13 -4
- package/src/core/deployments.ts +13 -11
- package/src/core/movementProfile.ts +179 -0
- package/src/core/shell.ts +34 -14
- package/src/errors.ts +60 -0
- package/src/fork/__tests__/manager.test.ts +385 -0
- package/src/fork/__tests__/server.test.ts +65 -0
- package/src/fork/__tests__/storage.test.ts +281 -0
- package/src/fork/__tests__/test.test.ts +97 -0
- package/src/fork/api.ts +28 -14
- package/src/fork/manager.ts +88 -43
- package/src/fork/server.ts +53 -19
- package/src/fork/storage.ts +12 -15
- package/src/fork/test.ts +58 -32
- package/src/harness/Harness.ts +228 -0
- package/src/harness/codeObject.ts +388 -0
- package/src/harness/errors.ts +22 -0
- package/src/harness/index.ts +3 -0
- package/src/harness/proxy.ts +40 -0
- package/src/harness/script.ts +196 -0
- package/src/harness/view.ts +34 -0
- package/src/helpers/__tests__/semver-utils.test.ts +121 -0
- package/src/helpers/index.ts +2 -8
- package/src/helpers/move-tests.ts +27 -23
- package/src/helpers/npm-registry.ts +4 -3
- package/src/helpers/semver-utils.ts +4 -3
- package/src/helpers/setup.ts +9 -5
- package/src/helpers/setupLocalTesting.ts +219 -200
- package/src/helpers/testFixtures.ts +106 -118
- package/src/index.ts +9 -3
- package/src/node/LocalNodeManager.ts +87 -62
- package/src/node/__tests__/LocalNodeManager.test.ts +452 -0
- package/src/runtime.ts +33 -289
- package/src/templates/README.md +1 -1
- package/src/templates/movehat.config.ts +10 -0
- package/src/templates/package.json +2 -1
- package/src/templates/scripts/deploy-counter.ts +46 -38
- package/src/templates/tests/Counter.test.ts +51 -51
- package/src/templates/types/movehat.d.ts +6 -9
- package/src/types/config.ts +8 -0
- package/src/types/fork.ts +7 -1
- package/src/types/harness.ts +182 -0
- package/src/types/runtime.ts +11 -3
- package/src/ui/__tests__/colors.test.ts +156 -0
- package/src/ui/colors.ts +5 -2
- package/src/ui/logger.ts +22 -0
- package/src/ui/symbols.ts +7 -1
- package/src/utils/__tests__/address.test.ts +93 -0
- package/src/utils/__tests__/childProcessAdapter.test.ts +266 -0
- package/src/utils/__tests__/runCli.test.ts +240 -0
- package/src/utils/address.ts +56 -0
- package/src/utils/childProcessAdapter.ts +215 -0
- package/src/utils/parseCliOutput.ts +27 -0
- package/src/utils/redact.ts +24 -0
- package/src/utils/runCli.ts +64 -0
|
@@ -6,11 +6,34 @@ import { ForkManager } from "../fork/manager.js";
|
|
|
6
6
|
import { ForkServer } from "../fork/server.js";
|
|
7
7
|
import { LocalNodeManager } from "../node/LocalNodeManager.js";
|
|
8
8
|
import { AccountManager } from "../core/AccountManager.js";
|
|
9
|
+
import { logger } from "../ui/index.js";
|
|
9
10
|
import type { LocalTestOptions } from "../types/config.js";
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Context returned by {@link setupLocalTesting}.
|
|
14
|
+
*
|
|
15
|
+
* Replaces the module-scoped singletons that previously tracked the
|
|
16
|
+
* "current" local node / fork server / fork manager. Each invocation now
|
|
17
|
+
* owns its own handles, so two parallel `setupLocalTesting` calls in the
|
|
18
|
+
* same process do not trample each other.
|
|
19
|
+
*
|
|
20
|
+
* @public The `runtime` and `teardown` fields are the supported surface.
|
|
21
|
+
* `localNode`, `forkServer`, and `forkManager` are exposed for
|
|
22
|
+
* escape hatches (e.g. mid-test `forkManager.resetState()`) but
|
|
23
|
+
* their concrete shapes are considered `@internal` until the M5
|
|
24
|
+
* TypeDoc pass formalizes the public API.
|
|
25
|
+
*/
|
|
26
|
+
export interface LocalTestingContext {
|
|
27
|
+
runtime: MovehatRuntime;
|
|
28
|
+
/** @internal */
|
|
29
|
+
localNode?: LocalNodeManager;
|
|
30
|
+
/** @internal */
|
|
31
|
+
forkServer?: ForkServer;
|
|
32
|
+
/** @internal */
|
|
33
|
+
forkManager?: ForkManager;
|
|
34
|
+
/** Stop the local node and/or fork server owned by this context. */
|
|
35
|
+
teardown: () => Promise<void>;
|
|
36
|
+
}
|
|
14
37
|
|
|
15
38
|
/**
|
|
16
39
|
* Setup a local testing environment with either a local node or fork server
|
|
@@ -31,42 +54,65 @@ let currentLocalNode: LocalNodeManager | null = null;
|
|
|
31
54
|
* 5. Returns runtime for reading data
|
|
32
55
|
*
|
|
33
56
|
* @param options Configuration options for local testing
|
|
34
|
-
* @returns
|
|
57
|
+
* @returns LocalTestingContext with runtime and a teardown closure
|
|
35
58
|
*
|
|
36
59
|
* @example
|
|
37
60
|
* ```typescript
|
|
38
61
|
* // Local node mode (default) - Full blockchain, can deploy
|
|
39
|
-
* const
|
|
62
|
+
* const ctx = await setupLocalTesting({
|
|
40
63
|
* mode: 'local-node',
|
|
41
64
|
* accountLabels: ['alice', 'bob'],
|
|
42
|
-
* autoDeploy: ['counter'], //
|
|
43
|
-
* });
|
|
44
|
-
*
|
|
45
|
-
* // Fork mode - Fast, read-only
|
|
46
|
-
* const mh = await setupLocalTesting({
|
|
47
|
-
* mode: 'fork',
|
|
48
|
-
* accountLabels: ['alice', 'bob'],
|
|
49
|
-
* autoDeploy: ['counter'], // ā Won't work (fork can't deploy)
|
|
65
|
+
* autoDeploy: ['counter'], // works
|
|
50
66
|
* });
|
|
67
|
+
* // ...use ctx.runtime...
|
|
68
|
+
* await ctx.teardown();
|
|
51
69
|
* ```
|
|
52
70
|
*/
|
|
53
71
|
export async function setupLocalTesting(
|
|
54
72
|
options: LocalTestOptions = {}
|
|
55
|
-
): Promise<
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
const defaultBalance = options.defaultBalance || 100_000_000; // 100 APT
|
|
73
|
+
): Promise<LocalTestingContext> {
|
|
74
|
+
const mode = options.mode || 'local-node';
|
|
75
|
+
const autoFund = options.autoFund !== false;
|
|
76
|
+
const defaultBalance = options.defaultBalance || 100_000_000;
|
|
60
77
|
const accountLabels = options.accountLabels || ["deployer", "alice", "bob"];
|
|
61
78
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
logger.newline();
|
|
80
|
+
logger.step("Setting up local testing environment...");
|
|
81
|
+
logger.plain(` Mode: ${mode}`);
|
|
82
|
+
logger.plain(` Accounts: ${accountLabels.join(", ")}`);
|
|
83
|
+
logger.newline();
|
|
65
84
|
|
|
66
85
|
if (mode === 'local-node') {
|
|
67
|
-
|
|
86
|
+
const { runtime, localNode } = await setupWithLocalNode(
|
|
87
|
+
options, accountLabels, autoFund, defaultBalance
|
|
88
|
+
);
|
|
89
|
+
return {
|
|
90
|
+
runtime,
|
|
91
|
+
localNode,
|
|
92
|
+
teardown: async () => {
|
|
93
|
+
logger.newline();
|
|
94
|
+
logger.step("Stopping local testing environment...");
|
|
95
|
+
await localNode.stop();
|
|
96
|
+
logger.success("Environment stopped");
|
|
97
|
+
logger.newline();
|
|
98
|
+
},
|
|
99
|
+
};
|
|
68
100
|
} else {
|
|
69
|
-
|
|
101
|
+
const { runtime, forkServer, forkManager } = await setupWithFork(
|
|
102
|
+
options, accountLabels, autoFund, defaultBalance
|
|
103
|
+
);
|
|
104
|
+
return {
|
|
105
|
+
runtime,
|
|
106
|
+
forkServer,
|
|
107
|
+
forkManager,
|
|
108
|
+
teardown: async () => {
|
|
109
|
+
logger.newline();
|
|
110
|
+
logger.step("Stopping local testing environment...");
|
|
111
|
+
await forkServer.stop();
|
|
112
|
+
logger.success("Environment stopped");
|
|
113
|
+
logger.newline();
|
|
114
|
+
},
|
|
115
|
+
};
|
|
70
116
|
}
|
|
71
117
|
}
|
|
72
118
|
|
|
@@ -78,15 +124,14 @@ async function setupWithLocalNode(
|
|
|
78
124
|
accountLabels: readonly string[],
|
|
79
125
|
autoFund: boolean,
|
|
80
126
|
defaultBalance: number
|
|
81
|
-
): Promise<MovehatRuntime> {
|
|
127
|
+
): Promise<{ runtime: MovehatRuntime; localNode: LocalNodeManager }> {
|
|
82
128
|
const nodeTestDir = options.nodeTestDir || join(process.cwd(), ".movehat", "local-node");
|
|
83
|
-
const nodeForceRestart = options.nodeForceRestart !== false;
|
|
129
|
+
const nodeForceRestart = options.nodeForceRestart !== false;
|
|
84
130
|
const nodeFaucetPort = options.nodeFaucetPort || 8081;
|
|
85
131
|
const nodeApiPort = options.nodeApiPort || 8080;
|
|
86
132
|
const nodeReadyPort = options.nodeReadyPort || 8070;
|
|
87
133
|
const nodeSilent = options.nodeSilent ?? false;
|
|
88
134
|
|
|
89
|
-
// 1. Start local node
|
|
90
135
|
const localNode = new LocalNodeManager({
|
|
91
136
|
testDir: nodeTestDir,
|
|
92
137
|
forceRestart: nodeForceRestart,
|
|
@@ -96,88 +141,96 @@ async function setupWithLocalNode(
|
|
|
96
141
|
silent: nodeSilent,
|
|
97
142
|
});
|
|
98
143
|
|
|
99
|
-
currentLocalNode = localNode;
|
|
100
|
-
|
|
101
144
|
const nodeInfo = await localNode.start();
|
|
102
145
|
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
146
|
+
// Once the node is up, every later step (account creation, funding,
|
|
147
|
+
// runtime init, autoDeploy) is fallible. If any of them throws we
|
|
148
|
+
// must stop the node we just started ā otherwise the child process
|
|
149
|
+
// leaks and port 8080 stays bound until the OS reaps it (manifests as
|
|
150
|
+
// "Movement command failed" on the next test:example run).
|
|
151
|
+
try {
|
|
152
|
+
logger.step(`Generating ${accountLabels.length} test accounts...`);
|
|
153
|
+
const accounts = AccountManager.createBatch(accountLabels);
|
|
154
|
+
|
|
155
|
+
for (const [label, account] of Object.entries(accounts)) {
|
|
156
|
+
logger.plain(` ${label}: ${account.accountAddress.toString()}`);
|
|
157
|
+
}
|
|
158
|
+
logger.newline();
|
|
111
159
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
160
|
+
if (autoFund) {
|
|
161
|
+
const accountsList = Object.values(accounts);
|
|
162
|
+
await localNode.fundAccounts(accountsList, defaultBalance);
|
|
163
|
+
}
|
|
117
164
|
|
|
118
|
-
|
|
119
|
-
console.log(`āļø Initializing runtime for local network...`);
|
|
165
|
+
logger.step("Initializing runtime for local network...");
|
|
120
166
|
|
|
121
|
-
|
|
167
|
+
const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
|
|
122
168
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
169
|
+
if (!deployerPrivateKey) {
|
|
170
|
+
throw new Error("Failed to get deployer private key");
|
|
171
|
+
}
|
|
126
172
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
173
|
+
const runtime = await initRuntime({
|
|
174
|
+
network: "local",
|
|
175
|
+
configOverride: {
|
|
176
|
+
networks: {
|
|
177
|
+
local: {
|
|
178
|
+
url: `${nodeInfo.rpcUrl}/v1`,
|
|
179
|
+
chainId: "local",
|
|
180
|
+
},
|
|
134
181
|
},
|
|
182
|
+
accounts: [deployerPrivateKey],
|
|
135
183
|
},
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
logger.success("Runtime initialized");
|
|
187
|
+
logger.newline();
|
|
188
|
+
|
|
189
|
+
if (options.autoDeploy && options.autoDeploy.length > 0) {
|
|
190
|
+
logger.step(`Auto-deploying ${options.autoDeploy.length} module(s)...`);
|
|
191
|
+
|
|
192
|
+
const previousRedeploy = process.env.MH_CLI_REDEPLOY;
|
|
193
|
+
process.env.MH_CLI_REDEPLOY = 'true';
|
|
194
|
+
|
|
195
|
+
try {
|
|
196
|
+
for (const moduleName of options.autoDeploy) {
|
|
197
|
+
try {
|
|
198
|
+
logger.plain(` Deploying ${moduleName}...`);
|
|
199
|
+
await runtime.deployContract(moduleName);
|
|
200
|
+
logger.success(`${moduleName} deployed`, 2);
|
|
201
|
+
} catch (error) {
|
|
202
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
203
|
+
logger.error(`Failed to deploy ${moduleName}: ${msg}`, 2);
|
|
204
|
+
throw error;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
} finally {
|
|
208
|
+
if (previousRedeploy === undefined) {
|
|
209
|
+
delete process.env.MH_CLI_REDEPLOY;
|
|
210
|
+
} else {
|
|
211
|
+
process.env.MH_CLI_REDEPLOY = previousRedeploy;
|
|
159
212
|
}
|
|
160
213
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (previousRedeploy === undefined) {
|
|
164
|
-
delete process.env.MH_CLI_REDEPLOY;
|
|
165
|
-
} else {
|
|
166
|
-
process.env.MH_CLI_REDEPLOY = previousRedeploy;
|
|
167
|
-
}
|
|
214
|
+
|
|
215
|
+
logger.newline();
|
|
168
216
|
}
|
|
169
217
|
|
|
170
|
-
|
|
218
|
+
logger.success("Local testing environment ready!");
|
|
219
|
+
logger.newline();
|
|
220
|
+
logger.plain(` Mode: local-node`);
|
|
221
|
+
logger.plain(` RPC: ${nodeInfo.rpcUrl}/v1`);
|
|
222
|
+
logger.plain(` Faucet: ${nodeInfo.faucetUrl}`);
|
|
223
|
+
logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
224
|
+
logger.plain(` Balance per account: ${defaultBalance / 100_000_000} APT`);
|
|
225
|
+
logger.newline();
|
|
226
|
+
|
|
227
|
+
return { runtime, localNode };
|
|
228
|
+
} catch (error) {
|
|
229
|
+
// Best-effort cleanup. Swallow the stop() error so the original
|
|
230
|
+
// setup failure surfaces unchanged.
|
|
231
|
+
await localNode.stop().catch(() => {});
|
|
232
|
+
throw error;
|
|
171
233
|
}
|
|
172
|
-
|
|
173
|
-
console.log(`ā
Local testing environment ready!\n`);
|
|
174
|
-
console.log(` Mode: local-node`);
|
|
175
|
-
console.log(` RPC: ${nodeInfo.rpcUrl}/v1`);
|
|
176
|
-
console.log(` Faucet: ${nodeInfo.faucetUrl}`);
|
|
177
|
-
console.log(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
178
|
-
console.log(` Balance per account: ${defaultBalance / 100_000_000} APT\n`);
|
|
179
|
-
|
|
180
|
-
return runtime;
|
|
181
234
|
}
|
|
182
235
|
|
|
183
236
|
/**
|
|
@@ -188,148 +241,114 @@ async function setupWithFork(
|
|
|
188
241
|
accountLabels: readonly string[],
|
|
189
242
|
autoFund: boolean,
|
|
190
243
|
defaultBalance: number
|
|
191
|
-
): Promise<MovehatRuntime> {
|
|
244
|
+
): Promise<{ runtime: MovehatRuntime; forkServer: ForkServer; forkManager: ForkManager }> {
|
|
192
245
|
const forkNetwork = options.forkNetwork || "testnet";
|
|
193
246
|
const forkName = options.forkName || "test-local";
|
|
194
247
|
const forkPort = options.forkPort || 8080;
|
|
195
|
-
const forkResetState = options.forkResetState !== false;
|
|
248
|
+
const forkResetState = options.forkResetState !== false;
|
|
196
249
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
250
|
+
logger.plain(` Fork network: ${forkNetwork}`);
|
|
251
|
+
logger.plain(` Fork name: ${forkName}`);
|
|
252
|
+
logger.plain(` Server port: ${forkPort}`);
|
|
253
|
+
logger.newline();
|
|
200
254
|
|
|
201
|
-
// Warn about auto-deploy in fork mode
|
|
202
255
|
if (options.autoDeploy && options.autoDeploy.length > 0) {
|
|
203
|
-
|
|
204
|
-
|
|
256
|
+
logger.warning("Auto-deploy doesn't work in fork mode (read-only).");
|
|
257
|
+
logger.plain(" Switch to 'local-node' mode for deployment support.");
|
|
258
|
+
logger.newline();
|
|
205
259
|
}
|
|
206
260
|
|
|
207
|
-
// 1. Setup fork
|
|
208
261
|
const forkPath = join(process.cwd(), ".movehat", "forks", forkName);
|
|
209
262
|
const forkManager = new ForkManager(forkPath);
|
|
210
|
-
currentForkManager = forkManager;
|
|
211
263
|
|
|
212
264
|
const forkExists = existsSync(join(forkPath, "metadata.json"));
|
|
213
265
|
|
|
214
266
|
if (!forkExists) {
|
|
215
|
-
|
|
267
|
+
logger.step(`Creating fork from ${forkNetwork}...`);
|
|
216
268
|
const testnetRpc = "https://testnet.movementnetwork.xyz/v1";
|
|
217
|
-
await forkManager.initialize(testnetRpc, forkNetwork);
|
|
218
|
-
|
|
269
|
+
await forkManager.initialize(testnetRpc, forkNetwork, options.forkApiKey);
|
|
270
|
+
logger.success(`Fork created at ${forkPath}`);
|
|
271
|
+
logger.newline();
|
|
219
272
|
} else {
|
|
220
|
-
|
|
273
|
+
logger.success(`Loading existing fork from ${forkPath}`);
|
|
274
|
+
// setApiKey BEFORE load() so the reconstructed MovementApiClient
|
|
275
|
+
// picks up the header. load() rebuilds the client using current
|
|
276
|
+
// apiKey state.
|
|
277
|
+
if (options.forkApiKey !== undefined) {
|
|
278
|
+
forkManager.setApiKey(options.forkApiKey);
|
|
279
|
+
}
|
|
221
280
|
forkManager.load();
|
|
222
281
|
|
|
223
282
|
if (forkResetState) {
|
|
224
|
-
|
|
283
|
+
logger.step("Resetting fork state...");
|
|
225
284
|
await forkManager.resetState();
|
|
226
285
|
}
|
|
227
286
|
|
|
228
|
-
|
|
287
|
+
logger.newline();
|
|
229
288
|
}
|
|
230
289
|
|
|
231
|
-
|
|
232
|
-
console.log(`š Starting fork server on port ${forkPort}...`);
|
|
290
|
+
logger.step(`Starting fork server on port ${forkPort}...`);
|
|
233
291
|
const forkServer = new ForkServer(forkPath, forkPort);
|
|
234
|
-
currentForkServer = forkServer;
|
|
235
292
|
|
|
236
293
|
await forkServer.start();
|
|
237
|
-
|
|
294
|
+
logger.success(`Fork server running at http://localhost:${forkPort}`);
|
|
295
|
+
logger.newline();
|
|
238
296
|
|
|
239
|
-
|
|
297
|
+
// Same cleanup-on-failure pattern as setupWithLocalNode: once the
|
|
298
|
+
// fork server is listening, any later throw must stop the server or
|
|
299
|
+
// we leak the listener.
|
|
300
|
+
try {
|
|
301
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
240
302
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
const accounts = AccountManager.createBatch(accountLabels);
|
|
303
|
+
logger.step(`Generating ${accountLabels.length} test accounts...`);
|
|
304
|
+
const accounts = AccountManager.createBatch(accountLabels);
|
|
244
305
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
306
|
+
for (const [label, account] of Object.entries(accounts)) {
|
|
307
|
+
logger.plain(` ${label}: ${account.accountAddress.toString()}`);
|
|
308
|
+
}
|
|
309
|
+
logger.newline();
|
|
249
310
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
}
|
|
311
|
+
if (autoFund) {
|
|
312
|
+
const addresses = Object.values(accounts).map((acc) =>
|
|
313
|
+
acc.accountAddress.toString()
|
|
314
|
+
);
|
|
315
|
+
await forkManager.fundMultipleAccounts(addresses, defaultBalance);
|
|
316
|
+
}
|
|
257
317
|
|
|
258
|
-
|
|
259
|
-
console.log(`āļø Initializing runtime for local network...`);
|
|
318
|
+
logger.step("Initializing runtime for local network...");
|
|
260
319
|
|
|
261
|
-
|
|
320
|
+
const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
|
|
262
321
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
322
|
+
if (!deployerPrivateKey) {
|
|
323
|
+
throw new Error("Failed to get deployer private key");
|
|
324
|
+
}
|
|
266
325
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
326
|
+
const runtime = await initRuntime({
|
|
327
|
+
network: "local",
|
|
328
|
+
configOverride: {
|
|
329
|
+
networks: {
|
|
330
|
+
local: {
|
|
331
|
+
url: `http://localhost:${forkPort}/v1`,
|
|
332
|
+
chainId: "local",
|
|
333
|
+
},
|
|
274
334
|
},
|
|
335
|
+
accounts: [deployerPrivateKey],
|
|
275
336
|
},
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
*/
|
|
293
|
-
export async function stopLocalTesting(): Promise<void> {
|
|
294
|
-
console.log(`\nš Stopping local testing environment...`);
|
|
295
|
-
|
|
296
|
-
// Stop local node if running
|
|
297
|
-
if (currentLocalNode) {
|
|
298
|
-
await currentLocalNode.stop();
|
|
299
|
-
currentLocalNode = null;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
// Stop fork server if running
|
|
303
|
-
if (currentForkServer) {
|
|
304
|
-
await currentForkServer.stop();
|
|
305
|
-
currentForkServer = null;
|
|
306
|
-
currentForkManager = null;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
console.log(`ā Environment stopped\n`);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
/**
|
|
313
|
-
* Get the current fork manager (if fork mode is active)
|
|
314
|
-
*/
|
|
315
|
-
export function getCurrentForkManager(): ForkManager | null {
|
|
316
|
-
return currentForkManager;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Get the current local node (if local node mode is active)
|
|
321
|
-
*/
|
|
322
|
-
export function getCurrentLocalNode(): LocalNodeManager | null {
|
|
323
|
-
return currentLocalNode;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* Reset fork state to initial snapshot (fork mode only)
|
|
328
|
-
*/
|
|
329
|
-
export async function resetForkState(): Promise<void> {
|
|
330
|
-
if (currentForkManager) {
|
|
331
|
-
await currentForkManager.resetState();
|
|
332
|
-
} else {
|
|
333
|
-
console.warn("Warning: No active fork manager to reset");
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
logger.success("Runtime initialized");
|
|
340
|
+
logger.newline();
|
|
341
|
+
logger.success("Local testing environment ready!");
|
|
342
|
+
logger.newline();
|
|
343
|
+
logger.plain(` Mode: fork (read-only)`);
|
|
344
|
+
logger.plain(` RPC: http://localhost:${forkPort}/v1`);
|
|
345
|
+
logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
346
|
+
logger.plain(` Balance per account: ${defaultBalance / 100_000_000} APT`);
|
|
347
|
+
logger.newline();
|
|
348
|
+
|
|
349
|
+
return { runtime, forkServer, forkManager };
|
|
350
|
+
} catch (error) {
|
|
351
|
+
await forkServer.stop().catch(() => {});
|
|
352
|
+
throw error;
|
|
334
353
|
}
|
|
335
354
|
}
|