Connect and communicate with the Akash Network. Pure JS library can be used in browser for unsigned transactions, and with node.js for full compatibility.
This repository is the home of akashjs
, a library designed to facilitate interaction with the Akash Network. However, for full functionality, users will need to integrate several additional libraries. The Akash Network is built using the Cosmos SDK and utilizes the Stargate client for transaction signing and broadcasting. These packages are specifically tailored to enhance interaction with the Akash Network.
Package | Description |
---|---|
@akashnetwork/akashjs | Main library for interacting with the Akash Network |
@akashnetwork/akash-api | Akash API generated from Akash API for interacting with the Akash Network. Documentation is available for node and provider. |
@cosmjs/stargate | A client library for the Cosmos SDK 0.40+ (Stargate). |
@cosmjs/proto-signing | A library for signing and broadcasting transactions using the Cosmos SDK. |
Compatible with modern browsers, nodejs 14+ and Webpack 5
To install the library, run the following command:
npm install @akashnetwork/akashjs
Or use the UMD bundle (the object returned is Window.akjs
):
<script type="text/javascript" src="https://unpkg.com/@akashnetwork/[email protected]/umd/akashjs.js" ></script>
The following example demonstrates how to fetch the state of the network.
import { getMetadata } from "@akashnetwork/akashjs/build/network/index.js";
console.log(JSON.stringify(await getMetadata("mainnet"), null, 2))
More elborate examples can be found in the examples directory.
This repository is primarily written in TypeScript and uses Node.js version 18. We use Webpack 5 for UMD bundling. These tools ensure that our development environment is consistent and our builds are stable.
-
Prerequisites
- Node.js 18 or higher
- npm or yarn
- Go 1.19 or higher (for akash-api dependency)
-
Installation
# Clone the repository
git clone https://github.com/akash-network/akashjs
cd akashjs
# Install dependencies
npm install
# Setup git hooks
npm run setup-git-hooks
- Development Commands
# Watch mode for development
npm run dev:watch
# Run tests
npm run test
# Run linting
npm run lint
# Fix linting issues
npm run lint:fix
# Format code
npm run format
# Build the project
npm run build
-
TypeScript
- Use strict TypeScript types
- Avoid using
any
type where possible - Document complex types with JSDoc comments
-
Testing
- Write unit tests for new features
- Maintain test coverage
- Run
npm test
before submitting PRs
-
Code Style
- Follow the existing code style
- Use Prettier for formatting
- Follow ESLint rules
Our project enforces high standards of code quality and consistency through:
- Code Linting: ESLint analyzes code for potential errors and style issues
- Code Formatting: Prettier ensures consistent code formatting
- Commit Linting: Commits must follow Conventional Commits specification
- Automated Testing: Tests run automatically on pull requests
- Semantic Release: Automated versioning based on commit messages
- Continuous Integration: Validates PRs and manages releases
To enable git hooks for local development:
npm run setup-git-hooks
- Create a feature branch from
main
- Make your changes following our guidelines
- Ensure all tests pass
- Update documentation as needed
- Submit a PR with a clear description of changes
- Wait for review and address any feedback
- Use the
dev:watch
command for live reloading during development - Check the
examples
directory for implementation references - Use Jest's debugging capabilities with
--inspect
flag - Set
DEBUG=akashjs:*
environment variable for detailed logs
PRs are welcome! By adhering to these guidelines and leveraging our automated systems, we can maintain a high-quality codebase and streamline our development processes.