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,107 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { escapeShellArg, validateAndEscapePath, validateAndEscapeProfile, } from '../shell.js';
|
|
3
|
+
describe('escapeShellArg', () => {
|
|
4
|
+
it('should wrap simple strings in single quotes', () => {
|
|
5
|
+
expect(escapeShellArg('hello')).toBe("'hello'");
|
|
6
|
+
});
|
|
7
|
+
it('should escape single quotes within strings', () => {
|
|
8
|
+
expect(escapeShellArg("it's")).toBe("'it'\\''s'");
|
|
9
|
+
});
|
|
10
|
+
it('should handle multiple single quotes', () => {
|
|
11
|
+
expect(escapeShellArg("it's a 'test'")).toBe("'it'\\''s a '\\''test'\\'''");
|
|
12
|
+
});
|
|
13
|
+
it('should handle empty strings', () => {
|
|
14
|
+
expect(escapeShellArg('')).toBe("''");
|
|
15
|
+
});
|
|
16
|
+
it('should handle strings with spaces', () => {
|
|
17
|
+
expect(escapeShellArg('hello world')).toBe("'hello world'");
|
|
18
|
+
});
|
|
19
|
+
it('should handle paths with spaces', () => {
|
|
20
|
+
expect(escapeShellArg('/path/to/my project')).toBe("'/path/to/my project'");
|
|
21
|
+
});
|
|
22
|
+
it('should throw for non-string input', () => {
|
|
23
|
+
expect(() => escapeShellArg(123)).toThrow('Shell argument must be a string');
|
|
24
|
+
expect(() => escapeShellArg(null)).toThrow('Shell argument must be a string');
|
|
25
|
+
expect(() => escapeShellArg(undefined)).toThrow('Shell argument must be a string');
|
|
26
|
+
});
|
|
27
|
+
it('should handle special characters safely', () => {
|
|
28
|
+
// These should be safely wrapped, not executed
|
|
29
|
+
expect(escapeShellArg('$(whoami)')).toBe("'$(whoami)'");
|
|
30
|
+
expect(escapeShellArg('`ls`')).toBe("'`ls`'");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('validateAndEscapePath', () => {
|
|
34
|
+
it('should accept valid paths', () => {
|
|
35
|
+
expect(validateAndEscapePath('/home/user/project')).toBe("'/home/user/project'");
|
|
36
|
+
expect(validateAndEscapePath('./my-project')).toBe("'./my-project'");
|
|
37
|
+
expect(validateAndEscapePath('C:\\Users\\project')).toBe("'C:\\Users\\project'");
|
|
38
|
+
});
|
|
39
|
+
it('should accept paths with spaces', () => {
|
|
40
|
+
expect(validateAndEscapePath('/home/user/my project')).toBe("'/home/user/my project'");
|
|
41
|
+
});
|
|
42
|
+
it('should accept paths with dots and underscores', () => {
|
|
43
|
+
expect(validateAndEscapePath('./my_project.test')).toBe("'./my_project.test'");
|
|
44
|
+
});
|
|
45
|
+
it('should reject paths with semicolons (command chaining)', () => {
|
|
46
|
+
expect(() => validateAndEscapePath('/path; rm -rf /')).toThrow('potentially dangerous characters');
|
|
47
|
+
});
|
|
48
|
+
it('should reject paths with pipes', () => {
|
|
49
|
+
expect(() => validateAndEscapePath('/path | cat /etc/passwd')).toThrow('potentially dangerous characters');
|
|
50
|
+
});
|
|
51
|
+
it('should reject paths with backticks (command substitution)', () => {
|
|
52
|
+
expect(() => validateAndEscapePath('/path/`whoami`')).toThrow('potentially dangerous characters');
|
|
53
|
+
});
|
|
54
|
+
it('should reject paths with $() (command substitution)', () => {
|
|
55
|
+
expect(() => validateAndEscapePath('/path/$(whoami)')).toThrow('potentially dangerous characters');
|
|
56
|
+
});
|
|
57
|
+
it('should reject paths with ampersand', () => {
|
|
58
|
+
expect(() => validateAndEscapePath('/path & echo hacked')).toThrow('potentially dangerous characters');
|
|
59
|
+
});
|
|
60
|
+
it('should reject paths with curly braces', () => {
|
|
61
|
+
expect(() => validateAndEscapePath('/path/{a,b}')).toThrow('potentially dangerous characters');
|
|
62
|
+
});
|
|
63
|
+
it('should reject paths with redirects', () => {
|
|
64
|
+
expect(() => validateAndEscapePath('/path > /etc/passwd')).toThrow('potentially dangerous characters');
|
|
65
|
+
expect(() => validateAndEscapePath('/path < /etc/passwd')).toThrow('potentially dangerous characters');
|
|
66
|
+
});
|
|
67
|
+
it('should throw for empty paths', () => {
|
|
68
|
+
expect(() => validateAndEscapePath('')).toThrow('must be a non-empty string');
|
|
69
|
+
});
|
|
70
|
+
it('should throw for non-string input', () => {
|
|
71
|
+
expect(() => validateAndEscapePath(null)).toThrow('must be a non-empty string');
|
|
72
|
+
expect(() => validateAndEscapePath(undefined)).toThrow('must be a non-empty string');
|
|
73
|
+
});
|
|
74
|
+
it('should use custom name in error messages', () => {
|
|
75
|
+
expect(() => validateAndEscapePath('', 'Move directory')).toThrow('Invalid Move directory');
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('validateAndEscapeProfile', () => {
|
|
79
|
+
it('should accept valid profile names', () => {
|
|
80
|
+
expect(validateAndEscapeProfile('default')).toBe("'default'");
|
|
81
|
+
expect(validateAndEscapeProfile('my-profile')).toBe("'my-profile'");
|
|
82
|
+
expect(validateAndEscapeProfile('profile_123')).toBe("'profile_123'");
|
|
83
|
+
});
|
|
84
|
+
it('should accept alphanumeric names', () => {
|
|
85
|
+
expect(validateAndEscapeProfile('Profile1')).toBe("'Profile1'");
|
|
86
|
+
expect(validateAndEscapeProfile('test123')).toBe("'test123'");
|
|
87
|
+
});
|
|
88
|
+
it('should reject profiles with spaces', () => {
|
|
89
|
+
expect(() => validateAndEscapeProfile('my profile')).toThrow('Only alphanumeric');
|
|
90
|
+
});
|
|
91
|
+
it('should reject profiles with special characters', () => {
|
|
92
|
+
expect(() => validateAndEscapeProfile('profile;rm')).toThrow('Only alphanumeric');
|
|
93
|
+
expect(() => validateAndEscapeProfile('profile$test')).toThrow('Only alphanumeric');
|
|
94
|
+
expect(() => validateAndEscapeProfile('profile/test')).toThrow('Only alphanumeric');
|
|
95
|
+
});
|
|
96
|
+
it('should reject profiles with dots', () => {
|
|
97
|
+
expect(() => validateAndEscapeProfile('profile.test')).toThrow('Only alphanumeric');
|
|
98
|
+
});
|
|
99
|
+
it('should throw for empty profiles', () => {
|
|
100
|
+
expect(() => validateAndEscapeProfile('')).toThrow('must be a non-empty string');
|
|
101
|
+
});
|
|
102
|
+
it('should throw for non-string input', () => {
|
|
103
|
+
expect(() => validateAndEscapeProfile(null)).toThrow('must be a non-empty string');
|
|
104
|
+
expect(() => validateAndEscapeProfile(undefined)).toThrow('must be a non-empty string');
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=shell.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/shell.test.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { MovehatConfig, MovehatUserConfig } from "../types/config.js";
|
|
2
2
|
/**
|
|
3
|
-
* Loads the user's movehat.config.js from the current working directory.
|
|
3
|
+
* Loads the user's movehat.config.{ts,js} from the current working directory.
|
|
4
|
+
*
|
|
5
|
+
* Cached by `{ absPath, mtimeMs }`: a second call with no edit returns
|
|
6
|
+
* the parsed object directly and skips both the tsx loader register
|
|
7
|
+
* dance and the dynamic `import()`. Edits invalidate via the file's
|
|
8
|
+
* mtime.
|
|
4
9
|
*
|
|
5
10
|
* @throws {Error} If the configuration file is not found or fails to load
|
|
6
11
|
* @security This function loads and executes code from the current working directory.
|
|
7
12
|
* It should only be called from trusted project directories.
|
|
8
13
|
*/
|
|
9
14
|
export declare function loadUserConfig(): Promise<MovehatUserConfig>;
|
|
15
|
+
/**
|
|
16
|
+
* Clear the in-memory config cache. Test-only escape hatch.
|
|
17
|
+
*
|
|
18
|
+
* @internal Not part of the public API surface. Imported via relative
|
|
19
|
+
* path from `core/__tests__/config.test.ts` only.
|
|
20
|
+
*/
|
|
21
|
+
export declare function _resetConfigCache(): void;
|
|
10
22
|
/**
|
|
11
23
|
* Resolve configuration for a specific network
|
|
12
24
|
* Merges global settings with network-specific settings
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkBtE;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA6DjE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,iBAAiB,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAoIxB"}
|
package/dist/core/config.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import { pathToFileURL } from "url";
|
|
2
2
|
import { join } from "path";
|
|
3
|
-
import { existsSync } from "fs";
|
|
3
|
+
import { existsSync, statSync } from "fs";
|
|
4
|
+
import { Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
|
|
5
|
+
// Keyed by resolved absolute path. One entry per config file the process
|
|
6
|
+
// has loaded. Closes #62 — the previous `?t=Date.now()` cache-bust
|
|
7
|
+
// created a fresh Node loader module per call.
|
|
8
|
+
//
|
|
9
|
+
// Note on concurrency: two `loadUserConfig()` calls racing on a cold
|
|
10
|
+
// cache may both invoke `import()`. Node's loader cache deduplicates by
|
|
11
|
+
// URL so both resolve to the same module, and both writers store the
|
|
12
|
+
// same value here. No corruption, no in-flight-promise memoization
|
|
13
|
+
// needed.
|
|
14
|
+
const configCache = new Map();
|
|
4
15
|
/**
|
|
5
|
-
* Loads the user's movehat.config.js from the current working directory.
|
|
16
|
+
* Loads the user's movehat.config.{ts,js} from the current working directory.
|
|
17
|
+
*
|
|
18
|
+
* Cached by `{ absPath, mtimeMs }`: a second call with no edit returns
|
|
19
|
+
* the parsed object directly and skips both the tsx loader register
|
|
20
|
+
* dance and the dynamic `import()`. Edits invalidate via the file's
|
|
21
|
+
* mtime.
|
|
6
22
|
*
|
|
7
23
|
* @throws {Error} If the configuration file is not found or fails to load
|
|
8
24
|
* @security This function loads and executes code from the current working directory.
|
|
@@ -10,7 +26,6 @@ import { existsSync } from "fs";
|
|
|
10
26
|
*/
|
|
11
27
|
export async function loadUserConfig() {
|
|
12
28
|
const cwd = process.cwd();
|
|
13
|
-
// Try to find config file (.ts first, then .js)
|
|
14
29
|
const possiblePaths = [
|
|
15
30
|
join(cwd, "movehat.config.ts"),
|
|
16
31
|
join(cwd, "movehat.config.js"),
|
|
@@ -26,36 +41,47 @@ export async function loadUserConfig() {
|
|
|
26
41
|
throw new Error("Configuration file not found. Expected 'movehat.config.ts' or 'movehat.config.js' in the current directory.");
|
|
27
42
|
}
|
|
28
43
|
try {
|
|
44
|
+
const { mtimeMs } = statSync(configPath);
|
|
45
|
+
const cached = configCache.get(configPath);
|
|
46
|
+
if (cached && cached.mtimeMs === mtimeMs) {
|
|
47
|
+
return cached.config;
|
|
48
|
+
}
|
|
29
49
|
let configModule;
|
|
30
50
|
if (configPath.endsWith('.ts')) {
|
|
31
|
-
// For TypeScript files, we need to use tsx's import system
|
|
32
|
-
// Register tsx loader for .ts files
|
|
33
51
|
const { register } = await import('tsx/esm/api');
|
|
34
52
|
const unregister = register();
|
|
35
53
|
try {
|
|
36
54
|
const configUrl = pathToFileURL(configPath).href;
|
|
37
|
-
configModule = await import(configUrl + '?
|
|
55
|
+
configModule = await import(configUrl + '?mtime=' + mtimeMs);
|
|
38
56
|
}
|
|
39
57
|
finally {
|
|
40
58
|
unregister();
|
|
41
59
|
}
|
|
42
60
|
}
|
|
43
61
|
else {
|
|
44
|
-
// For .js files, use standard import
|
|
45
62
|
const configUrl = pathToFileURL(configPath).href;
|
|
46
|
-
configModule = await import(configUrl + '?
|
|
63
|
+
configModule = await import(configUrl + '?mtime=' + mtimeMs);
|
|
47
64
|
}
|
|
48
65
|
const userConfig = configModule.default;
|
|
49
|
-
// Validate that networks are defined
|
|
50
66
|
if (!userConfig.networks || Object.keys(userConfig.networks).length === 0) {
|
|
51
67
|
throw new Error("No networks defined in configuration. Add at least one network in the 'networks' field.");
|
|
52
68
|
}
|
|
69
|
+
configCache.set(configPath, { mtimeMs, config: userConfig });
|
|
53
70
|
return userConfig;
|
|
54
71
|
}
|
|
55
72
|
catch (error) {
|
|
56
73
|
throw new Error(`Failed to load configuration file '${configPath}': ${error}`);
|
|
57
74
|
}
|
|
58
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Clear the in-memory config cache. Test-only escape hatch.
|
|
78
|
+
*
|
|
79
|
+
* @internal Not part of the public API surface. Imported via relative
|
|
80
|
+
* path from `core/__tests__/config.test.ts` only.
|
|
81
|
+
*/
|
|
82
|
+
export function _resetConfigCache() {
|
|
83
|
+
configCache.clear();
|
|
84
|
+
}
|
|
59
85
|
/**
|
|
60
86
|
* Resolve configuration for a specific network
|
|
61
87
|
* Merges global settings with network-specific settings
|
|
@@ -146,18 +172,61 @@ export async function resolveNetworkConfig(userConfig, networkName) {
|
|
|
146
172
|
...(userConfig.namedAddresses || {}),
|
|
147
173
|
...(networkConfig.namedAddresses || {}),
|
|
148
174
|
};
|
|
175
|
+
// Capture the primary key after the L178 guard guaranteed it exists
|
|
176
|
+
// (either present from the start, or auto-assigned by the testnet/local
|
|
177
|
+
// branch; the else-branch throws). Pulling into a local lets TS see
|
|
178
|
+
// the non-undefined narrowing.
|
|
179
|
+
const primaryKey = accounts[0];
|
|
180
|
+
if (!primaryKey) {
|
|
181
|
+
throw new Error("invariant: accounts[0] must exist after the L178 guard");
|
|
182
|
+
}
|
|
183
|
+
// Derive the deployer account address from the resolved private key.
|
|
184
|
+
// Without this, consumers reading `config.account` got an empty string
|
|
185
|
+
// (the previous "Will be derived from privateKey in runtime" TODO was
|
|
186
|
+
// never wired). Falls back to "" on malformed keys so we don't break
|
|
187
|
+
// existing callers that don't need the field.
|
|
188
|
+
const accountAddress = deriveAccountAddress(primaryKey);
|
|
149
189
|
// Build resolved config
|
|
150
190
|
const resolvedConfig = {
|
|
151
191
|
network: selectedNetwork,
|
|
152
192
|
rpc: networkConfig.url,
|
|
153
|
-
privateKey:
|
|
193
|
+
privateKey: primaryKey,
|
|
154
194
|
allAccounts: accounts,
|
|
155
195
|
profile: networkConfig.profile || "default",
|
|
156
196
|
moveDir: userConfig.moveDir || "./move",
|
|
157
|
-
account:
|
|
197
|
+
account: accountAddress,
|
|
158
198
|
namedAddresses: mergedNamedAddresses,
|
|
159
199
|
networkConfig: networkConfig,
|
|
160
200
|
};
|
|
161
201
|
return resolvedConfig;
|
|
162
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Derive the on-chain account address from a private key. Strips the
|
|
205
|
+
* `ed25519-priv-` prefix that Movement CLI sometimes emits; returns ""
|
|
206
|
+
* on any parse failure so existing callers that don't consume the field
|
|
207
|
+
* keep working unchanged. Emits a console.warn on failure so a
|
|
208
|
+
* misconfigured `PRIVATE_KEY` surfaces here (loud, at config-resolution
|
|
209
|
+
* time) instead of as a cryptic "Hex string is too short" SDK error
|
|
210
|
+
* later in the call chain.
|
|
211
|
+
*/
|
|
212
|
+
function deriveAccountAddress(privateKeyHex) {
|
|
213
|
+
if (!privateKeyHex)
|
|
214
|
+
return "";
|
|
215
|
+
try {
|
|
216
|
+
const stripped = privateKeyHex.startsWith("ed25519-priv-")
|
|
217
|
+
? privateKeyHex.slice("ed25519-priv-".length)
|
|
218
|
+
: privateKeyHex;
|
|
219
|
+
const account = Account.fromPrivateKey({
|
|
220
|
+
privateKey: new Ed25519PrivateKey(stripped),
|
|
221
|
+
});
|
|
222
|
+
return account.accountAddress.toString();
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
// The private key may have come from several sources (network.accounts,
|
|
226
|
+
// global accounts, PRIVATE_KEY env, auto-generated testnet key). Keep
|
|
227
|
+
// the hint generic so it never points at the wrong source.
|
|
228
|
+
console.warn(`[movehat] Could not derive account address from the resolved private key: ${err.message}. Verify the key configured for this network is a valid Ed25519 private key (with or without the "ed25519-priv-" prefix).`);
|
|
229
|
+
return "";
|
|
230
|
+
}
|
|
231
|
+
}
|
|
163
232
|
//# sourceMappingURL=config.js.map
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/contract.d.ts
CHANGED
|
@@ -10,11 +10,8 @@ export declare class MoveContract {
|
|
|
10
10
|
private moduleName;
|
|
11
11
|
constructor(aptos: Aptos, moduleAddress: string, moduleName: string);
|
|
12
12
|
call(signer: Account, functionName: string, args?: any[], typeArgs?: string[]): Promise<TransactionResult>;
|
|
13
|
-
view<T =
|
|
13
|
+
view<T = unknown>(functionName: string, args?: any[], typeArgs?: string[]): Promise<T>;
|
|
14
14
|
getModuleId(): string;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Factory function to create a contract instance
|
|
18
|
-
*/
|
|
19
16
|
export declare function getContract(aptos: Aptos, moduleAddress: string, moduleName: string): MoveContract;
|
|
20
17
|
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EAGN,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EAGN,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;gBAFV,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IAGtB,IAAI,CACR,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,EAMpB,IAAI,GAAE,GAAG,EAAO,EAChB,QAAQ,GAAE,MAAM,EAAO,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAwCvB,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,YAAY,EAAE,MAAM,EAGpB,IAAI,GAAE,GAAG,EAAO,EAChB,QAAQ,GAAE,MAAM,EAAO,GACtB,OAAO,CAAC,CAAC,CAAC;IAcb,WAAW,IAAI,MAAM;CAGtB;AAED,wBAAgB,WAAW,CACvB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GACnB,YAAY,CAEd"}
|
package/dist/core/contract.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { logger } from "../ui/index.js";
|
|
1
2
|
export class MoveContract {
|
|
2
3
|
aptos;
|
|
3
4
|
moduleAddress;
|
|
@@ -7,9 +8,15 @@ export class MoveContract {
|
|
|
7
8
|
this.moduleAddress = moduleAddress;
|
|
8
9
|
this.moduleName = moduleName;
|
|
9
10
|
}
|
|
10
|
-
async call(signer, functionName,
|
|
11
|
+
async call(signer, functionName,
|
|
12
|
+
// any[]: Move entry-function arguments are heterogeneous primitives
|
|
13
|
+
// (u8/u64/string/bool/address/vector) passed through to the Aptos
|
|
14
|
+
// SDK's `functionArguments`, which validates at submit time. A
|
|
15
|
+
// narrower union here would force casts at every call site for
|
|
16
|
+
// little safety gain.
|
|
17
|
+
args = [], typeArgs = []) {
|
|
11
18
|
const functionFullName = `${this.moduleAddress}::${this.moduleName}::${functionName}`;
|
|
12
|
-
|
|
19
|
+
logger.step(`Calling ${functionFullName}...`);
|
|
13
20
|
const transaction = await this.aptos.transaction.build.simple({
|
|
14
21
|
sender: signer.accountAddress,
|
|
15
22
|
data: {
|
|
@@ -29,14 +36,18 @@ export class MoveContract {
|
|
|
29
36
|
const response = await this.aptos.waitForTransaction({
|
|
30
37
|
transactionHash: committedTxn.hash,
|
|
31
38
|
});
|
|
32
|
-
|
|
39
|
+
logger.success(`Transaction ${committedTxn.hash} committed with status: ${response.vm_status}`);
|
|
40
|
+
logger.newline();
|
|
33
41
|
return {
|
|
34
42
|
hash: committedTxn.hash,
|
|
35
43
|
success: response.success,
|
|
36
44
|
vm_status: response.vm_status,
|
|
37
45
|
};
|
|
38
46
|
}
|
|
39
|
-
async view(functionName,
|
|
47
|
+
async view(functionName,
|
|
48
|
+
// any[]: see `call()` above — Move view-function arguments share
|
|
49
|
+
// the same SDK-validated boundary semantics.
|
|
50
|
+
args = [], typeArgs = []) {
|
|
40
51
|
const functionFullName = `${this.moduleAddress}::${this.moduleName}::${functionName}`;
|
|
41
52
|
const payload = {
|
|
42
53
|
function: functionFullName,
|
|
@@ -50,9 +61,6 @@ export class MoveContract {
|
|
|
50
61
|
return `${this.moduleAddress}::${this.moduleName}`;
|
|
51
62
|
}
|
|
52
63
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Factory function to create a contract instance
|
|
55
|
-
*/
|
|
56
64
|
export function getContract(aptos, moduleAddress, moduleName) {
|
|
57
65
|
return new MoveContract(aptos, moduleAddress, moduleName);
|
|
58
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/core/contract.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQxC,MAAM,OAAO,YAAY;IAEb;IACA;IACA;IAHV,YACU,KAAY,EACZ,aAAqB,EACrB,UAAkB;QAFlB,UAAK,GAAL,KAAK,CAAO;QACZ,kBAAa,GAAb,aAAa,CAAQ;QACrB,eAAU,GAAV,UAAU,CAAQ;IACzB,CAAC;IAEJ,KAAK,CAAC,IAAI,CACR,MAAe,EACf,YAAoB;IACpB,oEAAoE;IACpE,kEAAkE;IAClE,+DAA+D;IAC/D,+DAA+D;IAC/D,sBAAsB;IACtB,OAAc,EAAE,EAChB,WAAqB,EAAE;QAEvB,MAAM,gBAAgB,GAAG,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QAEtF,MAAM,CAAC,IAAI,CAAC,WAAW,gBAAgB,KAAK,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5D,MAAM,EAAE,MAAM,CAAC,cAAc;YAC7B,IAAI,EAAE;gBACJ,QAAQ,EAAE,gBAAkC;gBAC5C,aAAa,EAAE,QAAQ;gBACvB,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC5C,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9D,WAAW;YACX,mBAAmB,EAAE,SAAS;SAC/B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YACnD,eAAe,EAAE,YAAY,CAAC,IAAI;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CACZ,eAAe,YAAY,CAAC,IAAI,2BAA2B,QAAQ,CAAC,SAAS,EAAE,CAChF,CAAC;QACF,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,YAAoB;IACpB,iEAAiE;IACjE,6CAA6C;IAC7C,OAAc,EAAE,EAChB,WAAqB,EAAE;QAEvB,MAAM,gBAAgB,GAAG,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QAEtF,MAAM,OAAO,GAA0B;YACrC,QAAQ,EAAE,gBAAkC;YAC5C,aAAa,EAAE,QAAQ;YACvB,iBAAiB,EAAE,IAAI;SACxB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAElD,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAM,CAAC;IACzD,CAAC;IAED,WAAW;QACT,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;IACrD,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CACvB,KAAY,EACZ,aAAqB,EACrB,UAAkB;IAElB,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -4,8 +4,8 @@ export interface DeploymentInfo {
|
|
|
4
4
|
network: string;
|
|
5
5
|
deployer: string;
|
|
6
6
|
timestamp: number;
|
|
7
|
-
txHash?: string;
|
|
8
|
-
blockNumber?: string;
|
|
7
|
+
txHash?: string | undefined;
|
|
8
|
+
blockNumber?: string | undefined;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Validates that a name is safe for use in file paths
|
|
@@ -13,13 +13,7 @@ export interface DeploymentInfo {
|
|
|
13
13
|
* Prevents path traversal attacks
|
|
14
14
|
*/
|
|
15
15
|
export declare function validateSafeName(name: string, type: "network" | "module"): void;
|
|
16
|
-
/**
|
|
17
|
-
* Save a deployment
|
|
18
|
-
*/
|
|
19
16
|
export declare function saveDeployment(deployment: DeploymentInfo): void;
|
|
20
|
-
/**
|
|
21
|
-
* Load a deployment
|
|
22
|
-
*/
|
|
23
17
|
export declare function loadDeployment(network: string, moduleName: string): DeploymentInfo | null;
|
|
24
18
|
/**
|
|
25
19
|
* Get all deployments for a network
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CA+B/E;AAwBD,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAoB/D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAmBzF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAwBjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIrF"}
|
package/dist/core/deployments.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
|
+
import { logger } from "../ui/index.js";
|
|
3
4
|
/**
|
|
4
5
|
* Validates that a name is safe for use in file paths
|
|
5
6
|
* Only allows alphanumeric characters, hyphens, and underscores
|
|
@@ -15,27 +16,22 @@ export function validateSafeName(name, type) {
|
|
|
15
16
|
`Path traversal sequences are not allowed.\n` +
|
|
16
17
|
`Use only alphanumeric characters, hyphens, and underscores.`);
|
|
17
18
|
}
|
|
19
|
+
// Reject hidden-file names first so the error message is specific
|
|
20
|
+
// (otherwise the alphanumeric check below would fire generically).
|
|
21
|
+
if (name.startsWith(".")) {
|
|
22
|
+
throw new Error(`Invalid ${type} name: "${name}"\n` +
|
|
23
|
+
`Names cannot start with a dot (.) to prevent hidden file creation.`);
|
|
24
|
+
}
|
|
18
25
|
// Only allow alphanumeric, hyphens, underscores
|
|
19
26
|
const safePattern = /^[a-zA-Z0-9_-]+$/;
|
|
20
27
|
if (!safePattern.test(name)) {
|
|
21
28
|
throw new Error(`Invalid ${type} name: "${name}"\n` +
|
|
22
29
|
`Only alphanumeric characters, hyphens (-), and underscores (_) are allowed.`);
|
|
23
30
|
}
|
|
24
|
-
// Additional check: prevent starting with dot (hidden files)
|
|
25
|
-
if (name.startsWith(".")) {
|
|
26
|
-
throw new Error(`Invalid ${type} name: "${name}"\n` +
|
|
27
|
-
`Names cannot start with a dot (.) to prevent hidden file creation.`);
|
|
28
|
-
}
|
|
29
31
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Get the deployments directory path
|
|
32
|
-
*/
|
|
33
32
|
function getDeploymentsDir() {
|
|
34
33
|
return join(process.cwd(), "deployments");
|
|
35
34
|
}
|
|
36
|
-
/**
|
|
37
|
-
* Get the network-specific deployments directory
|
|
38
|
-
*/
|
|
39
35
|
function getNetworkDeploymentsDir(network) {
|
|
40
36
|
// Validate network name to prevent path traversal
|
|
41
37
|
validateSafeName(network, "network");
|
|
@@ -50,9 +46,6 @@ function getNetworkDeploymentsDir(network) {
|
|
|
50
46
|
}
|
|
51
47
|
return networkDir;
|
|
52
48
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Save a deployment
|
|
55
|
-
*/
|
|
56
49
|
export function saveDeployment(deployment) {
|
|
57
50
|
// Validate both network and module name
|
|
58
51
|
validateSafeName(deployment.network, "network");
|
|
@@ -61,16 +54,13 @@ export function saveDeployment(deployment) {
|
|
|
61
54
|
const filePath = join(networkDir, `${deployment.moduleName}.json`);
|
|
62
55
|
try {
|
|
63
56
|
writeFileSync(filePath, JSON.stringify(deployment, null, 2), "utf-8");
|
|
64
|
-
|
|
57
|
+
logger.success(`Deployment saved: deployments/${deployment.network}/${deployment.moduleName}.json`);
|
|
65
58
|
}
|
|
66
59
|
catch (error) {
|
|
67
60
|
console.error(`Failed to save deployment for ${deployment.moduleName} on ${deployment.network} at ${filePath}:`, error);
|
|
68
61
|
throw error;
|
|
69
62
|
}
|
|
70
63
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Load a deployment
|
|
73
|
-
*/
|
|
74
64
|
export function loadDeployment(network, moduleName) {
|
|
75
65
|
// Validate both network and module name
|
|
76
66
|
validateSafeName(network, "network");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare function withYamlLock<T>(fn: () => Promise<T>): Promise<T>;
|
|
2
|
+
export interface ProfileData {
|
|
3
|
+
private_key: string;
|
|
4
|
+
public_key: string;
|
|
5
|
+
account: string;
|
|
6
|
+
rest_url: string;
|
|
7
|
+
}
|
|
8
|
+
/** Add the deploy's profile to ~/.aptos/config.yaml. Creates the file if absent. */
|
|
9
|
+
export declare function addProfile(configPath: string, name: string, data: ProfileData): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Remove the deploy's profile from ~/.aptos/config.yaml. Idempotent —
|
|
12
|
+
* a missing file or missing profile is a no-op. If removal leaves the
|
|
13
|
+
* yaml with only an empty `profiles:` block, the whole file is unlinked
|
|
14
|
+
* to preserve the "didn't exist before" semantic for the first-ever deploy.
|
|
15
|
+
*/
|
|
16
|
+
export declare function removeProfile(configPath: string, name: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Synchronous twin of `removeProfile` for the SIGINT/SIGTERM handler.
|
|
19
|
+
* The event loop is dead by the time the handler runs — we cannot
|
|
20
|
+
* await. Bypasses the async mutex because signal handlers are
|
|
21
|
+
* sequential by construction; the operation is idempotent so a
|
|
22
|
+
* benign double-delete (handler then finally, or vice versa) is fine.
|
|
23
|
+
*/
|
|
24
|
+
export declare function removeProfileSync(configPath: string, name: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Process-level signal handling. A single registered handler iterates
|
|
27
|
+
* the per-deploy cleanup callbacks. Install-once because multiple
|
|
28
|
+
* concurrent deploys share the same parent process — installing per
|
|
29
|
+
* deploy would re-add the listener and exceed Node's max-listeners
|
|
30
|
+
* warning threshold under heavy parallelism.
|
|
31
|
+
*/
|
|
32
|
+
export declare const cleanupCallbacks: Set<() => void>;
|
|
33
|
+
export declare function ensureSignalHandler(): void;
|
|
34
|
+
//# sourceMappingURL=movementProfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"movementProfile.d.ts","sourceRoot":"","sources":["../../src/core/movementProfile.ts"],"names":[],"mappings":"AAgCA,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUhE;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAoBD,oFAAoF;AACpF,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAqBxE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAAiB,IAAI,CAAG,CAAC;AAGtD,wBAAgB,mBAAmB,IAAI,IAAI,CAqB1C"}
|