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