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
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { MovehatRuntime } from "../types/runtime.js";
|
|
2
|
+
import type { LocalNodeManager } from "../node/LocalNodeManager.js";
|
|
3
|
+
import type { ForkServer } from "../fork/server.js";
|
|
4
|
+
import type { ForkManager } from "../fork/manager.js";
|
|
5
|
+
import type { LocalTestOptions } from "../types/config.js";
|
|
6
|
+
import type { DeployCodeObjectOptions, UpgradeCodeObjectOptions, CodeObjectInfo, RunViewFunctionOptions, RunMoveScriptOptions, MoveScriptResult } from "../types/harness.js";
|
|
7
|
+
export type HarnessMode = "local" | "fork" | "live";
|
|
8
|
+
/**
|
|
9
|
+
* Hardhat-style testing harness for Movehat.
|
|
10
|
+
*
|
|
11
|
+
* Construct via the static factories — `createLocal`, `createFork`,
|
|
12
|
+
* `createLive` — never via `new Harness(...)`. The returned instance is
|
|
13
|
+
* a Proxy that synchronously throws {@link HarnessDisposedError} on any
|
|
14
|
+
* post-`cleanup()` call to one of the deployment / script / view methods.
|
|
15
|
+
*
|
|
16
|
+
* AccountManager note: the underlying account pool is a process-wide
|
|
17
|
+
* static (see `core/AccountManager.ts`). Two Harness instances in the
|
|
18
|
+
* same process share account labels; this is the same constraint that
|
|
19
|
+
* already governs `setupTestFixture`.
|
|
20
|
+
*/
|
|
21
|
+
export declare class Harness {
|
|
22
|
+
readonly mode: HarnessMode;
|
|
23
|
+
readonly runtime: MovehatRuntime;
|
|
24
|
+
/** @internal */
|
|
25
|
+
readonly localNode?: LocalNodeManager;
|
|
26
|
+
/** @internal */
|
|
27
|
+
readonly forkServer?: ForkServer;
|
|
28
|
+
/** @internal */
|
|
29
|
+
readonly forkManager?: ForkManager;
|
|
30
|
+
private _poisoned;
|
|
31
|
+
private constructor();
|
|
32
|
+
/** True once `cleanup()` has been awaited at least once. */
|
|
33
|
+
get poisoned(): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Spin up a local Movement node and return a Harness bound to it.
|
|
36
|
+
*
|
|
37
|
+
* Forwards to `setupLocalTesting({ mode: 'local-node', ... })` so all
|
|
38
|
+
* existing options (`nodeApiPort`, `accountLabels`, `autoDeploy`, ...)
|
|
39
|
+
* apply unchanged.
|
|
40
|
+
*/
|
|
41
|
+
static createLocal(options?: LocalTestOptions): Promise<Harness>;
|
|
42
|
+
/**
|
|
43
|
+
* Create a fork-mode Harness reading from a snapshot of `network`.
|
|
44
|
+
*
|
|
45
|
+
* Fork mode is read-only: `deployCodeObject`, `upgradeCodeObject`,
|
|
46
|
+
* and `runMoveScript` throw with a message pointing at `createLocal`.
|
|
47
|
+
* `runViewFunction` works (read-only path).
|
|
48
|
+
*
|
|
49
|
+
* @param network - Network to fork (e.g. `"testnet"`).
|
|
50
|
+
* @param apiKey - Optional Movement API key. When set, every upstream
|
|
51
|
+
* request from the fork's `MovementApiClient` carries
|
|
52
|
+
* `Authorization: Bearer <apiKey>`. Use for rate-limited public
|
|
53
|
+
* endpoints or auth-gated nodes. The key stays in process memory
|
|
54
|
+
* (not persisted to the fork's on-disk metadata).
|
|
55
|
+
*/
|
|
56
|
+
static createFork(network: string, apiKey?: string): Promise<Harness>;
|
|
57
|
+
/**
|
|
58
|
+
* Bind a Harness to a real running network (testnet, mainnet, or any
|
|
59
|
+
* custom network defined in `movehat.config.ts`). No local process is
|
|
60
|
+
* spawned; transactions are submitted to the configured RPC.
|
|
61
|
+
*
|
|
62
|
+
* @param network - Named network from movehat.config.ts.
|
|
63
|
+
* @param _faucetUrl - Reserved for future auto-fund support on networks with a faucet.
|
|
64
|
+
*/
|
|
65
|
+
static createLive(network: string, _faucetUrl?: string): Promise<Harness>;
|
|
66
|
+
/**
|
|
67
|
+
* Release resources owned by this harness (local node or fork server)
|
|
68
|
+
* and poison it. Idempotent: subsequent calls are no-ops.
|
|
69
|
+
*
|
|
70
|
+
* After `cleanup()` resolves, any call to `deployCodeObject`,
|
|
71
|
+
* `upgradeCodeObject`, `runViewFunction`, or `runMoveScript` throws
|
|
72
|
+
* `HarnessDisposedError` synchronously on property access.
|
|
73
|
+
*/
|
|
74
|
+
cleanup(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Deploy a Move package as a code object via `movement move deploy-object`.
|
|
77
|
+
*
|
|
78
|
+
* The derived object address is bound to `options.moduleName` as a
|
|
79
|
+
* named address at compile time, then captured into the returned
|
|
80
|
+
* {@link CodeObjectInfo.address} for later use with
|
|
81
|
+
* `harness.runtime.getContract(address, moduleName)`.
|
|
82
|
+
*
|
|
83
|
+
* Not available on fork-mode harnesses (forks are read-only). Calling
|
|
84
|
+
* this on a `Harness.createFork(...)` instance throws synchronously.
|
|
85
|
+
*/
|
|
86
|
+
deployCodeObject(options: DeployCodeObjectOptions): Promise<CodeObjectInfo>;
|
|
87
|
+
/**
|
|
88
|
+
* Upgrade an existing code object via `movement move upgrade-object`.
|
|
89
|
+
*
|
|
90
|
+
* Requires {@link UpgradeCodeObjectOptions.objectAddress} (the existing
|
|
91
|
+
* on-chain object). Overwrites the local deployment record's timestamp
|
|
92
|
+
* + txHash; address stays the same.
|
|
93
|
+
*
|
|
94
|
+
* Not available on fork-mode harnesses (forks are read-only).
|
|
95
|
+
*/
|
|
96
|
+
upgradeCodeObject(options: UpgradeCodeObjectOptions): Promise<CodeObjectInfo>;
|
|
97
|
+
/**
|
|
98
|
+
* Execute a Move view function via the Aptos SDK.
|
|
99
|
+
*
|
|
100
|
+
* Returns the raw view-function result array. For single-value
|
|
101
|
+
* returns, destructure: `const [count] = await harness.runViewFunction(...)`.
|
|
102
|
+
*
|
|
103
|
+
* Works on all 3 harness modes (createLocal, createFork, createLive)
|
|
104
|
+
* — view functions are read-only.
|
|
105
|
+
*/
|
|
106
|
+
runViewFunction(options: RunViewFunctionOptions): Promise<unknown[]>;
|
|
107
|
+
/**
|
|
108
|
+
* Execute a Move script via `movement move run-script`.
|
|
109
|
+
*
|
|
110
|
+
* Accepts either a `.move` source path (CLI auto-compiles) or a
|
|
111
|
+
* pre-compiled `.mv` bytecode path. Other extensions throw
|
|
112
|
+
* synchronously.
|
|
113
|
+
*
|
|
114
|
+
* Not available on fork-mode harnesses (forks are read-only).
|
|
115
|
+
*/
|
|
116
|
+
runMoveScript(options: RunMoveScriptOptions): Promise<MoveScriptResult>;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=Harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Harness.d.ts","sourceRoot":"","sources":["../../src/harness/Harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAUpD;;;;;;;;;;;;GAYG;AACH,qBAAa,OAAO;IAClB,SAAgB,IAAI,EAAE,WAAW,CAAC;IAClC,SAAgB,OAAO,EAAE,cAAc,CAAC;IAExC,gBAAgB;IAChB,SAAgB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7C,gBAAgB;IAChB,SAAgB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxC,gBAAgB;IAChB,SAAgB,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1C,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAQP,4DAA4D;IAC5D,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED;;;;;;OAMG;WACU,WAAW,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1E;;;;;;;;;;;;;OAaG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3E;;;;;;;OAOG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/E;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;;;;;;;;;OAUG;IACG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC;IASjF;;;;;;;;OAQG;IACG,iBAAiB,CACrB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,cAAc,CAAC;IAS1B;;;;;;;;OAQG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI1E;;;;;;;;OAQG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAQ9E"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { setupLocalTesting } from "../helpers/setupLocalTesting.js";
|
|
2
|
+
import { initRuntime } from "../runtime.js";
|
|
3
|
+
import { createHarnessProxy } from "./proxy.js";
|
|
4
|
+
import { deployCodeObject, upgradeCodeObject } from "./codeObject.js";
|
|
5
|
+
import { runViewFunction } from "./view.js";
|
|
6
|
+
import { runMoveScript } from "./script.js";
|
|
7
|
+
/**
|
|
8
|
+
* Hardhat-style testing harness for Movehat.
|
|
9
|
+
*
|
|
10
|
+
* Construct via the static factories — `createLocal`, `createFork`,
|
|
11
|
+
* `createLive` — never via `new Harness(...)`. The returned instance is
|
|
12
|
+
* a Proxy that synchronously throws {@link HarnessDisposedError} on any
|
|
13
|
+
* post-`cleanup()` call to one of the deployment / script / view methods.
|
|
14
|
+
*
|
|
15
|
+
* AccountManager note: the underlying account pool is a process-wide
|
|
16
|
+
* static (see `core/AccountManager.ts`). Two Harness instances in the
|
|
17
|
+
* same process share account labels; this is the same constraint that
|
|
18
|
+
* already governs `setupTestFixture`.
|
|
19
|
+
*/
|
|
20
|
+
export class Harness {
|
|
21
|
+
mode;
|
|
22
|
+
runtime;
|
|
23
|
+
/** @internal */
|
|
24
|
+
localNode;
|
|
25
|
+
/** @internal */
|
|
26
|
+
forkServer;
|
|
27
|
+
/** @internal */
|
|
28
|
+
forkManager;
|
|
29
|
+
_poisoned = false;
|
|
30
|
+
constructor(init) {
|
|
31
|
+
this.mode = init.mode;
|
|
32
|
+
this.runtime = init.runtime;
|
|
33
|
+
if (init.localNode)
|
|
34
|
+
this.localNode = init.localNode;
|
|
35
|
+
if (init.forkServer)
|
|
36
|
+
this.forkServer = init.forkServer;
|
|
37
|
+
if (init.forkManager)
|
|
38
|
+
this.forkManager = init.forkManager;
|
|
39
|
+
}
|
|
40
|
+
/** True once `cleanup()` has been awaited at least once. */
|
|
41
|
+
get poisoned() {
|
|
42
|
+
return this._poisoned;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Spin up a local Movement node and return a Harness bound to it.
|
|
46
|
+
*
|
|
47
|
+
* Forwards to `setupLocalTesting({ mode: 'local-node', ... })` so all
|
|
48
|
+
* existing options (`nodeApiPort`, `accountLabels`, `autoDeploy`, ...)
|
|
49
|
+
* apply unchanged.
|
|
50
|
+
*/
|
|
51
|
+
static async createLocal(options = {}) {
|
|
52
|
+
const ctx = await setupLocalTesting({ ...options, mode: "local-node" });
|
|
53
|
+
const init = {
|
|
54
|
+
mode: "local",
|
|
55
|
+
runtime: ctx.runtime,
|
|
56
|
+
};
|
|
57
|
+
if (ctx.localNode)
|
|
58
|
+
init.localNode = ctx.localNode;
|
|
59
|
+
const instance = new Harness(init);
|
|
60
|
+
return createHarnessProxy(instance, () => instance._poisoned);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create a fork-mode Harness reading from a snapshot of `network`.
|
|
64
|
+
*
|
|
65
|
+
* Fork mode is read-only: `deployCodeObject`, `upgradeCodeObject`,
|
|
66
|
+
* and `runMoveScript` throw with a message pointing at `createLocal`.
|
|
67
|
+
* `runViewFunction` works (read-only path).
|
|
68
|
+
*
|
|
69
|
+
* @param network - Network to fork (e.g. `"testnet"`).
|
|
70
|
+
* @param apiKey - Optional Movement API key. When set, every upstream
|
|
71
|
+
* request from the fork's `MovementApiClient` carries
|
|
72
|
+
* `Authorization: Bearer <apiKey>`. Use for rate-limited public
|
|
73
|
+
* endpoints or auth-gated nodes. The key stays in process memory
|
|
74
|
+
* (not persisted to the fork's on-disk metadata).
|
|
75
|
+
*/
|
|
76
|
+
static async createFork(network, apiKey) {
|
|
77
|
+
const setupOpts = {
|
|
78
|
+
mode: "fork",
|
|
79
|
+
forkNetwork: network,
|
|
80
|
+
};
|
|
81
|
+
if (apiKey !== undefined)
|
|
82
|
+
setupOpts.forkApiKey = apiKey;
|
|
83
|
+
const ctx = await setupLocalTesting(setupOpts);
|
|
84
|
+
const init = {
|
|
85
|
+
mode: "fork",
|
|
86
|
+
runtime: ctx.runtime,
|
|
87
|
+
};
|
|
88
|
+
if (ctx.forkServer)
|
|
89
|
+
init.forkServer = ctx.forkServer;
|
|
90
|
+
if (ctx.forkManager)
|
|
91
|
+
init.forkManager = ctx.forkManager;
|
|
92
|
+
const instance = new Harness(init);
|
|
93
|
+
return createHarnessProxy(instance, () => instance._poisoned);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Bind a Harness to a real running network (testnet, mainnet, or any
|
|
97
|
+
* custom network defined in `movehat.config.ts`). No local process is
|
|
98
|
+
* spawned; transactions are submitted to the configured RPC.
|
|
99
|
+
*
|
|
100
|
+
* @param network - Named network from movehat.config.ts.
|
|
101
|
+
* @param _faucetUrl - Reserved for future auto-fund support on networks with a faucet.
|
|
102
|
+
*/
|
|
103
|
+
static async createLive(network, _faucetUrl) {
|
|
104
|
+
const runtime = await initRuntime({ network });
|
|
105
|
+
const instance = new Harness({ mode: "live", runtime });
|
|
106
|
+
return createHarnessProxy(instance, () => instance._poisoned);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Release resources owned by this harness (local node or fork server)
|
|
110
|
+
* and poison it. Idempotent: subsequent calls are no-ops.
|
|
111
|
+
*
|
|
112
|
+
* After `cleanup()` resolves, any call to `deployCodeObject`,
|
|
113
|
+
* `upgradeCodeObject`, `runViewFunction`, or `runMoveScript` throws
|
|
114
|
+
* `HarnessDisposedError` synchronously on property access.
|
|
115
|
+
*/
|
|
116
|
+
async cleanup() {
|
|
117
|
+
if (this._poisoned)
|
|
118
|
+
return;
|
|
119
|
+
this._poisoned = true;
|
|
120
|
+
if (this.localNode) {
|
|
121
|
+
await this.localNode.stop().catch(() => { });
|
|
122
|
+
}
|
|
123
|
+
if (this.forkServer) {
|
|
124
|
+
await this.forkServer.stop().catch(() => { });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Deploy a Move package as a code object via `movement move deploy-object`.
|
|
129
|
+
*
|
|
130
|
+
* The derived object address is bound to `options.moduleName` as a
|
|
131
|
+
* named address at compile time, then captured into the returned
|
|
132
|
+
* {@link CodeObjectInfo.address} for later use with
|
|
133
|
+
* `harness.runtime.getContract(address, moduleName)`.
|
|
134
|
+
*
|
|
135
|
+
* Not available on fork-mode harnesses (forks are read-only). Calling
|
|
136
|
+
* this on a `Harness.createFork(...)` instance throws synchronously.
|
|
137
|
+
*/
|
|
138
|
+
async deployCodeObject(options) {
|
|
139
|
+
if (this.mode === "fork") {
|
|
140
|
+
throw new Error("Harness.createFork is read-only; code-object deployment requires Harness.createLocal or createLive.");
|
|
141
|
+
}
|
|
142
|
+
return deployCodeObject(this.runtime, options);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Upgrade an existing code object via `movement move upgrade-object`.
|
|
146
|
+
*
|
|
147
|
+
* Requires {@link UpgradeCodeObjectOptions.objectAddress} (the existing
|
|
148
|
+
* on-chain object). Overwrites the local deployment record's timestamp
|
|
149
|
+
* + txHash; address stays the same.
|
|
150
|
+
*
|
|
151
|
+
* Not available on fork-mode harnesses (forks are read-only).
|
|
152
|
+
*/
|
|
153
|
+
async upgradeCodeObject(options) {
|
|
154
|
+
if (this.mode === "fork") {
|
|
155
|
+
throw new Error("Harness.createFork is read-only; code-object upgrade requires Harness.createLocal or createLive.");
|
|
156
|
+
}
|
|
157
|
+
return upgradeCodeObject(this.runtime, options);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Execute a Move view function via the Aptos SDK.
|
|
161
|
+
*
|
|
162
|
+
* Returns the raw view-function result array. For single-value
|
|
163
|
+
* returns, destructure: `const [count] = await harness.runViewFunction(...)`.
|
|
164
|
+
*
|
|
165
|
+
* Works on all 3 harness modes (createLocal, createFork, createLive)
|
|
166
|
+
* — view functions are read-only.
|
|
167
|
+
*/
|
|
168
|
+
async runViewFunction(options) {
|
|
169
|
+
return runViewFunction(this.runtime, options);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Execute a Move script via `movement move run-script`.
|
|
173
|
+
*
|
|
174
|
+
* Accepts either a `.move` source path (CLI auto-compiles) or a
|
|
175
|
+
* pre-compiled `.mv` bytecode path. Other extensions throw
|
|
176
|
+
* synchronously.
|
|
177
|
+
*
|
|
178
|
+
* Not available on fork-mode harnesses (forks are read-only).
|
|
179
|
+
*/
|
|
180
|
+
async runMoveScript(options) {
|
|
181
|
+
if (this.mode === "fork") {
|
|
182
|
+
throw new Error("Harness.createFork is read-only; script execution requires Harness.createLocal or createLive.");
|
|
183
|
+
}
|
|
184
|
+
return runMoveScript(this.runtime, options);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=Harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Harness.js","sourceRoot":"","sources":["../../src/harness/Harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { MovehatRuntime } from "../types/runtime.js";
|
|
2
|
+
import type { DeployCodeObjectOptions, UpgradeCodeObjectOptions, CodeObjectInfo } from "../types/harness.js";
|
|
3
|
+
/**
|
|
4
|
+
* Deploy a Move package as a code object via `movement move deploy-object`.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors `core/Publisher.deploy` exactly for the security-critical parts
|
|
7
|
+
* (per-deploy unique profile, atomic ~/.aptos/config.yaml mutation under
|
|
8
|
+
* the shared mutex, SIGINT-safe sync cleanup, stderr redaction via
|
|
9
|
+
* `runCli`). The only differences are:
|
|
10
|
+
*
|
|
11
|
+
* 1. CLI subcommand: `deploy-object` instead of `publish` + a required
|
|
12
|
+
* `--address-name <moduleName>` flag that binds the derived object
|
|
13
|
+
* address to the package's named-address slot.
|
|
14
|
+
* 2. `DeploymentInfo.address` is the derived **object address** parsed
|
|
15
|
+
* from CLI output, not the deployer's account address.
|
|
16
|
+
*
|
|
17
|
+
* @internal — called from `Harness.deployCodeObject`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function deployCodeObject(runtime: MovehatRuntime, options: DeployCodeObjectOptions): Promise<CodeObjectInfo>;
|
|
20
|
+
/**
|
|
21
|
+
* Upgrade an existing code object via `movement move upgrade-object`.
|
|
22
|
+
*
|
|
23
|
+
* Requires {@link UpgradeCodeObjectOptions.objectAddress} — the address
|
|
24
|
+
* of the existing on-chain object. The local `DeploymentInfo` record
|
|
25
|
+
* for `moduleName` is overwritten with a new timestamp + txHash; the
|
|
26
|
+
* address stays the same.
|
|
27
|
+
*
|
|
28
|
+
* @internal — called from `Harness.upgradeCodeObject`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function upgradeCodeObject(runtime: MovehatRuntime, options: UpgradeCodeObjectOptions): Promise<CodeObjectInfo>;
|
|
31
|
+
//# sourceMappingURL=codeObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeObject.d.ts","sourceRoot":"","sources":["../../src/harness/codeObject.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACf,MAAM,qBAAqB,CAAC;AA0B7B;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAazB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,cAAc,CAAC,CAmBzB"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { homedir } from "os";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { randomUUID } from "crypto";
|
|
4
|
+
import { extractNamedAddresses } from "../commands/compile.js";
|
|
5
|
+
import { saveDeployment, loadDeployment, validateSafeName, } from "../core/deployments.js";
|
|
6
|
+
import { validatePathSafety, validateProfileSafety } from "../core/shell.js";
|
|
7
|
+
import { CliExecutionError, ModuleAlreadyDeployedError, PostPublishError, } from "../errors.js";
|
|
8
|
+
import { runCli } from "../utils/runCli.js";
|
|
9
|
+
import { parseTxHash } from "../utils/parseCliOutput.js";
|
|
10
|
+
import { logger } from "../ui/index.js";
|
|
11
|
+
import { withYamlLock, addProfile, removeProfile, removeProfileSync, ensureSignalHandler, cleanupCallbacks, } from "../core/movementProfile.js";
|
|
12
|
+
/**
|
|
13
|
+
* Deploy a Move package as a code object via `movement move deploy-object`.
|
|
14
|
+
*
|
|
15
|
+
* Mirrors `core/Publisher.deploy` exactly for the security-critical parts
|
|
16
|
+
* (per-deploy unique profile, atomic ~/.aptos/config.yaml mutation under
|
|
17
|
+
* the shared mutex, SIGINT-safe sync cleanup, stderr redaction via
|
|
18
|
+
* `runCli`). The only differences are:
|
|
19
|
+
*
|
|
20
|
+
* 1. CLI subcommand: `deploy-object` instead of `publish` + a required
|
|
21
|
+
* `--address-name <moduleName>` flag that binds the derived object
|
|
22
|
+
* address to the package's named-address slot.
|
|
23
|
+
* 2. `DeploymentInfo.address` is the derived **object address** parsed
|
|
24
|
+
* from CLI output, not the deployer's account address.
|
|
25
|
+
*
|
|
26
|
+
* @internal — called from `Harness.deployCodeObject`.
|
|
27
|
+
*/
|
|
28
|
+
export async function deployCodeObject(runtime, options) {
|
|
29
|
+
return executeMovementMoveObject({
|
|
30
|
+
runtime,
|
|
31
|
+
moduleName: options.moduleName,
|
|
32
|
+
addressName: options.addressName,
|
|
33
|
+
packageDir: options.packageDir,
|
|
34
|
+
namedAddresses: options.namedAddresses,
|
|
35
|
+
includedArtifacts: options.includedArtifacts,
|
|
36
|
+
adapter: options.adapter,
|
|
37
|
+
subcommand: "deploy-object",
|
|
38
|
+
extraArgs: [],
|
|
39
|
+
checkIdempotency: true,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Upgrade an existing code object via `movement move upgrade-object`.
|
|
44
|
+
*
|
|
45
|
+
* Requires {@link UpgradeCodeObjectOptions.objectAddress} — the address
|
|
46
|
+
* of the existing on-chain object. The local `DeploymentInfo` record
|
|
47
|
+
* for `moduleName` is overwritten with a new timestamp + txHash; the
|
|
48
|
+
* address stays the same.
|
|
49
|
+
*
|
|
50
|
+
* @internal — called from `Harness.upgradeCodeObject`.
|
|
51
|
+
*/
|
|
52
|
+
export async function upgradeCodeObject(runtime, options) {
|
|
53
|
+
if (!options.objectAddress) {
|
|
54
|
+
throw new Error("Harness.upgradeCodeObject requires options.objectAddress (the existing object's address).");
|
|
55
|
+
}
|
|
56
|
+
return executeMovementMoveObject({
|
|
57
|
+
runtime,
|
|
58
|
+
moduleName: options.moduleName,
|
|
59
|
+
addressName: options.addressName,
|
|
60
|
+
packageDir: options.packageDir,
|
|
61
|
+
namedAddresses: options.namedAddresses,
|
|
62
|
+
includedArtifacts: options.includedArtifacts,
|
|
63
|
+
adapter: options.adapter,
|
|
64
|
+
subcommand: "upgrade-object",
|
|
65
|
+
extraArgs: ["--object-address", options.objectAddress],
|
|
66
|
+
checkIdempotency: false,
|
|
67
|
+
fixedAddress: options.objectAddress,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async function executeMovementMoveObject(opts) {
|
|
71
|
+
const { runtime, moduleName, subcommand } = opts;
|
|
72
|
+
const config = runtime.config;
|
|
73
|
+
const account = runtime.account;
|
|
74
|
+
validateSafeName(moduleName, "module");
|
|
75
|
+
// Idempotency: deploy-object refuses re-deploy unless MH_CLI_REDEPLOY=true.
|
|
76
|
+
// Upgrade does not check this (the whole point is to overwrite).
|
|
77
|
+
const forceRedeploy = process.env.MH_CLI_REDEPLOY === "true";
|
|
78
|
+
if (opts.checkIdempotency) {
|
|
79
|
+
const existing = loadDeployment(config.network, moduleName);
|
|
80
|
+
if (existing && !forceRedeploy) {
|
|
81
|
+
const errorDetails = [
|
|
82
|
+
`Module "${moduleName}" is already deployed on ${config.network}`,
|
|
83
|
+
`Address: ${existing.address}`,
|
|
84
|
+
`Deployed at: ${new Date(existing.timestamp).toLocaleString()}`,
|
|
85
|
+
existing.txHash ? `Transaction: ${existing.txHash}` : null,
|
|
86
|
+
`\nTo redeploy, set MH_CLI_REDEPLOY=true or call harness.upgradeCodeObject({ objectAddress: "${existing.address}", ... }).`,
|
|
87
|
+
]
|
|
88
|
+
.filter(Boolean)
|
|
89
|
+
.join("\n");
|
|
90
|
+
logger.error(`Module "${moduleName}" is already deployed on ${config.network}`);
|
|
91
|
+
logger.plain(` Address: ${existing.address}`);
|
|
92
|
+
logger.plain(` Deployed at: ${new Date(existing.timestamp).toLocaleString()}`);
|
|
93
|
+
if (existing.txHash)
|
|
94
|
+
logger.plain(` Transaction: ${existing.txHash}`);
|
|
95
|
+
logger.newline();
|
|
96
|
+
throw new ModuleAlreadyDeployedError(errorDetails, moduleName, config.network, existing.address, existing.timestamp, existing.txHash);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const dir = opts.packageDir || config.moveDir;
|
|
100
|
+
const profile = `movehat-deploy-${randomUUID().slice(0, 8)}`;
|
|
101
|
+
const safeDir = validatePathSafety(dir, "package directory");
|
|
102
|
+
const safeProfile = validateProfileSafety(profile);
|
|
103
|
+
logger.step(`${subcommand === "deploy-object" ? "Deploying" : "Upgrading"} module "${moduleName}" from ${dir}...`);
|
|
104
|
+
try {
|
|
105
|
+
const deployerAddress = account.accountAddress.toString();
|
|
106
|
+
// Build named-addresses arg: auto-detected names from Move sources
|
|
107
|
+
// are bound to the deployer's address (Publisher convention).
|
|
108
|
+
// Caller-supplied `namedAddresses` overlay on top.
|
|
109
|
+
const detectedAddresses = extractNamedAddresses(dir);
|
|
110
|
+
const addrMap = new Map();
|
|
111
|
+
for (const name of detectedAddresses)
|
|
112
|
+
addrMap.set(name, deployerAddress);
|
|
113
|
+
if (opts.namedAddresses) {
|
|
114
|
+
for (const [k, v] of Object.entries(opts.namedAddresses))
|
|
115
|
+
addrMap.set(k, v);
|
|
116
|
+
}
|
|
117
|
+
const namedAddrArgs = addrMap.size > 0
|
|
118
|
+
? [
|
|
119
|
+
"--named-addresses",
|
|
120
|
+
Array.from(addrMap.entries())
|
|
121
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
122
|
+
.join(","),
|
|
123
|
+
]
|
|
124
|
+
: [];
|
|
125
|
+
// Build step (same as Publisher — produces the bytecode the
|
|
126
|
+
// subcommand will publish/upgrade).
|
|
127
|
+
logger.step("Building package...");
|
|
128
|
+
const buildResult = await runCli({
|
|
129
|
+
command: "movement",
|
|
130
|
+
args: ["move", "build", "--package-dir", safeDir, ...namedAddrArgs],
|
|
131
|
+
timeoutMs: 120000,
|
|
132
|
+
}, { adapter: opts.adapter });
|
|
133
|
+
if (buildResult.stdout)
|
|
134
|
+
console.log(buildResult.stdout.trim());
|
|
135
|
+
// Strip `ed25519-priv-` prefix if present — Movement CLI expects the
|
|
136
|
+
// raw hex.
|
|
137
|
+
let cleanPrivateKey = config.privateKey;
|
|
138
|
+
if (cleanPrivateKey.startsWith("ed25519-priv-")) {
|
|
139
|
+
cleanPrivateKey = cleanPrivateKey.replace("ed25519-priv-", "");
|
|
140
|
+
}
|
|
141
|
+
const movementConfigPath = join(homedir(), ".aptos", "config.yaml");
|
|
142
|
+
// Register SIGINT-safe sync cleanup BEFORE writing the key (same
|
|
143
|
+
// pattern as Publisher — closes bug #36).
|
|
144
|
+
ensureSignalHandler();
|
|
145
|
+
const syncCleanup = () => removeProfileSync(movementConfigPath, profile);
|
|
146
|
+
cleanupCallbacks.add(syncCleanup);
|
|
147
|
+
await withYamlLock(() => addProfile(movementConfigPath, profile, {
|
|
148
|
+
private_key: cleanPrivateKey,
|
|
149
|
+
public_key: account.publicKey.toString(),
|
|
150
|
+
account: deployerAddress,
|
|
151
|
+
rest_url: config.rpc,
|
|
152
|
+
}));
|
|
153
|
+
let deployOut = "";
|
|
154
|
+
try {
|
|
155
|
+
logger.step(`Running 'movement move ${subcommand}'${subcommand === "upgrade-object" ? "" : " (this may take a moment)"}...`);
|
|
156
|
+
const includedArtifacts = opts.includedArtifacts
|
|
157
|
+
? ["--included-artifacts", opts.includedArtifacts]
|
|
158
|
+
: [];
|
|
159
|
+
const result = await runCli({
|
|
160
|
+
command: "movement",
|
|
161
|
+
args: [
|
|
162
|
+
"move",
|
|
163
|
+
subcommand,
|
|
164
|
+
"--address-name",
|
|
165
|
+
opts.addressName ?? moduleName,
|
|
166
|
+
"--package-dir",
|
|
167
|
+
safeDir,
|
|
168
|
+
"--url",
|
|
169
|
+
config.rpc,
|
|
170
|
+
"--profile",
|
|
171
|
+
safeProfile,
|
|
172
|
+
"--assume-yes",
|
|
173
|
+
...includedArtifacts,
|
|
174
|
+
...namedAddrArgs,
|
|
175
|
+
...opts.extraArgs,
|
|
176
|
+
],
|
|
177
|
+
timeoutMs: 180000, // 3 min — deploy-object can be slow with chunked publishing.
|
|
178
|
+
}, { adapter: opts.adapter });
|
|
179
|
+
deployOut = result.stdout;
|
|
180
|
+
if (result.stdout)
|
|
181
|
+
console.log(result.stdout.trim());
|
|
182
|
+
if (result.stderr)
|
|
183
|
+
console.error(result.stderr.trim());
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
// Best-effort profile removal. CRITICAL: catch + log instead of
|
|
187
|
+
// re-throwing — an await-in-finally that throws would clobber the
|
|
188
|
+
// try block's success/error (the bug-#37 lesson from Publisher).
|
|
189
|
+
await withYamlLock(() => removeProfile(movementConfigPath, profile)).catch((err) => {
|
|
190
|
+
const cleanupMsg = err instanceof Error ? err.message : String(err);
|
|
191
|
+
logger.warning(`Failed to remove deploy profile "${profile}" from ${movementConfigPath}: ${cleanupMsg}. ` +
|
|
192
|
+
`Run 'movement config delete-profile --profile ${profile}' to clean up manually.`);
|
|
193
|
+
});
|
|
194
|
+
cleanupCallbacks.delete(syncCleanup);
|
|
195
|
+
}
|
|
196
|
+
// Parse object address (for deploy-object) and txHash (both flows).
|
|
197
|
+
const objectAddress = opts.fixedAddress ?? parseObjectAddress(deployOut);
|
|
198
|
+
const txHash = parseTxHash(deployOut);
|
|
199
|
+
if (!objectAddress) {
|
|
200
|
+
throw new Error(`Could not parse object address from '${subcommand}' output. ` +
|
|
201
|
+
`Expected a line containing 'object address 0x...' or a JSON ` +
|
|
202
|
+
`'Result' block with an 'object_address' field. Captured stdout:\n${deployOut.slice(0, 1000)}`);
|
|
203
|
+
}
|
|
204
|
+
logger.success(`${subcommand === "deploy-object" ? "Module deployed" : "Module upgraded"} successfully!`);
|
|
205
|
+
// Publish/upgrade succeeded. Everything below this point that throws
|
|
206
|
+
// is a local-side bookkeeping failure, not an on-chain failure.
|
|
207
|
+
const deployment = {
|
|
208
|
+
address: objectAddress,
|
|
209
|
+
moduleName,
|
|
210
|
+
network: config.network,
|
|
211
|
+
deployer: deployerAddress,
|
|
212
|
+
timestamp: Date.now(),
|
|
213
|
+
...(txHash !== undefined ? { txHash } : {}),
|
|
214
|
+
};
|
|
215
|
+
try {
|
|
216
|
+
saveDeployment(deployment);
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
220
|
+
throw new PostPublishError(`Module "${moduleName}" ${subcommand === "deploy-object" ? "deployed" : "upgraded"} to ${deployment.address} ` +
|
|
221
|
+
`but local deployment record could not be written: ${err.message}`, deployment, err);
|
|
222
|
+
}
|
|
223
|
+
return deployment;
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
if (error instanceof PostPublishError) {
|
|
227
|
+
logger.warning(`Module ${subcommand === "deploy-object" ? "deployed" : "upgraded"} successfully to ${error.deployment.address} ` +
|
|
228
|
+
`(tx=${error.deployment.txHash ?? "unknown"}) but local deployment record could not be written.`);
|
|
229
|
+
logger.warning(` Cause: ${error.cause.message}`);
|
|
230
|
+
logger.warning(` To recover, manually write the deployment to deployments/${error.deployment.network}/${error.deployment.moduleName}.json.`);
|
|
231
|
+
throw error;
|
|
232
|
+
}
|
|
233
|
+
if (error instanceof CliExecutionError) {
|
|
234
|
+
if (error.stdoutPreview)
|
|
235
|
+
console.log(error.stdoutPreview);
|
|
236
|
+
logger.error(`Failed to ${subcommand === "deploy-object" ? "deploy" : "upgrade"} module: ${error.message}\n${error.stderr}`);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
240
|
+
logger.error(`Failed to ${subcommand === "deploy-object" ? "deploy" : "upgrade"} module: ${err.message}`);
|
|
241
|
+
}
|
|
242
|
+
throw error;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Extract a code-object address from `movement move deploy-object` stdout.
|
|
247
|
+
*
|
|
248
|
+
* Movement CLI typically emits the address in one of these shapes:
|
|
249
|
+
*
|
|
250
|
+
* - Free text: `Code was successfully deployed to object address 0x…`
|
|
251
|
+
* - Free text: `Object address: 0x…`
|
|
252
|
+
* - JSON `Result` block with `"object_address": "0x…"`
|
|
253
|
+
*
|
|
254
|
+
* Falls through the patterns in order. Returns `undefined` on no match.
|
|
255
|
+
*/
|
|
256
|
+
function parseObjectAddress(stdout) {
|
|
257
|
+
// Pattern 1: phrase-context match.
|
|
258
|
+
const phraseMatch = stdout.match(/object\s+address[:\s]+\b(0x[a-fA-F0-9]{1,64})\b/i);
|
|
259
|
+
if (phraseMatch?.[1])
|
|
260
|
+
return phraseMatch[1];
|
|
261
|
+
// Pattern 2: JSON-shaped key.
|
|
262
|
+
const jsonMatch = stdout.match(/"object_address"\s*:\s*"(0x[a-fA-F0-9]{1,64})"/);
|
|
263
|
+
if (jsonMatch?.[1])
|
|
264
|
+
return jsonMatch[1];
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=codeObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeObject.js","sourceRoot":"","sources":["../../src/harness/codeObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAOpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,OAAgC;IAEhC,OAAO,yBAAyB,CAAC;QAC/B,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,OAAiC;IAEjC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,yBAAyB,CAAC;QAC/B,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,gBAAgB;QAC5B,SAAS,EAAE,CAAC,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC;QACtD,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,OAAO,CAAC,aAAa;KACpC,CAAC,CAAC;AACL,CAAC;AAyBD,KAAK,UAAU,yBAAyB,CACtC,IAAoB;IAEpB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEvC,4EAA4E;IAC5E,iEAAiE;IACjE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;IAC7D,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5D,IAAI,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG;gBACnB,WAAW,UAAU,4BAA4B,MAAM,CAAC,OAAO,EAAE;gBACjE,YAAY,QAAQ,CAAC,OAAO,EAAE;gBAC9B,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE;gBAC/D,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC1D,+FAA+F,QAAQ,CAAC,OAAO,YAAY;aAC5H;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,CAAC,KAAK,CACV,WAAW,UAAU,4BAA4B,MAAM,CAAC,OAAO,EAAE,CAClE,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CACV,mBAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CACnE,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,MAAM,IAAI,0BAA0B,CAClC,YAAY,EACZ,UAAU,EACV,MAAM,CAAC,OAAO,EACd,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC;IAC9C,MAAM,OAAO,GAAG,kBAAkB,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,CAAC,IAAI,CACT,GAAG,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,YAAY,UAAU,UAAU,GAAG,KAAK,CACtG,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAE1D,mEAAmE;QACnE,8DAA8D;QAC9D,mDAAmD;QACnD,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,iBAAiB;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,aAAa,GACjB,OAAO,CAAC,IAAI,GAAG,CAAC;YACd,CAAC,CAAC;gBACE,mBAAmB;gBACnB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;qBAC1B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC5B,IAAI,CAAC,GAAG,CAAC;aACb;YACH,CAAC,CAAC,EAAE,CAAC;QAET,4DAA4D;QAC5D,oCAAoC;QACpC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,MAAM,MAAM,CAC9B;YACE,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;YACnE,SAAS,EAAE,MAAM;SAClB,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACF,IAAI,WAAW,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/D,qEAAqE;QACrE,WAAW;QACX,IAAI,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,IAAI,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChD,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEpE,iEAAiE;QACjE,0CAA0C;QAC1C,mBAAmB,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACzE,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAElC,MAAM,YAAY,CAAC,GAAG,EAAE,CACtB,UAAU,CAAC,kBAAkB,EAAE,OAAO,EAAE;YACtC,WAAW,EAAE,eAAe;YAC5B,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;YACxC,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,MAAM,CAAC,GAAG;SACrB,CAAC,CACH,CAAC;QAEF,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CACT,0BAA0B,UAAU,IAAI,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,KAAK,CAChH,CAAC;YACF,MAAM,iBAAiB,GACrB,IAAI,CAAC,iBAAiB;gBACpB,CAAC,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,iBAAiB,CAAC;gBAClD,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB;gBACE,OAAO,EAAE,UAAU;gBACnB,IAAI,EAAE;oBACJ,MAAM;oBACN,UAAU;oBACV,gBAAgB;oBAChB,IAAI,CAAC,WAAW,IAAI,UAAU;oBAC9B,eAAe;oBACf,OAAO;oBACP,OAAO;oBACP,MAAM,CAAC,GAAG;oBACV,WAAW;oBACX,WAAW;oBACX,cAAc;oBACd,GAAG,iBAAiB;oBACpB,GAAG,aAAa;oBAChB,GAAG,IAAI,CAAC,SAAS;iBAClB;gBACD,SAAS,EAAE,MAAM,EAAE,6DAA6D;aACjF,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;YACF,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACT,gEAAgE;YAChE,kEAAkE;YAClE,iEAAiE;YACjE,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CACxE,CAAC,GAAG,EAAE,EAAE;gBACN,MAAM,UAAU,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,OAAO,CACZ,oCAAoC,OAAO,UAAU,kBAAkB,KAAK,UAAU,IAAI;oBACxF,iDAAiD,OAAO,yBAAyB,CACpF,CAAC;YACJ,CAAC,CACF,CAAC;YACF,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAED,oEAAoE;QACpE,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,wCAAwC,UAAU,YAAY;gBAC5D,8DAA8D;gBAC9D,oEAAoE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CACjG,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,OAAO,CACZ,GAAG,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,gBAAgB,CAC1F,CAAC;QAEF,qEAAqE;QACrE,gEAAgE;QAEhE,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,aAAa;YACtB,UAAU;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,eAAe;YACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;QAEF,IAAI,CAAC;YACH,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,IAAI,gBAAgB,CACxB,WAAW,UAAU,KAAK,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,OAAO,UAAU,CAAC,OAAO,GAAG;gBAC5G,qDAAqD,GAAG,CAAC,OAAO,EAAE,EACpE,UAAU,EACV,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,CACZ,UAAU,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,oBAAoB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG;gBAC/G,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,SAAS,qDAAqD,CACnG,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CACZ,+DAA+D,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,QAAQ,CAC/H,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,aAAa;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CACV,aAAa,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,EAAE,CAC/G,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,CACV,aAAa,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAAY,GAAG,CAAC,OAAO,EAAE,CAC5F,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACxC,mCAAmC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAC9B,kDAAkD,CACnD,CAAC;IACF,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IAE5C,8BAA8B;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAC5B,gDAAgD,CACjD,CAAC;IACF,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IAExC,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown synchronously when any method other than `cleanup` is invoked
|
|
3
|
+
* on a Harness instance whose `cleanup()` has already run.
|
|
4
|
+
*
|
|
5
|
+
* The throw happens on property access (Proxy `get` trap), not after the
|
|
6
|
+
* async method body. That means `await harness.deployCodeObject(...)`
|
|
7
|
+
* throws *before* the call site awaits — callers can use a plain
|
|
8
|
+
* `try`/`catch` or rely on the rejected promise; either form will fire.
|
|
9
|
+
*/
|
|
10
|
+
export declare class HarnessDisposedError extends Error {
|
|
11
|
+
readonly methodName: string;
|
|
12
|
+
constructor(methodName: string);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/harness/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAW/C"}
|