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
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
import type { MovehatRuntime } from "../types/runtime.js";
|
|
2
2
|
import { ForkManager } from "../fork/manager.js";
|
|
3
|
+
import { ForkServer } from "../fork/server.js";
|
|
3
4
|
import { LocalNodeManager } from "../node/LocalNodeManager.js";
|
|
4
5
|
import type { LocalTestOptions } from "../types/config.js";
|
|
6
|
+
/**
|
|
7
|
+
* Context returned by {@link setupLocalTesting}.
|
|
8
|
+
*
|
|
9
|
+
* Replaces the module-scoped singletons that previously tracked the
|
|
10
|
+
* "current" local node / fork server / fork manager. Each invocation now
|
|
11
|
+
* owns its own handles, so two parallel `setupLocalTesting` calls in the
|
|
12
|
+
* same process do not trample each other.
|
|
13
|
+
*
|
|
14
|
+
* @public The `runtime` and `teardown` fields are the supported surface.
|
|
15
|
+
* `localNode`, `forkServer`, and `forkManager` are exposed for
|
|
16
|
+
* escape hatches (e.g. mid-test `forkManager.resetState()`) but
|
|
17
|
+
* their concrete shapes are considered `@internal` until the M5
|
|
18
|
+
* TypeDoc pass formalizes the public API.
|
|
19
|
+
*/
|
|
20
|
+
export interface LocalTestingContext {
|
|
21
|
+
runtime: MovehatRuntime;
|
|
22
|
+
/** @internal */
|
|
23
|
+
localNode?: LocalNodeManager;
|
|
24
|
+
/** @internal */
|
|
25
|
+
forkServer?: ForkServer;
|
|
26
|
+
/** @internal */
|
|
27
|
+
forkManager?: ForkManager;
|
|
28
|
+
/** Stop the local node and/or fork server owned by this context. */
|
|
29
|
+
teardown: () => Promise<void>;
|
|
30
|
+
}
|
|
5
31
|
/**
|
|
6
32
|
* Setup a local testing environment with either a local node or fork server
|
|
7
33
|
*
|
|
@@ -21,40 +47,19 @@ import type { LocalTestOptions } from "../types/config.js";
|
|
|
21
47
|
* 5. Returns runtime for reading data
|
|
22
48
|
*
|
|
23
49
|
* @param options Configuration options for local testing
|
|
24
|
-
* @returns
|
|
50
|
+
* @returns LocalTestingContext with runtime and a teardown closure
|
|
25
51
|
*
|
|
26
52
|
* @example
|
|
27
53
|
* ```typescript
|
|
28
54
|
* // Local node mode (default) - Full blockchain, can deploy
|
|
29
|
-
* const
|
|
55
|
+
* const ctx = await setupLocalTesting({
|
|
30
56
|
* mode: 'local-node',
|
|
31
57
|
* accountLabels: ['alice', 'bob'],
|
|
32
|
-
* autoDeploy: ['counter'], //
|
|
33
|
-
* });
|
|
34
|
-
*
|
|
35
|
-
* // Fork mode - Fast, read-only
|
|
36
|
-
* const mh = await setupLocalTesting({
|
|
37
|
-
* mode: 'fork',
|
|
38
|
-
* accountLabels: ['alice', 'bob'],
|
|
39
|
-
* autoDeploy: ['counter'], // ❌ Won't work (fork can't deploy)
|
|
58
|
+
* autoDeploy: ['counter'], // works
|
|
40
59
|
* });
|
|
60
|
+
* // ...use ctx.runtime...
|
|
61
|
+
* await ctx.teardown();
|
|
41
62
|
* ```
|
|
42
63
|
*/
|
|
43
|
-
export declare function setupLocalTesting(options?: LocalTestOptions): Promise<
|
|
44
|
-
/**
|
|
45
|
-
* Stop the local testing environment (cleanup)
|
|
46
|
-
*/
|
|
47
|
-
export declare function stopLocalTesting(): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Get the current fork manager (if fork mode is active)
|
|
50
|
-
*/
|
|
51
|
-
export declare function getCurrentForkManager(): ForkManager | null;
|
|
52
|
-
/**
|
|
53
|
-
* Get the current local node (if local node mode is active)
|
|
54
|
-
*/
|
|
55
|
-
export declare function getCurrentLocalNode(): LocalNodeManager | null;
|
|
56
|
-
/**
|
|
57
|
-
* Reset fork state to initial snapshot (fork mode only)
|
|
58
|
-
*/
|
|
59
|
-
export declare function resetForkState(): Promise<void>;
|
|
64
|
+
export declare function setupLocalTesting(options?: LocalTestOptions): Promise<LocalTestingContext>;
|
|
60
65
|
//# sourceMappingURL=setupLocalTesting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupLocalTesting.d.ts","sourceRoot":"","sources":["../../src/helpers/setupLocalTesting.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"setupLocalTesting.d.ts","sourceRoot":"","sources":["../../src/helpers/setupLocalTesting.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,CAAC;IACxB,gBAAgB;IAChB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gBAAgB;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA4C9B"}
|
|
@@ -5,9 +5,7 @@ import { ForkManager } from "../fork/manager.js";
|
|
|
5
5
|
import { ForkServer } from "../fork/server.js";
|
|
6
6
|
import { LocalNodeManager } from "../node/LocalNodeManager.js";
|
|
7
7
|
import { AccountManager } from "../core/AccountManager.js";
|
|
8
|
-
|
|
9
|
-
let currentForkManager = null;
|
|
10
|
-
let currentLocalNode = null;
|
|
8
|
+
import { logger } from "../ui/index.js";
|
|
11
9
|
/**
|
|
12
10
|
* Setup a local testing environment with either a local node or fork server
|
|
13
11
|
*
|
|
@@ -27,39 +25,58 @@ let currentLocalNode = null;
|
|
|
27
25
|
* 5. Returns runtime for reading data
|
|
28
26
|
*
|
|
29
27
|
* @param options Configuration options for local testing
|
|
30
|
-
* @returns
|
|
28
|
+
* @returns LocalTestingContext with runtime and a teardown closure
|
|
31
29
|
*
|
|
32
30
|
* @example
|
|
33
31
|
* ```typescript
|
|
34
32
|
* // Local node mode (default) - Full blockchain, can deploy
|
|
35
|
-
* const
|
|
33
|
+
* const ctx = await setupLocalTesting({
|
|
36
34
|
* mode: 'local-node',
|
|
37
35
|
* accountLabels: ['alice', 'bob'],
|
|
38
|
-
* autoDeploy: ['counter'], //
|
|
39
|
-
* });
|
|
40
|
-
*
|
|
41
|
-
* // Fork mode - Fast, read-only
|
|
42
|
-
* const mh = await setupLocalTesting({
|
|
43
|
-
* mode: 'fork',
|
|
44
|
-
* accountLabels: ['alice', 'bob'],
|
|
45
|
-
* autoDeploy: ['counter'], // ❌ Won't work (fork can't deploy)
|
|
36
|
+
* autoDeploy: ['counter'], // works
|
|
46
37
|
* });
|
|
38
|
+
* // ...use ctx.runtime...
|
|
39
|
+
* await ctx.teardown();
|
|
47
40
|
* ```
|
|
48
41
|
*/
|
|
49
42
|
export async function setupLocalTesting(options = {}) {
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
const defaultBalance = options.defaultBalance || 100_000_000; // 100 APT
|
|
43
|
+
const mode = options.mode || 'local-node';
|
|
44
|
+
const autoFund = options.autoFund !== false;
|
|
45
|
+
const defaultBalance = options.defaultBalance || 100_000_000;
|
|
54
46
|
const accountLabels = options.accountLabels || ["deployer", "alice", "bob"];
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
47
|
+
logger.newline();
|
|
48
|
+
logger.step("Setting up local testing environment...");
|
|
49
|
+
logger.plain(` Mode: ${mode}`);
|
|
50
|
+
logger.plain(` Accounts: ${accountLabels.join(", ")}`);
|
|
51
|
+
logger.newline();
|
|
58
52
|
if (mode === 'local-node') {
|
|
59
|
-
|
|
53
|
+
const { runtime, localNode } = await setupWithLocalNode(options, accountLabels, autoFund, defaultBalance);
|
|
54
|
+
return {
|
|
55
|
+
runtime,
|
|
56
|
+
localNode,
|
|
57
|
+
teardown: async () => {
|
|
58
|
+
logger.newline();
|
|
59
|
+
logger.step("Stopping local testing environment...");
|
|
60
|
+
await localNode.stop();
|
|
61
|
+
logger.success("Environment stopped");
|
|
62
|
+
logger.newline();
|
|
63
|
+
},
|
|
64
|
+
};
|
|
60
65
|
}
|
|
61
66
|
else {
|
|
62
|
-
|
|
67
|
+
const { runtime, forkServer, forkManager } = await setupWithFork(options, accountLabels, autoFund, defaultBalance);
|
|
68
|
+
return {
|
|
69
|
+
runtime,
|
|
70
|
+
forkServer,
|
|
71
|
+
forkManager,
|
|
72
|
+
teardown: async () => {
|
|
73
|
+
logger.newline();
|
|
74
|
+
logger.step("Stopping local testing environment...");
|
|
75
|
+
await forkServer.stop();
|
|
76
|
+
logger.success("Environment stopped");
|
|
77
|
+
logger.newline();
|
|
78
|
+
},
|
|
79
|
+
};
|
|
63
80
|
}
|
|
64
81
|
}
|
|
65
82
|
/**
|
|
@@ -67,12 +84,11 @@ export async function setupLocalTesting(options = {}) {
|
|
|
67
84
|
*/
|
|
68
85
|
async function setupWithLocalNode(options, accountLabels, autoFund, defaultBalance) {
|
|
69
86
|
const nodeTestDir = options.nodeTestDir || join(process.cwd(), ".movehat", "local-node");
|
|
70
|
-
const nodeForceRestart = options.nodeForceRestart !== false;
|
|
87
|
+
const nodeForceRestart = options.nodeForceRestart !== false;
|
|
71
88
|
const nodeFaucetPort = options.nodeFaucetPort || 8081;
|
|
72
89
|
const nodeApiPort = options.nodeApiPort || 8080;
|
|
73
90
|
const nodeReadyPort = options.nodeReadyPort || 8070;
|
|
74
91
|
const nodeSilent = options.nodeSilent ?? false;
|
|
75
|
-
// 1. Start local node
|
|
76
92
|
const localNode = new LocalNodeManager({
|
|
77
93
|
testDir: nodeTestDir,
|
|
78
94
|
forceRestart: nodeForceRestart,
|
|
@@ -81,76 +97,86 @@ async function setupWithLocalNode(options, accountLabels, autoFund, defaultBalan
|
|
|
81
97
|
readyPort: nodeReadyPort,
|
|
82
98
|
silent: nodeSilent,
|
|
83
99
|
});
|
|
84
|
-
currentLocalNode = localNode;
|
|
85
100
|
const nodeInfo = await localNode.start();
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
101
|
+
// Once the node is up, every later step (account creation, funding,
|
|
102
|
+
// runtime init, autoDeploy) is fallible. If any of them throws we
|
|
103
|
+
// must stop the node we just started — otherwise the child process
|
|
104
|
+
// leaks and port 8080 stays bound until the OS reaps it (manifests as
|
|
105
|
+
// "Movement command failed" on the next test:example run).
|
|
106
|
+
try {
|
|
107
|
+
logger.step(`Generating ${accountLabels.length} test accounts...`);
|
|
108
|
+
const accounts = AccountManager.createBatch(accountLabels);
|
|
109
|
+
for (const [label, account] of Object.entries(accounts)) {
|
|
110
|
+
logger.plain(` ${label}: ${account.accountAddress.toString()}`);
|
|
111
|
+
}
|
|
112
|
+
logger.newline();
|
|
113
|
+
if (autoFund) {
|
|
114
|
+
const accountsList = Object.values(accounts);
|
|
115
|
+
await localNode.fundAccounts(accountsList, defaultBalance);
|
|
116
|
+
}
|
|
117
|
+
logger.step("Initializing runtime for local network...");
|
|
118
|
+
const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
|
|
119
|
+
if (!deployerPrivateKey) {
|
|
120
|
+
throw new Error("Failed to get deployer private key");
|
|
121
|
+
}
|
|
122
|
+
const runtime = await initRuntime({
|
|
123
|
+
network: "local",
|
|
124
|
+
configOverride: {
|
|
125
|
+
networks: {
|
|
126
|
+
local: {
|
|
127
|
+
url: `${nodeInfo.rpcUrl}/v1`,
|
|
128
|
+
chainId: "local",
|
|
129
|
+
},
|
|
111
130
|
},
|
|
131
|
+
accounts: [deployerPrivateKey],
|
|
112
132
|
},
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
throw error;
|
|
133
|
+
});
|
|
134
|
+
logger.success("Runtime initialized");
|
|
135
|
+
logger.newline();
|
|
136
|
+
if (options.autoDeploy && options.autoDeploy.length > 0) {
|
|
137
|
+
logger.step(`Auto-deploying ${options.autoDeploy.length} module(s)...`);
|
|
138
|
+
const previousRedeploy = process.env.MH_CLI_REDEPLOY;
|
|
139
|
+
process.env.MH_CLI_REDEPLOY = 'true';
|
|
140
|
+
try {
|
|
141
|
+
for (const moduleName of options.autoDeploy) {
|
|
142
|
+
try {
|
|
143
|
+
logger.plain(` Deploying ${moduleName}...`);
|
|
144
|
+
await runtime.deployContract(moduleName);
|
|
145
|
+
logger.success(`${moduleName} deployed`, 2);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
149
|
+
logger.error(`Failed to deploy ${moduleName}: ${msg}`, 2);
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
133
152
|
}
|
|
134
153
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
process.env.MH_CLI_REDEPLOY = previousRedeploy;
|
|
154
|
+
finally {
|
|
155
|
+
if (previousRedeploy === undefined) {
|
|
156
|
+
delete process.env.MH_CLI_REDEPLOY;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
process.env.MH_CLI_REDEPLOY = previousRedeploy;
|
|
160
|
+
}
|
|
143
161
|
}
|
|
162
|
+
logger.newline();
|
|
144
163
|
}
|
|
145
|
-
|
|
164
|
+
logger.success("Local testing environment ready!");
|
|
165
|
+
logger.newline();
|
|
166
|
+
logger.plain(` Mode: local-node`);
|
|
167
|
+
logger.plain(` RPC: ${nodeInfo.rpcUrl}/v1`);
|
|
168
|
+
logger.plain(` Faucet: ${nodeInfo.faucetUrl}`);
|
|
169
|
+
logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
170
|
+
logger.plain(` Balance per account: ${defaultBalance / 100_000_000} APT`);
|
|
171
|
+
logger.newline();
|
|
172
|
+
return { runtime, localNode };
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
// Best-effort cleanup. Swallow the stop() error so the original
|
|
176
|
+
// setup failure surfaces unchanged.
|
|
177
|
+
await localNode.stop().catch(() => { });
|
|
178
|
+
throw error;
|
|
146
179
|
}
|
|
147
|
-
console.log(`✅ Local testing environment ready!\n`);
|
|
148
|
-
console.log(` Mode: local-node`);
|
|
149
|
-
console.log(` RPC: ${nodeInfo.rpcUrl}/v1`);
|
|
150
|
-
console.log(` Faucet: ${nodeInfo.faucetUrl}`);
|
|
151
|
-
console.log(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
152
|
-
console.log(` Balance per account: ${defaultBalance / 100_000_000} APT\n`);
|
|
153
|
-
return runtime;
|
|
154
180
|
}
|
|
155
181
|
/**
|
|
156
182
|
* Setup using fork server (read-only)
|
|
@@ -159,119 +185,92 @@ async function setupWithFork(options, accountLabels, autoFund, defaultBalance) {
|
|
|
159
185
|
const forkNetwork = options.forkNetwork || "testnet";
|
|
160
186
|
const forkName = options.forkName || "test-local";
|
|
161
187
|
const forkPort = options.forkPort || 8080;
|
|
162
|
-
const forkResetState = options.forkResetState !== false;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
188
|
+
const forkResetState = options.forkResetState !== false;
|
|
189
|
+
logger.plain(` Fork network: ${forkNetwork}`);
|
|
190
|
+
logger.plain(` Fork name: ${forkName}`);
|
|
191
|
+
logger.plain(` Server port: ${forkPort}`);
|
|
192
|
+
logger.newline();
|
|
167
193
|
if (options.autoDeploy && options.autoDeploy.length > 0) {
|
|
168
|
-
|
|
169
|
-
|
|
194
|
+
logger.warning("Auto-deploy doesn't work in fork mode (read-only).");
|
|
195
|
+
logger.plain(" Switch to 'local-node' mode for deployment support.");
|
|
196
|
+
logger.newline();
|
|
170
197
|
}
|
|
171
|
-
// 1. Setup fork
|
|
172
198
|
const forkPath = join(process.cwd(), ".movehat", "forks", forkName);
|
|
173
199
|
const forkManager = new ForkManager(forkPath);
|
|
174
|
-
currentForkManager = forkManager;
|
|
175
200
|
const forkExists = existsSync(join(forkPath, "metadata.json"));
|
|
176
201
|
if (!forkExists) {
|
|
177
|
-
|
|
202
|
+
logger.step(`Creating fork from ${forkNetwork}...`);
|
|
178
203
|
const testnetRpc = "https://testnet.movementnetwork.xyz/v1";
|
|
179
|
-
await forkManager.initialize(testnetRpc, forkNetwork);
|
|
180
|
-
|
|
204
|
+
await forkManager.initialize(testnetRpc, forkNetwork, options.forkApiKey);
|
|
205
|
+
logger.success(`Fork created at ${forkPath}`);
|
|
206
|
+
logger.newline();
|
|
181
207
|
}
|
|
182
208
|
else {
|
|
183
|
-
|
|
209
|
+
logger.success(`Loading existing fork from ${forkPath}`);
|
|
210
|
+
// setApiKey BEFORE load() so the reconstructed MovementApiClient
|
|
211
|
+
// picks up the header. load() rebuilds the client using current
|
|
212
|
+
// apiKey state.
|
|
213
|
+
if (options.forkApiKey !== undefined) {
|
|
214
|
+
forkManager.setApiKey(options.forkApiKey);
|
|
215
|
+
}
|
|
184
216
|
forkManager.load();
|
|
185
217
|
if (forkResetState) {
|
|
186
|
-
|
|
218
|
+
logger.step("Resetting fork state...");
|
|
187
219
|
await forkManager.resetState();
|
|
188
220
|
}
|
|
189
|
-
|
|
221
|
+
logger.newline();
|
|
190
222
|
}
|
|
191
|
-
|
|
192
|
-
console.log(`🚀 Starting fork server on port ${forkPort}...`);
|
|
223
|
+
logger.step(`Starting fork server on port ${forkPort}...`);
|
|
193
224
|
const forkServer = new ForkServer(forkPath, forkPort);
|
|
194
|
-
currentForkServer = forkServer;
|
|
195
225
|
await forkServer.start();
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
//
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
226
|
+
logger.success(`Fork server running at http://localhost:${forkPort}`);
|
|
227
|
+
logger.newline();
|
|
228
|
+
// Same cleanup-on-failure pattern as setupWithLocalNode: once the
|
|
229
|
+
// fork server is listening, any later throw must stop the server or
|
|
230
|
+
// we leak the listener.
|
|
231
|
+
try {
|
|
232
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
233
|
+
logger.step(`Generating ${accountLabels.length} test accounts...`);
|
|
234
|
+
const accounts = AccountManager.createBatch(accountLabels);
|
|
235
|
+
for (const [label, account] of Object.entries(accounts)) {
|
|
236
|
+
logger.plain(` ${label}: ${account.accountAddress.toString()}`);
|
|
237
|
+
}
|
|
238
|
+
logger.newline();
|
|
239
|
+
if (autoFund) {
|
|
240
|
+
const addresses = Object.values(accounts).map((acc) => acc.accountAddress.toString());
|
|
241
|
+
await forkManager.fundMultipleAccounts(addresses, defaultBalance);
|
|
242
|
+
}
|
|
243
|
+
logger.step("Initializing runtime for local network...");
|
|
244
|
+
const deployerPrivateKey = AccountManager.exportPrivateKeys(["deployer"]).deployer;
|
|
245
|
+
if (!deployerPrivateKey) {
|
|
246
|
+
throw new Error("Failed to get deployer private key");
|
|
247
|
+
}
|
|
248
|
+
const runtime = await initRuntime({
|
|
249
|
+
network: "local",
|
|
250
|
+
configOverride: {
|
|
251
|
+
networks: {
|
|
252
|
+
local: {
|
|
253
|
+
url: `http://localhost:${forkPort}/v1`,
|
|
254
|
+
chainId: "local",
|
|
255
|
+
},
|
|
223
256
|
},
|
|
257
|
+
accounts: [deployerPrivateKey],
|
|
224
258
|
},
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Stop the local testing environment (cleanup)
|
|
238
|
-
*/
|
|
239
|
-
export async function stopLocalTesting() {
|
|
240
|
-
console.log(`\n🛑 Stopping local testing environment...`);
|
|
241
|
-
// Stop local node if running
|
|
242
|
-
if (currentLocalNode) {
|
|
243
|
-
await currentLocalNode.stop();
|
|
244
|
-
currentLocalNode = null;
|
|
259
|
+
});
|
|
260
|
+
logger.success("Runtime initialized");
|
|
261
|
+
logger.newline();
|
|
262
|
+
logger.success("Local testing environment ready!");
|
|
263
|
+
logger.newline();
|
|
264
|
+
logger.plain(` Mode: fork (read-only)`);
|
|
265
|
+
logger.plain(` RPC: http://localhost:${forkPort}/v1`);
|
|
266
|
+
logger.plain(` Accounts: ${Array.from(accountLabels).join(", ")}`);
|
|
267
|
+
logger.plain(` Balance per account: ${defaultBalance / 100_000_000} APT`);
|
|
268
|
+
logger.newline();
|
|
269
|
+
return { runtime, forkServer, forkManager };
|
|
245
270
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
currentForkServer = null;
|
|
250
|
-
currentForkManager = null;
|
|
251
|
-
}
|
|
252
|
-
console.log(`✓ Environment stopped\n`);
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Get the current fork manager (if fork mode is active)
|
|
256
|
-
*/
|
|
257
|
-
export function getCurrentForkManager() {
|
|
258
|
-
return currentForkManager;
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Get the current local node (if local node mode is active)
|
|
262
|
-
*/
|
|
263
|
-
export function getCurrentLocalNode() {
|
|
264
|
-
return currentLocalNode;
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Reset fork state to initial snapshot (fork mode only)
|
|
268
|
-
*/
|
|
269
|
-
export async function resetForkState() {
|
|
270
|
-
if (currentForkManager) {
|
|
271
|
-
await currentForkManager.resetState();
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
console.warn("Warning: No active fork manager to reset");
|
|
271
|
+
catch (error) {
|
|
272
|
+
await forkServer.stop().catch(() => { });
|
|
273
|
+
throw error;
|
|
275
274
|
}
|
|
276
275
|
}
|
|
277
276
|
//# sourceMappingURL=setupLocalTesting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupLocalTesting.js","sourceRoot":"","sources":["../../src/helpers/setupLocalTesting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"setupLocalTesting.js","sourceRoot":"","sources":["../../src/helpers/setupLocalTesting.ts"],"names":[],"mappings":"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"}
|