Files
protocol/packages/metacoin
Alex Browne e7d5ceb9c5 feat: Add support for TypeScript project references (#991)
* Update all package.json and tsconfig.json

* fix(contracts): Make test/utils/web3_wrapper.ts compatible with project refs

* Fix webpack config for 0x.js

* Fix linter errors by adding rootDir to tsconfig.json as needed

* Add build:ts and watch:ts commands to package.json

* Update sra-spec to work with project references

* Update tsconfig.json with latest new/removed packages

* Add TypeScript as devDependency at root

* Add missing rootDir to forwarder-helper package

* Use a separate tsconfig file for typedoc

* Fix linter errors

* Apply PR feedback (add comments)

* Fix 0x.js tsconfig
2018-08-29 11:15:30 -07:00
..
2018-05-22 15:19:40 +02:00
2018-05-11 18:50:50 +02:00
2018-05-07 10:23:08 +02:00
2018-06-11 22:03:07 -07:00
2018-04-02 12:34:29 +03:00

@0xproject/metacoin

This is an example project that demonstrates how the many Ethereum dev tools developed by 0x can be used in any Solidity/TS project. It supports:

  • Compiling & testing smart contracts
  • Generating typed contract wrappers
  • Solidity coverage
  • Solidity gas profiling
  • Running tests against Ganache
  • Running tests against our fork of Geth (it supports snapshotting & time travel)

Contributing

We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.

Please read our contribution guidelines before getting started.

Install dependencies

If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:

yarn config set workspaces-experimental true

Then install dependencies

yarn install

Build

To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:

PKG=@0xproject/metacoin yarn build

Or continuously rebuild on change:

PKG=@0xproject/metacoin yarn watch

Clean

yarn clean

Lint

yarn lint

Test providers

By default tests run against an in-process Ganache instance. If you want to use Geth you'll need to start a Geth dev node first.

cd ../devnet
docker build -t 0x-devnet .
docker run -it --rm -p 8501:8501 0x-devnet

This Geth version supports snapshots and time travel. Then - run your tests against it.

TEST_PROVIDER=geth yarn test

Coverage

yarn test:coverage
yarn coverage:report:html

Profiling

Please note that traces emitted by ganache have incorrect gas costs so we recommend using Geth for profiling.

TEST_PROVIDER=geth yarn test:profile

You'll see a warning that you need to explicitly enable and disable the profiler before and after the block of code you want to profile.

import { profiler } from './utils/profiler';
profiler.start();
// Some solidity stuff
profiler.stop();