{"_id":"@asteroid-protocol/lift","name":"@asteroid-protocol/lift","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@asteroid-protocol/lift","version":"0.1.0","license":"SEE LICENSE IN LICENSE","type":"module","scripts":{"typecheck":"tsc --noEmit","lint":"eslint .","format":"eslint . --fix","prettify":"prettier . --write","prepare":"husky install","prepublishOnly":"npm run build","build":"tsc --build","watch":"tsc --watch","clean":"tsc --build --clean"},"main":"lib/index.js","bin":{"lift":"lib/cli.js"},"dependencies":{"@cosmjs/cosmwasm-stargate":"^0.32.2","@cosmjs/encoding":"^0.32.2","@cosmjs/proto-signing":"^0.32.2","@cosmjs/stargate":"^0.32.2","@cosmjs/tendermint-rpc":"^0.32.2","@cosmwasm/ts-codegen":"^1.9.0","change-case":"^5.3.0","commander":"^11.1.0","json2toml":"^6.0.0","toml":"^3.0.0","ts-node":"^10.9.2","zod":"^3.22.4"},"devDependencies":{"@trivago/prettier-plugin-sort-imports":"^4.3.0","@typescript-eslint/eslint-plugin":"^6.17.0","@typescript-eslint/parser":"^6.17.0","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-require-extensions":"^0.1.3","husky":"^8.0.3","lint-staged":"^15.2.0","prettier":"^3.1.1","typescript":"^5.3.3"},"lint-staged":{"src/**/*.ts":["prettier --write --ignore-unknown","eslint"]},"publishConfig":{"access":"public"},"_id":"@asteroid-protocol/lift@0.1.0","gitHead":"a99374af4dc4b8f5b797c70313ca3484e2840d23","types":"./lib/index.d.ts","description":"![Logo](logo.jpeg)","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-3B6Liv17qfPkbIlHEaq0dnBnXp6Til0gz9soOv+fyRmjEPnJzzcoxJSCnGZFNPQF0qYUY/p4tM/RLEPLzbyLkQ==","shasum":"8b16fd718727736979258c32a53fb38ec12be2f2","tarball":"https://registry.npmjs.org/@asteroid-protocol/lift/-/lift-0.1.0.tgz","fileCount":59,"unpackedSize":60802,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrJ6yv9aBJp/0Xj+KAiBM6E4qAdGyO/OnwFndvPbeSIAIhAIAMZPI0zrx7fUcPRIWMVLIsyZ2lgt9JP7kB65HJgo9v"}]},"_npmUser":{"name":"tomas-asteroid","email":"tomas@astroport.foundation"},"directories":{},"maintainers":[{"name":"tomas-asteroid","email":"tomas@astroport.foundation"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/lift_0.1.0_1714648053714_0.5249356733838277"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-02T11:07:33.556Z","0.1.0":"2024-05-02T11:07:33.893Z","modified":"2024-05-02T11:07:34.199Z"},"maintainers":[{"name":"tomas-asteroid","email":"tomas@astroport.foundation"}],"description":"![Logo](logo.jpeg)","license":"SEE LICENSE IN LICENSE","readme":"# Lift\n\n![Logo](logo.jpeg)\n\nThe aim of Lift is to have unified and chain agnostic tool that helps with local development and production deployment of CosmWasm smart contracts and dApps.\n\n## Install\n\n```\nnpm i @asteroid-protocol/lift\n```\n\n## Commands\n\n```\nUsage: lift [options] [command]\n\nOptions:\n  -V, --version                         output the version number\n  -h, --help                            display help for command\n\nCommands:\n  init <CHAIN>                          Initialize config\n  build [options]                       Build and optimize workspace contracts\n  upload [options] <CONTRACT>           Upload contract\n  instantiate [options] <CONTRACT>      Instantiate contract\n  execute [options] <CONTRACT>          Execute contract message\n  query [options] <CONTRACT>            Query data from contract\n  state [options] <CONTRACT>            Dump contract state\n  ts-gen [options]                      Generate TypeScript type definitions and clients\n  script [options] <SCRIPT> [CONTRACT]  Run a script with workspace context and optionally contract\n  task:new <name>                       Create new task\n  task:new:contract <name>              Create new contract task\n  task:run                              Run task\n  help [command]                        display help for command\n```\n\nGeneral arguments for most of the commands:\n\n* `-n / --network <NETWORK_NAME>`: Name of the network to use, based on networks defined in Lift.toml config (default: `local`)\n* `-a / --account <ACCOUNT_NAME>`: Name of the account to use as transaction signer, based on accounts defined in Lift.toml config (default: first account defined in Lift.toml config)\n\n\n### `lift init <CHAIN>`\n\nInitialize lift config\n\nArguments:\n\n* `<CHAIN>` Chain name - sei, osmosis, neutron, injective\n\n\n### `lift build`\n\nBuild and optimize workspace contracts\n\n\n### `lift upload <CONTRACT>`\n\nUpload contract to the chain\n\nArguments:\n\n* `<CONTRACT>` Name of the contract to upload\n\n\n### `lift instantiate <CONTRACT>`\n\nInstantiate contract\n\nArguments:\n\n* `<CONTRACT>` Name of the contract to instantiate\n* `-i / --instance <CONTRACT_INSTANCE>`: Contract instance name, could be used in case you want to create more than one contract instance (default: `default`)\n\n\n### `lift execute <CONTRACT>`\n\nExecute contract message\n\nArguments:\n\n* `<CONTRACT>` Name of the contract \n* `-m / --msg <MSG>`: Execute message\n* `-i / --instance <CONTRACT_INSTANCE>`: Contract instance name (default: `default`)\n\n\n### `lift query <CONTRACT>`\n\nQuery data from contract\n\nArguments:\n\n* `<CONTRACT>` Name of the contract \n* `-m / --msg <MSG>`: Query message\n* `-i / --instance <CONTRACT_INSTANCE>`: Contract instance name (default: `default`)\n\n\n### `lift state <CONTRACT>`\n\nDump contract state\n\nArguments:\n\n* `<CONTRACT>` Name of the contract \n* `-i / --instance <CONTRACT_INSTANCE>`: Contract instance name (default: `default`)\n\n\n### `lift ts-gen`\n\nGenerate TypeScript type definitions and clients based on contracts defined in the `Lift.toml` config, `[ts-gen]` section\n\n\n### `lift task:new <NAME>`\n\nCreate new task\n\nArguments:\n\n* `<NAME>` Task name\n\n\n### `lift task:new:contract <NAME>`\n\nCreate new contract task\n\nArguments:\n\n* `<NAME>` Task name\n\n\n### `lift task:run <NAME> [CONTRACT]`\n\nRun task\n\nArguments:\n\n* `<NAME>` Task name\n* `[CONTRACT]` Optional contract name\n\n## Configuration\n\n### Lift.toml\n\n```toml\nname = 'the-game'\ngas_price = '0.01usei'\naccount_prefix = 'sei'\n\n[networks.local]\nchain_id = 'sei-chain'\nnetwork_variant = 'Local'\nrpc_endpoint = 'http://localhost:26657'\n\n[networks.testnet]\nchain_id = 'atlantic-2'\nnetwork_variant = 'Shared'\nrpc_endpoint = 'https://rpc.atlantic-2.seinetwork.io'\n\n[networks.mainnet]\nchain_id = 'pacific-1'\nnetwork_variant = 'Shared'\nrpc_endpoint = 'https://sei-rpc.polkachu.com'\n\n[accounts.test1]\nmnemonic = 'famous vast bullet upgrade dynamic raven help mistake omit enrich kitchen learn clutch code rule wood cream crystal work enable hamster ticket general mouse'\n\n[accounts.test2]\nmnemonic = 'primary trash mirror husband food sand lake razor expire pair ocean tackle carpet offer regret space small fantasy fiscal orphan coral key panda void'\n\n[wasm]\ncontract_dir = 'contracts'\noptimizer_version = '0.12.13'\n\n[ts-gen]\nout_path = 'app/src/contracts'\ncontracts = [\"counter\", \"the-game\"]\n```\n\n## State\n\nState is stored in `.lift` folder of your repository.\n\nLocal state is stored in `.lift/state.local.json` file and it's recommend to add `state.local.json` file to `.gitignore` since it's machine specific.\n\nShared state is stored in `.lift/state.json` file\n\n## Tasks\n\nLift supports custom tasks for implementing custom logic or executing multiple commands.\nTasks are located in the `tasks` folder of your repository.\n\n### General Task\n\n```js\nimport { task } from '@asteroid-protocol/lift'\n\ntask((context) => {\n  console.log('Hello from task!')\n})\n```\n\n### Contract task\n\n```js\nimport { contractTask } from '@asteroid-protocol/lift'\n\ncontractTask((context, contract) => {\n  console.log('Hello from contract task!')\n})\n```\n\n### Task with custom command line arguments\n\n```js\nimport { task, workspaceCommand } from '@asteroid-protocol/lift'\n\nconst command = workspaceCommand()\ncommand.option('-l, --log', 'log')\n\ntask(command, (context) => {\n  const options = command.opts()\n  if (options.log) {\n    console.log('Hello from task!')\n  }\n})\n```\n\n## TODO\n\n- app template - scaffold a template smart contract and frontend\n- integrate chain-registry (https://github.com/cosmos/chain-registry)\n- interactive console\n- multichain dApp support\n- plugins\n    - load tasks from plugin\n    - load other smart contracts (nft, dex, money market)\n    - load mainnet / testnet contract state \n    - spin up local network\n    - testing framework\n    - smart contract linters","readmeFilename":"README.md"}