The super index for DeFi Blockchain to simplify DeFi light implementation.
🚧 Work in progress, DeFi Whale is considered Alpha Software. Use at your own risk, APIs are yet not finalized.
Thanks for contributing, appreciate all the help we can get. Feel free to make a pull-request, we will guide you along the way to make it merge-able. Here are some of our documented contributing guidelines.
You need node v14
, and npm v7
for this project, it's required to set
up npm workspaces.
npm install
There are three types of tests required for DeFi Whale.
All types of tests required Docker
as @defichain/testcontainers
will
automatically spin up regtest
instances for testing. The number of containers it will spin up concurrently is
dependent on your jest --maxConcurrency
count. Test are known to be flaky due to the usage of multiple Docker
containers for test concurrency.
Unit testing are created to test each individual units/components of a software. As they are unit tests, they should be
closely co-located together with the unit. They follow the naming semantic of *.spec.ts
and placed together in the
same directory of the code you are testing. Code coverage is collected for this.
On top of unit tests, this provides additional testing that tests the entire lifecycle of DeFi whale. All dependencies
and modules are integrated together as expected. They follow the naming semantic of *.e2e.ts
and placed in the same
directory as the component. Code coverage is collected for this.
For endpoints that are meant to be consumed by developer, the testing should be done in whale-api-cient
. Dogfooding at
its finest, tests should be written in packages/whale-api-client/__tests__
to test the e2e aspect of each endpoint.
On top of end-to-end testing, sanity testing is done after the docker image is build. This kind of testing is performed to ascertain the possibility of bugs within the workflow that generate the builds. To identify and determine whether a build artifact (docker) should be rejected. This is only done on CI and you are not expected to perform them manually.
Coverage is collected for unit and e2e tests at each pull request to main with codecov
; more testing 🚀 less 🐛 = 😎
jest
Docker images are published automatically to GitHub Container Registry (ghcr.io/defich). When a
new GitHub releases is triggered, GitHub Action will automatically build the
docker image in this repo and publish it. Two images are created for each release targeting linux/amd64
and linux/arm64
. The latest tag will always be updated with the last release and semantic release is enforced for each
release.
IntelliJ IDEA is the IDE of choice for writing and maintaining this library. IntelliJ's files are included for convenience with basic toolchain setup but use of IntelliJ is totally optional.
If you discover a security vulnerability in DeFi Whale
,
please see submit it privately.
By using DeFi Whale
(this repo), you (the user) agree to be bound by the terms of this license.