movehat 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/__tests__/deployContract.test.d.ts +2 -0
- package/dist/__tests__/deployContract.test.d.ts.map +1 -0
- package/dist/__tests__/deployContract.test.js +368 -0
- package/dist/__tests__/deployContract.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +46 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +24 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +1 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.js +82 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +1 -0
- package/dist/__tests__/fork/api.test.d.ts +2 -0
- package/dist/__tests__/fork/api.test.d.ts.map +1 -0
- package/dist/__tests__/fork/api.test.js +110 -0
- package/dist/__tests__/fork/api.test.js.map +1 -0
- package/dist/__tests__/harness/Harness.createLive.test.d.ts +2 -0
- package/dist/__tests__/harness/Harness.createLive.test.d.ts.map +1 -0
- package/dist/__tests__/harness/Harness.createLive.test.js +53 -0
- package/dist/__tests__/harness/Harness.createLive.test.js.map +1 -0
- package/dist/__tests__/harness/Harness.proxy.test.d.ts +2 -0
- package/dist/__tests__/harness/Harness.proxy.test.d.ts.map +1 -0
- package/dist/__tests__/harness/Harness.proxy.test.js +93 -0
- package/dist/__tests__/harness/Harness.proxy.test.js.map +1 -0
- package/dist/__tests__/harness/_fixture.d.ts +54 -0
- package/dist/__tests__/harness/_fixture.d.ts.map +1 -0
- package/dist/__tests__/harness/_fixture.js +69 -0
- package/dist/__tests__/harness/_fixture.js.map +1 -0
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts +2 -0
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts.map +1 -0
- package/dist/__tests__/harness/codeObject.deploy.test.js +288 -0
- package/dist/__tests__/harness/codeObject.deploy.test.js.map +1 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts +2 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts.map +1 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.js +138 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.js.map +1 -0
- package/dist/__tests__/harness/script.test.d.ts +2 -0
- package/dist/__tests__/harness/script.test.d.ts.map +1 -0
- package/dist/__tests__/harness/script.test.js +219 -0
- package/dist/__tests__/harness/script.test.js.map +1 -0
- package/dist/__tests__/harness/view.test.d.ts +2 -0
- package/dist/__tests__/harness/view.test.d.ts.map +1 -0
- package/dist/__tests__/harness/view.test.js +92 -0
- package/dist/__tests__/harness/view.test.js.map +1 -0
- package/dist/__tests__/runtime.test.d.ts +2 -0
- package/dist/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/__tests__/runtime.test.js +141 -0
- package/dist/__tests__/runtime.test.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/__tests__/compile.test.d.ts +2 -0
- package/dist/commands/__tests__/compile.test.d.ts.map +1 -0
- package/dist/commands/__tests__/compile.test.js +351 -0
- package/dist/commands/__tests__/compile.test.js.map +1 -0
- package/dist/commands/__tests__/init.test.d.ts +2 -0
- package/dist/commands/__tests__/init.test.d.ts.map +1 -0
- package/dist/commands/__tests__/init.test.js +101 -0
- package/dist/commands/__tests__/init.test.js.map +1 -0
- package/dist/commands/__tests__/run.test.d.ts +2 -0
- package/dist/commands/__tests__/run.test.d.ts.map +1 -0
- package/dist/commands/__tests__/run.test.js +166 -0
- package/dist/commands/__tests__/run.test.js.map +1 -0
- package/dist/commands/__tests__/test-move.test.d.ts +2 -0
- package/dist/commands/__tests__/test-move.test.d.ts.map +1 -0
- package/dist/commands/__tests__/test-move.test.js +59 -0
- package/dist/commands/__tests__/test-move.test.js.map +1 -0
- package/dist/commands/__tests__/test.test.d.ts +2 -0
- package/dist/commands/__tests__/test.test.d.ts.map +1 -0
- package/dist/commands/__tests__/test.test.js +168 -0
- package/dist/commands/__tests__/test.test.js.map +1 -0
- package/dist/commands/__tests__/update.test.d.ts +2 -0
- package/dist/commands/__tests__/update.test.d.ts.map +1 -0
- package/dist/commands/__tests__/update.test.js +176 -0
- package/dist/commands/__tests__/update.test.js.map +1 -0
- package/dist/commands/compile.d.ts +7 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +150 -33
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/fork/__tests__/create.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/create.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/create.test.js +108 -0
- package/dist/commands/fork/__tests__/create.test.js.map +1 -0
- package/dist/commands/fork/__tests__/fund.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/fund.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/fund.test.js +72 -0
- package/dist/commands/fork/__tests__/fund.test.js.map +1 -0
- package/dist/commands/fork/__tests__/list.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/list.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/list.test.js +119 -0
- package/dist/commands/fork/__tests__/list.test.js.map +1 -0
- package/dist/commands/fork/__tests__/serve.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/serve.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/serve.test.js +97 -0
- package/dist/commands/fork/__tests__/serve.test.js.map +1 -0
- package/dist/commands/fork/__tests__/view-resource.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/view-resource.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/view-resource.test.js +77 -0
- package/dist/commands/fork/__tests__/view-resource.test.js.map +1 -0
- package/dist/commands/fork/create.d.ts +1 -1
- package/dist/commands/fork/create.d.ts.map +1 -1
- package/dist/commands/fork/create.js +3 -2
- package/dist/commands/fork/create.js.map +1 -1
- package/dist/commands/fork/fund.d.ts.map +1 -1
- package/dist/commands/fork/fund.js +15 -8
- package/dist/commands/fork/fund.js.map +1 -1
- package/dist/commands/fork/list.d.ts.map +1 -1
- package/dist/commands/fork/list.js +2 -1
- package/dist/commands/fork/list.js.map +1 -1
- package/dist/commands/fork/serve.d.ts +1 -0
- package/dist/commands/fork/serve.d.ts.map +1 -1
- package/dist/commands/fork/serve.js +4 -2
- package/dist/commands/fork/serve.js.map +1 -1
- package/dist/commands/fork/view-resource.d.ts.map +1 -1
- package/dist/commands/fork/view-resource.js +10 -5
- package/dist/commands/fork/view-resource.js.map +1 -1
- package/dist/commands/run.d.ts +15 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +50 -27
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/test-move.d.ts.map +1 -1
- package/dist/commands/test-move.js +3 -2
- package/dist/commands/test-move.js.map +1 -1
- package/dist/commands/test.js +52 -46
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +15 -13
- package/dist/commands/update.js.map +1 -1
- package/dist/core/AccountManager.d.ts +1 -1
- package/dist/core/AccountManager.d.ts.map +1 -1
- package/dist/core/AccountManager.js +20 -7
- package/dist/core/AccountManager.js.map +1 -1
- package/dist/core/Publisher.d.ts +31 -0
- package/dist/core/Publisher.d.ts.map +1 -0
- package/dist/core/Publisher.js +248 -0
- package/dist/core/Publisher.js.map +1 -0
- package/dist/core/__tests__/AccountManager.test.d.ts +2 -0
- package/dist/core/__tests__/AccountManager.test.d.ts.map +1 -0
- package/dist/core/__tests__/AccountManager.test.js +239 -0
- package/dist/core/__tests__/AccountManager.test.js.map +1 -0
- package/dist/core/__tests__/config.test.d.ts +2 -0
- package/dist/core/__tests__/config.test.d.ts.map +1 -0
- package/dist/core/__tests__/config.test.js +311 -0
- package/dist/core/__tests__/config.test.js.map +1 -0
- package/dist/core/__tests__/deployments.test.d.ts +2 -0
- package/dist/core/__tests__/deployments.test.d.ts.map +1 -0
- package/dist/core/__tests__/deployments.test.js +201 -0
- package/dist/core/__tests__/deployments.test.js.map +1 -0
- package/dist/core/__tests__/shell.test.d.ts +2 -0
- package/dist/core/__tests__/shell.test.d.ts.map +1 -0
- package/dist/core/__tests__/shell.test.js +107 -0
- package/dist/core/__tests__/shell.test.js.map +1 -0
- package/dist/core/config.d.ts +13 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +80 -11
- package/dist/core/config.js.map +1 -1
- package/dist/core/contract.d.ts +1 -1
- package/dist/core/contract.d.ts.map +1 -1
- package/dist/core/contract.js +15 -4
- package/dist/core/contract.js.map +1 -1
- package/dist/core/deployments.d.ts +2 -2
- package/dist/core/deployments.d.ts.map +1 -1
- package/dist/core/deployments.js +8 -6
- package/dist/core/deployments.js.map +1 -1
- package/dist/core/movementProfile.d.ts +34 -0
- package/dist/core/movementProfile.d.ts.map +1 -0
- package/dist/core/movementProfile.js +150 -0
- package/dist/core/movementProfile.js.map +1 -0
- package/dist/core/shell.d.ts +23 -7
- package/dist/core/shell.d.ts.map +1 -1
- package/dist/core/shell.js +32 -14
- package/dist/core/shell.js.map +1 -1
- package/dist/errors.d.ts +35 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +54 -0
- package/dist/errors.js.map +1 -1
- package/dist/fork/__tests__/manager.test.d.ts +2 -0
- package/dist/fork/__tests__/manager.test.d.ts.map +1 -0
- package/dist/fork/__tests__/manager.test.js +309 -0
- package/dist/fork/__tests__/manager.test.js.map +1 -0
- package/dist/fork/__tests__/server.test.d.ts +2 -0
- package/dist/fork/__tests__/server.test.d.ts.map +1 -0
- package/dist/fork/__tests__/server.test.js +54 -0
- package/dist/fork/__tests__/server.test.js.map +1 -0
- package/dist/fork/__tests__/storage.test.d.ts +2 -0
- package/dist/fork/__tests__/storage.test.d.ts.map +1 -0
- package/dist/fork/__tests__/storage.test.js +222 -0
- package/dist/fork/__tests__/storage.test.js.map +1 -0
- package/dist/fork/__tests__/test.test.d.ts +2 -0
- package/dist/fork/__tests__/test.test.d.ts.map +1 -0
- package/dist/fork/__tests__/test.test.js +81 -0
- package/dist/fork/__tests__/test.test.js.map +1 -0
- package/dist/fork/api.d.ts +14 -3
- package/dist/fork/api.d.ts.map +1 -1
- package/dist/fork/api.js +25 -14
- package/dist/fork/api.js.map +1 -1
- package/dist/fork/manager.d.ts +23 -9
- package/dist/fork/manager.d.ts.map +1 -1
- package/dist/fork/manager.js +79 -36
- package/dist/fork/manager.js.map +1 -1
- package/dist/fork/server.d.ts +11 -3
- package/dist/fork/server.d.ts.map +1 -1
- package/dist/fork/server.js +45 -13
- package/dist/fork/server.js.map +1 -1
- package/dist/fork/storage.d.ts +4 -4
- package/dist/fork/storage.d.ts.map +1 -1
- package/dist/fork/storage.js +7 -9
- package/dist/fork/storage.js.map +1 -1
- package/dist/fork/test.d.ts +13 -4
- package/dist/fork/test.d.ts.map +1 -1
- package/dist/fork/test.js +36 -27
- package/dist/fork/test.js.map +1 -1
- package/dist/harness/Harness.d.ts +124 -0
- package/dist/harness/Harness.d.ts.map +1 -0
- package/dist/harness/Harness.js +193 -0
- package/dist/harness/Harness.js.map +1 -0
- package/dist/harness/codeObject.d.ts +31 -0
- package/dist/harness/codeObject.d.ts.map +1 -0
- package/dist/harness/codeObject.js +271 -0
- package/dist/harness/codeObject.js.map +1 -0
- package/dist/harness/errors.d.ts +14 -0
- package/dist/harness/errors.d.ts.map +1 -0
- package/dist/harness/errors.js +22 -0
- package/dist/harness/errors.js.map +1 -0
- package/dist/harness/index.d.ts +4 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +3 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/proxy.d.ts +7 -0
- package/dist/harness/proxy.d.ts.map +1 -0
- package/dist/harness/proxy.js +36 -0
- package/dist/harness/proxy.js.map +1 -0
- package/dist/harness/script.d.ts +21 -0
- package/dist/harness/script.d.ts.map +1 -0
- package/dist/harness/script.js +155 -0
- package/dist/harness/script.js.map +1 -0
- package/dist/harness/view.d.ts +22 -0
- package/dist/harness/view.d.ts.map +1 -0
- package/dist/harness/view.js +28 -0
- package/dist/harness/view.js.map +1 -0
- package/dist/helpers/__tests__/semver-utils.test.d.ts +2 -0
- package/dist/helpers/__tests__/semver-utils.test.d.ts.map +1 -0
- package/dist/helpers/__tests__/semver-utils.test.js +103 -0
- package/dist/helpers/__tests__/semver-utils.test.js.map +1 -0
- package/dist/helpers/index.d.ts +3 -2
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +2 -2
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/move-tests.d.ts +3 -3
- package/dist/helpers/move-tests.d.ts.map +1 -1
- package/dist/helpers/move-tests.js +21 -20
- package/dist/helpers/move-tests.js.map +1 -1
- package/dist/helpers/npm-registry.d.ts.map +1 -1
- package/dist/helpers/npm-registry.js +1 -3
- package/dist/helpers/npm-registry.js.map +1 -1
- package/dist/helpers/semver-utils.d.ts.map +1 -1
- package/dist/helpers/semver-utils.js +4 -3
- package/dist/helpers/semver-utils.js.map +1 -1
- package/dist/helpers/setup.d.ts.map +1 -1
- package/dist/helpers/setup.js +10 -6
- package/dist/helpers/setup.js.map +1 -1
- package/dist/helpers/setupLocalTesting.d.ts +32 -27
- package/dist/helpers/setupLocalTesting.d.ts.map +1 -1
- package/dist/helpers/setupLocalTesting.js +179 -180
- package/dist/helpers/setupLocalTesting.js.map +1 -1
- package/dist/helpers/testFixtures.d.ts +19 -53
- package/dist/helpers/testFixtures.d.ts.map +1 -1
- package/dist/helpers/testFixtures.js +89 -107
- package/dist/helpers/testFixtures.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/node/LocalNodeManager.d.ts +9 -1
- package/dist/node/LocalNodeManager.d.ts.map +1 -1
- package/dist/node/LocalNodeManager.js +75 -58
- package/dist/node/LocalNodeManager.js.map +1 -1
- package/dist/node/__tests__/LocalNodeManager.test.d.ts +2 -0
- package/dist/node/__tests__/LocalNodeManager.test.d.ts.map +1 -0
- package/dist/node/__tests__/LocalNodeManager.test.js +349 -0
- package/dist/node/__tests__/LocalNodeManager.test.js.map +1 -0
- package/dist/runtime.d.ts +12 -15
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +32 -241
- package/dist/runtime.js.map +1 -1
- package/dist/templates/README.md +1 -1
- package/dist/templates/movehat.config.ts +10 -0
- package/dist/templates/package.json +2 -1
- package/dist/templates/scripts/deploy-counter.ts +46 -38
- package/dist/templates/tests/Counter.test.ts +51 -51
- package/dist/templates/types/movehat.d.ts +6 -9
- package/dist/types/config.d.ts +8 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/fork.d.ts +7 -1
- package/dist/types/fork.d.ts.map +1 -1
- package/dist/types/harness.d.ts +166 -0
- package/dist/types/harness.d.ts.map +1 -0
- package/dist/types/harness.js +2 -0
- package/dist/types/harness.js.map +1 -0
- package/dist/types/runtime.d.ts +7 -1
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/ui/__tests__/colors.test.d.ts +2 -0
- package/dist/ui/__tests__/colors.test.d.ts.map +1 -0
- package/dist/ui/__tests__/colors.test.js +127 -0
- package/dist/ui/__tests__/colors.test.js.map +1 -0
- package/dist/ui/colors.d.ts.map +1 -1
- package/dist/ui/colors.js +6 -2
- package/dist/ui/colors.js.map +1 -1
- package/dist/ui/logger.d.ts +17 -0
- package/dist/ui/logger.d.ts.map +1 -1
- package/dist/ui/logger.js +22 -0
- package/dist/ui/logger.js.map +1 -1
- package/dist/ui/symbols.d.ts +1 -0
- package/dist/ui/symbols.d.ts.map +1 -1
- package/dist/ui/symbols.js +7 -1
- package/dist/ui/symbols.js.map +1 -1
- package/dist/utils/__tests__/address.test.d.ts +2 -0
- package/dist/utils/__tests__/address.test.d.ts.map +1 -0
- package/dist/utils/__tests__/address.test.js +70 -0
- package/dist/utils/__tests__/address.test.js.map +1 -0
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts +2 -0
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts.map +1 -0
- package/dist/utils/__tests__/childProcessAdapter.test.js +217 -0
- package/dist/utils/__tests__/childProcessAdapter.test.js.map +1 -0
- package/dist/utils/__tests__/runCli.test.d.ts +2 -0
- package/dist/utils/__tests__/runCli.test.d.ts.map +1 -0
- package/dist/utils/__tests__/runCli.test.js +187 -0
- package/dist/utils/__tests__/runCli.test.js.map +1 -0
- package/dist/utils/address.d.ts +33 -0
- package/dist/utils/address.d.ts.map +1 -0
- package/dist/utils/address.js +52 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/childProcessAdapter.d.ts +93 -0
- package/dist/utils/childProcessAdapter.d.ts.map +1 -0
- package/dist/utils/childProcessAdapter.js +109 -0
- package/dist/utils/childProcessAdapter.js.map +1 -0
- package/dist/utils/parseCliOutput.d.ts +20 -0
- package/dist/utils/parseCliOutput.d.ts.map +1 -0
- package/dist/utils/parseCliOutput.js +26 -0
- package/dist/utils/parseCliOutput.js.map +1 -0
- package/dist/utils/redact.d.ts +15 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +24 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/runCli.d.ts +24 -0
- package/dist/utils/runCli.d.ts.map +1 -0
- package/dist/utils/runCli.js +37 -0
- package/dist/utils/runCli.js.map +1 -0
- package/package.json +14 -4
- package/src/__tests__/deployContract.test.ts +429 -0
- package/src/__tests__/errors.test.ts +84 -0
- package/src/__tests__/fixtures/sigint-deploy-harness.ts +95 -0
- package/src/__tests__/fork/api.test.ts +143 -0
- package/src/__tests__/harness/Harness.createLive.test.ts +57 -0
- package/src/__tests__/harness/Harness.proxy.test.ts +115 -0
- package/src/__tests__/harness/_fixture.ts +131 -0
- package/src/__tests__/harness/codeObject.deploy.test.ts +319 -0
- package/src/__tests__/harness/codeObject.upgrade.test.ts +156 -0
- package/src/__tests__/harness/script.test.ts +245 -0
- package/src/__tests__/harness/view.test.ts +104 -0
- package/src/__tests__/runtime.test.ts +182 -0
- package/src/cli.ts +2 -1
- package/src/commands/__tests__/compile.test.ts +407 -0
- package/src/commands/__tests__/init.test.ts +125 -0
- package/src/commands/__tests__/run.test.ts +192 -0
- package/src/commands/__tests__/test-move.test.ts +81 -0
- package/src/commands/__tests__/test.test.ts +204 -0
- package/src/commands/__tests__/update.test.ts +223 -0
- package/src/commands/compile.ts +168 -32
- package/src/commands/fork/__tests__/create.test.ts +132 -0
- package/src/commands/fork/__tests__/fund.test.ts +104 -0
- package/src/commands/fork/__tests__/list.test.ts +139 -0
- package/src/commands/fork/__tests__/serve.test.ts +121 -0
- package/src/commands/fork/__tests__/view-resource.test.ts +101 -0
- package/src/commands/fork/create.ts +4 -3
- package/src/commands/fork/fund.ts +16 -9
- package/src/commands/fork/list.ts +3 -2
- package/src/commands/fork/serve.ts +6 -3
- package/src/commands/fork/view-resource.ts +11 -6
- package/src/commands/run.ts +54 -28
- package/src/commands/test-move.ts +4 -3
- package/src/commands/test.ts +56 -44
- package/src/commands/update.ts +19 -16
- package/src/core/AccountManager.ts +23 -10
- package/src/core/Publisher.ts +322 -0
- package/src/core/__tests__/AccountManager.test.ts +290 -0
- package/src/core/__tests__/config.test.ts +377 -0
- package/src/core/__tests__/deployments.test.ts +247 -0
- package/src/core/__tests__/shell.test.ts +138 -0
- package/src/core/config.ts +96 -12
- package/src/core/contract.ts +13 -4
- package/src/core/deployments.ts +13 -11
- package/src/core/movementProfile.ts +179 -0
- package/src/core/shell.ts +34 -14
- package/src/errors.ts +60 -0
- package/src/fork/__tests__/manager.test.ts +385 -0
- package/src/fork/__tests__/server.test.ts +65 -0
- package/src/fork/__tests__/storage.test.ts +281 -0
- package/src/fork/__tests__/test.test.ts +97 -0
- package/src/fork/api.ts +28 -14
- package/src/fork/manager.ts +88 -43
- package/src/fork/server.ts +53 -19
- package/src/fork/storage.ts +12 -15
- package/src/fork/test.ts +58 -32
- package/src/harness/Harness.ts +228 -0
- package/src/harness/codeObject.ts +388 -0
- package/src/harness/errors.ts +22 -0
- package/src/harness/index.ts +3 -0
- package/src/harness/proxy.ts +40 -0
- package/src/harness/script.ts +196 -0
- package/src/harness/view.ts +34 -0
- package/src/helpers/__tests__/semver-utils.test.ts +121 -0
- package/src/helpers/index.ts +2 -8
- package/src/helpers/move-tests.ts +27 -23
- package/src/helpers/npm-registry.ts +4 -3
- package/src/helpers/semver-utils.ts +4 -3
- package/src/helpers/setup.ts +9 -5
- package/src/helpers/setupLocalTesting.ts +219 -200
- package/src/helpers/testFixtures.ts +106 -118
- package/src/index.ts +9 -3
- package/src/node/LocalNodeManager.ts +87 -62
- package/src/node/__tests__/LocalNodeManager.test.ts +452 -0
- package/src/runtime.ts +33 -289
- package/src/templates/README.md +1 -1
- package/src/templates/movehat.config.ts +10 -0
- package/src/templates/package.json +2 -1
- package/src/templates/scripts/deploy-counter.ts +46 -38
- package/src/templates/tests/Counter.test.ts +51 -51
- package/src/templates/types/movehat.d.ts +6 -9
- package/src/types/config.ts +8 -0
- package/src/types/fork.ts +7 -1
- package/src/types/harness.ts +182 -0
- package/src/types/runtime.ts +11 -3
- package/src/ui/__tests__/colors.test.ts +156 -0
- package/src/ui/colors.ts +5 -2
- package/src/ui/logger.ts +22 -0
- package/src/ui/symbols.ts +7 -1
- package/src/utils/__tests__/address.test.ts +93 -0
- package/src/utils/__tests__/childProcessAdapter.test.ts +266 -0
- package/src/utils/__tests__/runCli.test.ts +240 -0
- package/src/utils/address.ts +56 -0
- package/src/utils/childProcessAdapter.ts +215 -0
- package/src/utils/parseCliOutput.ts +27 -0
- package/src/utils/redact.ts +24 -0
- package/src/utils/runCli.ts +64 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
+
import { vol } from 'memfs';
|
|
3
|
+
import { ForkStorage } from '../storage.js';
|
|
4
|
+
|
|
5
|
+
// Mock fs module
|
|
6
|
+
vi.mock('fs', async () => {
|
|
7
|
+
const memfs = await import('memfs');
|
|
8
|
+
return memfs.fs;
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
describe('ForkStorage', () => {
|
|
12
|
+
const forkPath = '/test-fork';
|
|
13
|
+
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
vol.reset();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
vol.reset();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('initialize', () => {
|
|
23
|
+
it('should create fork directory structure', () => {
|
|
24
|
+
const storage = new ForkStorage(forkPath);
|
|
25
|
+
storage.initialize();
|
|
26
|
+
|
|
27
|
+
expect(vol.existsSync(forkPath)).toBe(true);
|
|
28
|
+
expect(vol.existsSync(`${forkPath}/resources`)).toBe(true);
|
|
29
|
+
expect(vol.existsSync(`${forkPath}/cache`)).toBe(true);
|
|
30
|
+
expect(vol.existsSync(`${forkPath}/cache/.gitignore`)).toBe(true);
|
|
31
|
+
expect(vol.existsSync(`${forkPath}/accounts.json`)).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('should not overwrite existing files', () => {
|
|
35
|
+
vol.fromJSON({
|
|
36
|
+
[`${forkPath}/accounts.json`]: '{"existing": "data"}',
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const storage = new ForkStorage(forkPath);
|
|
40
|
+
storage.initialize();
|
|
41
|
+
|
|
42
|
+
const content = vol.readFileSync(`${forkPath}/accounts.json`, 'utf-8');
|
|
43
|
+
expect(content).toBe('{"existing": "data"}');
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe('exists', () => {
|
|
48
|
+
it('should return false if fork does not exist', () => {
|
|
49
|
+
const storage = new ForkStorage(forkPath);
|
|
50
|
+
expect(storage.exists()).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('should return false if metadata.json is missing', () => {
|
|
54
|
+
vol.fromJSON({
|
|
55
|
+
[`${forkPath}/accounts.json`]: '{}',
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const storage = new ForkStorage(forkPath);
|
|
59
|
+
expect(storage.exists()).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('should return true if fork exists with metadata', () => {
|
|
63
|
+
vol.fromJSON({
|
|
64
|
+
[`${forkPath}/metadata.json`]: '{}',
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const storage = new ForkStorage(forkPath);
|
|
68
|
+
expect(storage.exists()).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe('metadata', () => {
|
|
73
|
+
it('should save and load metadata', () => {
|
|
74
|
+
vol.mkdirSync(forkPath, { recursive: true });
|
|
75
|
+
|
|
76
|
+
const storage = new ForkStorage(forkPath);
|
|
77
|
+
const metadata = {
|
|
78
|
+
network: 'testnet',
|
|
79
|
+
nodeUrl: 'https://testnet.example.com/v1',
|
|
80
|
+
chainId: 250,
|
|
81
|
+
ledgerVersion: '12345',
|
|
82
|
+
timestamp: '1234567890',
|
|
83
|
+
epoch: '100',
|
|
84
|
+
blockHeight: '1000',
|
|
85
|
+
createdAt: '2024-01-01T00:00:00.000Z',
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
storage.saveMetadata(metadata);
|
|
89
|
+
const loaded = storage.loadMetadata();
|
|
90
|
+
|
|
91
|
+
expect(loaded).toEqual(metadata);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('should throw error if metadata does not exist', () => {
|
|
95
|
+
const storage = new ForkStorage(forkPath);
|
|
96
|
+
expect(() => storage.loadMetadata()).toThrow('Fork metadata not found');
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
describe('accounts', () => {
|
|
101
|
+
it('should save and get account state', () => {
|
|
102
|
+
vol.fromJSON({
|
|
103
|
+
[`${forkPath}/accounts.json`]: '{}',
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
const storage = new ForkStorage(forkPath);
|
|
107
|
+
const accountState = {
|
|
108
|
+
sequenceNumber: '10',
|
|
109
|
+
authenticationKey: '0xabc123',
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
storage.saveAccount('0x123', accountState);
|
|
113
|
+
const loaded = storage.getAccount('0x123');
|
|
114
|
+
|
|
115
|
+
expect(loaded).toEqual(accountState);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it('should return null for non-existent account', () => {
|
|
119
|
+
vol.fromJSON({
|
|
120
|
+
[`${forkPath}/accounts.json`]: '{}',
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
const storage = new ForkStorage(forkPath);
|
|
124
|
+
const result = storage.getAccount('0xnonexistent');
|
|
125
|
+
|
|
126
|
+
expect(result).toBeNull();
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('should list all accounts', () => {
|
|
130
|
+
vol.fromJSON({
|
|
131
|
+
[`${forkPath}/accounts.json`]: JSON.stringify({
|
|
132
|
+
'0x1': { sequenceNumber: '0' },
|
|
133
|
+
'0x2': { sequenceNumber: '5' },
|
|
134
|
+
'0x3': { sequenceNumber: '10' },
|
|
135
|
+
}),
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const storage = new ForkStorage(forkPath);
|
|
139
|
+
const accounts = storage.listAccounts();
|
|
140
|
+
|
|
141
|
+
expect(accounts).toHaveLength(3);
|
|
142
|
+
expect(accounts).toContain('0x1');
|
|
143
|
+
expect(accounts).toContain('0x2');
|
|
144
|
+
expect(accounts).toContain('0x3');
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it('should clear all accounts', () => {
|
|
148
|
+
vol.fromJSON({
|
|
149
|
+
[`${forkPath}/accounts.json`]: JSON.stringify({
|
|
150
|
+
'0x1': { sequenceNumber: '0' },
|
|
151
|
+
}),
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
const storage = new ForkStorage(forkPath);
|
|
155
|
+
storage.clearAccounts();
|
|
156
|
+
|
|
157
|
+
const accounts = storage.listAccounts();
|
|
158
|
+
expect(accounts).toHaveLength(0);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
describe('resources', () => {
|
|
163
|
+
beforeEach(() => {
|
|
164
|
+
vol.fromJSON({
|
|
165
|
+
[`${forkPath}/resources/.gitkeep`]: '',
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
it('should save and get resource', () => {
|
|
170
|
+
const storage = new ForkStorage(forkPath);
|
|
171
|
+
const resource = { value: '100' };
|
|
172
|
+
|
|
173
|
+
storage.saveResource('0x1', '0x1::coin::CoinStore', resource);
|
|
174
|
+
const loaded = storage.getResource('0x1', '0x1::coin::CoinStore');
|
|
175
|
+
|
|
176
|
+
expect(loaded).toEqual(resource);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it('should return null for non-existent resource', () => {
|
|
180
|
+
const storage = new ForkStorage(forkPath);
|
|
181
|
+
const result = storage.getResource('0x1', '0x1::nonexistent::Resource');
|
|
182
|
+
|
|
183
|
+
expect(result).toBeNull();
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it('should get all resources for an account', () => {
|
|
187
|
+
vol.fromJSON({
|
|
188
|
+
[`${forkPath}/resources/0x1.json`]: JSON.stringify({
|
|
189
|
+
'0x1::coin::CoinStore': { value: '100' },
|
|
190
|
+
'0x1::account::Account': { sequence: '5' },
|
|
191
|
+
}),
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
const storage = new ForkStorage(forkPath);
|
|
195
|
+
const resources = storage.getAllResources('0x1');
|
|
196
|
+
|
|
197
|
+
expect(Object.keys(resources)).toHaveLength(2);
|
|
198
|
+
expect(resources['0x1::coin::CoinStore']).toEqual({ value: '100' });
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it('should check if resource exists', () => {
|
|
202
|
+
vol.fromJSON({
|
|
203
|
+
[`${forkPath}/resources/0x1.json`]: JSON.stringify({
|
|
204
|
+
'0x1::coin::CoinStore': { value: '100' },
|
|
205
|
+
}),
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
const storage = new ForkStorage(forkPath);
|
|
209
|
+
|
|
210
|
+
expect(storage.hasResource('0x1', '0x1::coin::CoinStore')).toBe(true);
|
|
211
|
+
expect(storage.hasResource('0x1', '0x1::nonexistent::Resource')).toBe(false);
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
it('should clear all resources', () => {
|
|
215
|
+
vol.fromJSON({
|
|
216
|
+
[`${forkPath}/resources/0x1.json`]: '{}',
|
|
217
|
+
[`${forkPath}/resources/0x2.json`]: '{}',
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
const storage = new ForkStorage(forkPath);
|
|
221
|
+
storage.clearResources();
|
|
222
|
+
|
|
223
|
+
expect(vol.existsSync(`${forkPath}/resources/0x1.json`)).toBe(false);
|
|
224
|
+
expect(vol.existsSync(`${forkPath}/resources/0x2.json`)).toBe(false);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
describe('address sanitization', () => {
|
|
229
|
+
beforeEach(() => {
|
|
230
|
+
vol.fromJSON({
|
|
231
|
+
[`${forkPath}/resources/.gitkeep`]: '',
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
it('should handle addresses with 0x prefix', () => {
|
|
236
|
+
const storage = new ForkStorage(forkPath);
|
|
237
|
+
storage.saveResource('0xabc123', 'test::Resource', { value: 1 });
|
|
238
|
+
|
|
239
|
+
expect(vol.existsSync(`${forkPath}/resources/0xabc123.json`)).toBe(true);
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
it('should normalize address to lowercase', () => {
|
|
243
|
+
const storage = new ForkStorage(forkPath);
|
|
244
|
+
storage.saveResource('0xABC123', 'test::Resource', { value: 1 });
|
|
245
|
+
|
|
246
|
+
expect(vol.existsSync(`${forkPath}/resources/0xabc123.json`)).toBe(true);
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
it('should reject invalid address formats', () => {
|
|
250
|
+
const storage = new ForkStorage(forkPath);
|
|
251
|
+
|
|
252
|
+
expect(() => {
|
|
253
|
+
storage.saveResource('../../../etc/passwd', 'test::Resource', { value: 1 });
|
|
254
|
+
}).toThrow('Invalid address format');
|
|
255
|
+
|
|
256
|
+
expect(() => {
|
|
257
|
+
storage.saveResource('0x123/../../etc', 'test::Resource', { value: 1 });
|
|
258
|
+
}).toThrow('Invalid address format');
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
it('should reject addresses with more than 64 hex chars (Movement cap)', () => {
|
|
262
|
+
const storage = new ForkStorage(forkPath);
|
|
263
|
+
const sixtyFiveHex = '0x' + 'a'.repeat(65);
|
|
264
|
+
|
|
265
|
+
expect(() => {
|
|
266
|
+
storage.saveResource(sixtyFiveHex, 'test::Resource', { value: 1 });
|
|
267
|
+
}).toThrow('Invalid address format');
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
it('should accept addresses exactly at the 64 hex char limit', () => {
|
|
271
|
+
const storage = new ForkStorage(forkPath);
|
|
272
|
+
const sixtyFourHex = '0x' + 'a'.repeat(64);
|
|
273
|
+
|
|
274
|
+
expect(() => {
|
|
275
|
+
storage.saveResource(sixtyFourHex, 'test::Resource', { value: 1 });
|
|
276
|
+
}).not.toThrow();
|
|
277
|
+
|
|
278
|
+
expect(vol.existsSync(`${forkPath}/resources/${sixtyFourHex}.json`)).toBe(true);
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
});
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { snapshot, viewForkResource } from '../test.js';
|
|
6
|
+
import type { ChildProcessAdapter, RunResult } from '../../utils/childProcessAdapter.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Guards the exitCode-failure path that CodeRabbit flagged on PR #100:
|
|
10
|
+
* before this hardening, an `aptos` command that exited non-zero with a
|
|
11
|
+
* stderr containing the word "Success" (or no stderr at all) could slip
|
|
12
|
+
* past the stderr-defense check in `snapshot`, and a non-JSON stderr from
|
|
13
|
+
* `view-resource` produced a cryptic JSON parse error instead of the
|
|
14
|
+
* actual aptos failure.
|
|
15
|
+
*/
|
|
16
|
+
describe('fork/test — exitCode failure paths', () => {
|
|
17
|
+
let tmpCwd: string;
|
|
18
|
+
let origCwd: string;
|
|
19
|
+
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
tmpCwd = mkdtempSync(join(tmpdir(), 'movehat-fork-test-'));
|
|
22
|
+
origCwd = process.cwd();
|
|
23
|
+
process.chdir(tmpCwd);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
try {
|
|
28
|
+
process.chdir(origCwd);
|
|
29
|
+
} finally {
|
|
30
|
+
rmSync(tmpCwd, { recursive: true, force: true });
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
function adapterReturning(result: RunResult): ChildProcessAdapter {
|
|
35
|
+
return {
|
|
36
|
+
async run() {
|
|
37
|
+
return result;
|
|
38
|
+
},
|
|
39
|
+
spawn() {
|
|
40
|
+
throw new Error('spawn not used in fork/test failure-path tests');
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
it("snapshot throws on non-zero exit even when stderr contains 'Success'", async () => {
|
|
46
|
+
// The pre-fix edge case: aptos exits 1, stderr says
|
|
47
|
+
// "Failed: Success criteria not met" → the stderr.includes('Success')
|
|
48
|
+
// gate returned false-positive ok, and a stale directory from a prior
|
|
49
|
+
// run would mask the failure entirely.
|
|
50
|
+
const adapter = adapterReturning({
|
|
51
|
+
exitCode: 1,
|
|
52
|
+
stdout: '',
|
|
53
|
+
stderr: 'Failed: Success criteria not met for snapshot init',
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
await expect(snapshot({ name: 'edge', adapter })).rejects.toThrow(
|
|
57
|
+
/Success criteria not met/
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('snapshot still throws when a stale directory from a prior run exists (the full edge case)', async () => {
|
|
62
|
+
// The pre-fix combined edge case: aptos exits non-zero, stderr happens
|
|
63
|
+
// to contain "Success" (so the stderr.includes('Success') gate would
|
|
64
|
+
// false-positive), AND the snapshot directory already exists from a
|
|
65
|
+
// previous successful run (so the existsSync check would false-positive
|
|
66
|
+
// too). The new exitCode check fires first and throws regardless.
|
|
67
|
+
const stalePath = join(tmpCwd, '.movehat', 'snapshots', 'stale');
|
|
68
|
+
mkdirSync(stalePath, { recursive: true });
|
|
69
|
+
writeFileSync(join(stalePath, 'config.json'), '{}');
|
|
70
|
+
|
|
71
|
+
const adapter = adapterReturning({
|
|
72
|
+
exitCode: 1,
|
|
73
|
+
stdout: '',
|
|
74
|
+
stderr: 'Failed but Success was nearby',
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
await expect(
|
|
78
|
+
snapshot({ name: 'stale', path: stalePath, adapter })
|
|
79
|
+
).rejects.toThrow(/Failed but Success was nearby/);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('viewForkResource throws on non-zero exit with non-JSON stderr (informative message)', async () => {
|
|
83
|
+
// Pre-fix the failure surfaced as "Unexpected token ..." from
|
|
84
|
+
// JSON.parse, which obscured the actual aptos error.
|
|
85
|
+
const adapter = adapterReturning({
|
|
86
|
+
exitCode: 1,
|
|
87
|
+
stdout: '',
|
|
88
|
+
stderr: 'Error: session not found',
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
await expect(
|
|
92
|
+
viewForkResource('/nonexistent/session', '0x1', '0x1::coin::CoinStore', {
|
|
93
|
+
adapter,
|
|
94
|
+
})
|
|
95
|
+
).rejects.toThrow(/session not found/);
|
|
96
|
+
});
|
|
97
|
+
});
|
package/src/fork/api.ts
CHANGED
|
@@ -2,14 +2,21 @@ import https from 'https';
|
|
|
2
2
|
import http from 'http';
|
|
3
3
|
import { URL } from 'url';
|
|
4
4
|
import type { LedgerInfo, AccountData, AccountResource } from '../types/fork.js';
|
|
5
|
+
import { normalizeAddressShort } from '../utils/address.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
|
-
* Client for interacting with Movement
|
|
8
|
+
* Client for interacting with Movement L1 JSON API.
|
|
9
|
+
*
|
|
10
|
+
* When constructed with an `apiKey`, every outgoing request carries
|
|
11
|
+
* an `Authorization: Bearer <apiKey>` header. Use this for rate-
|
|
12
|
+
* limited public endpoints (e.g. Movement testnet under load) or
|
|
13
|
+
* auth-gated nodes.
|
|
8
14
|
*/
|
|
9
15
|
export class MovementApiClient {
|
|
10
16
|
private nodeUrl: string;
|
|
17
|
+
private readonly apiKey?: string;
|
|
11
18
|
|
|
12
|
-
constructor(nodeUrl: string) {
|
|
19
|
+
constructor(nodeUrl: string, apiKey?: string) {
|
|
13
20
|
// Remove trailing slash
|
|
14
21
|
let normalized = nodeUrl.replace(/\/$/, '');
|
|
15
22
|
|
|
@@ -20,10 +27,16 @@ export class MovementApiClient {
|
|
|
20
27
|
}
|
|
21
28
|
|
|
22
29
|
this.nodeUrl = normalized;
|
|
30
|
+
if (apiKey !== undefined) this.apiKey = apiKey;
|
|
23
31
|
}
|
|
24
32
|
|
|
25
33
|
/**
|
|
26
|
-
* Make a GET request to the API
|
|
34
|
+
* Make a GET request to the API.
|
|
35
|
+
*
|
|
36
|
+
* Adds `Authorization: Bearer <apiKey>` when the client was
|
|
37
|
+
* constructed with an `apiKey`. The header is omitted otherwise
|
|
38
|
+
* to preserve backwards-compatible behavior for unauthenticated
|
|
39
|
+
* public endpoints.
|
|
27
40
|
*/
|
|
28
41
|
private async get<T>(path: string): Promise<T> {
|
|
29
42
|
const fullUrl = `${this.nodeUrl}${path}`;
|
|
@@ -31,8 +44,16 @@ export class MovementApiClient {
|
|
|
31
44
|
const isHttps = parsedUrl.protocol === 'https:';
|
|
32
45
|
const client = isHttps ? https : http;
|
|
33
46
|
|
|
47
|
+
const requestOptions: {
|
|
48
|
+
method: 'GET';
|
|
49
|
+
headers?: Record<string, string>;
|
|
50
|
+
} = { method: 'GET' };
|
|
51
|
+
if (this.apiKey !== undefined) {
|
|
52
|
+
requestOptions.headers = { Authorization: `Bearer ${this.apiKey}` };
|
|
53
|
+
}
|
|
54
|
+
|
|
34
55
|
return new Promise((resolve, reject) => {
|
|
35
|
-
const req = client.get(fullUrl, (res) => {
|
|
56
|
+
const req = client.get(fullUrl, requestOptions, (res) => {
|
|
36
57
|
let data = '';
|
|
37
58
|
|
|
38
59
|
res.on('data', (chunk) => {
|
|
@@ -82,10 +103,7 @@ export class MovementApiClient {
|
|
|
82
103
|
* Get account information
|
|
83
104
|
*/
|
|
84
105
|
async getAccount(address: string): Promise<AccountData> {
|
|
85
|
-
|
|
86
|
-
const normalizedAddress = address.toLowerCase().startsWith('0x')
|
|
87
|
-
? address.toLowerCase()
|
|
88
|
-
: `0x${address.toLowerCase()}`;
|
|
106
|
+
const normalizedAddress = normalizeAddressShort(address);
|
|
89
107
|
|
|
90
108
|
return this.get<AccountData>(this.apiPath(`/accounts/${normalizedAddress}`));
|
|
91
109
|
}
|
|
@@ -94,9 +112,7 @@ export class MovementApiClient {
|
|
|
94
112
|
* Get a specific account resource
|
|
95
113
|
*/
|
|
96
114
|
async getAccountResource(address: string, resourceType: string): Promise<any> {
|
|
97
|
-
const normalizedAddress = address
|
|
98
|
-
? address.toLowerCase()
|
|
99
|
-
: `0x${address.toLowerCase()}`;
|
|
115
|
+
const normalizedAddress = normalizeAddressShort(address);
|
|
100
116
|
|
|
101
117
|
// URL encode the resource type
|
|
102
118
|
const encodedType = encodeURIComponent(resourceType);
|
|
@@ -108,9 +124,7 @@ export class MovementApiClient {
|
|
|
108
124
|
* Get all resources for an account
|
|
109
125
|
*/
|
|
110
126
|
async getAccountResources(address: string): Promise<AccountResource[]> {
|
|
111
|
-
const normalizedAddress = address
|
|
112
|
-
? address.toLowerCase()
|
|
113
|
-
: `0x${address.toLowerCase()}`;
|
|
127
|
+
const normalizedAddress = normalizeAddressShort(address);
|
|
114
128
|
|
|
115
129
|
return this.get<AccountResource[]>(this.apiPath(`/accounts/${normalizedAddress}/resources`));
|
|
116
130
|
}
|