dhali-js
v2.1.0
Published
A JavaScript library for managing XRPL payment channels and generating auth tokens for Dhali APIs
Maintainers
Readme
dhali-js
A JavaScript library for managing payment channels (XRPL & Ethereum) and generating auth tokens for use with Dhali APIs.
Includes support for Machine-to-Machine (M2M) payments using seamless off-chain claims.
Installation
npm install dhali-jsQuick Start: Machine-to-Machine Payments
1. XRPL
Uses xrpl.js for local signing.
const { Client, Wallet } = require('xrpl')
const { DhaliChannelManager, ChannelNotFound, Currency } = require('dhali-js')
const seed = "sXXX..."
const wallet = Wallet.fromSeed(seed)
const client = new Client("wss://s.altnet.rippletest.net:51233")
await client.connect()
const currency = new Currency("XRP", 6)
// Use Factory
const manager = DhaliChannelManager.xrpl(wallet, client, "XRPL.TESTNET", currency)
// Generate Claim
let token;
try {
token = await manager.getAuthToken();
} catch (error) {
if (error.name === "ChannelNotFound") {
await manager.deposit(1000000); // Deposit 1 XRP
token = await manager.getAuthToken();
} else {
throw error;
}
}
console.log('XRPL Token:', token);2. Ethereum (EVM)
Uses ethers (v6) for EIP-712 signing.
const { ethers } = require('ethers')
const { DhaliChannelManager, getAvailableDhaliCurrencies } = require('dhali-js')
// 1. Setup Signer
const provider = new ethers.JsonRpcProvider("https://rpc.ankr.com/eth_sepolia")
const signer = new ethers.Wallet("0x...", provider)
// 2. Fetch Available Currencies
const configs = await getAvailableDhaliCurrencies()
const sepoliaUsdc = configs["SEPOLIA"]["USDC"]
// 3. Instantiate Manager with Dynamic Config
const manager = DhaliChannelManager.evm(
signer,
provider,
"SEPOLIA",
sepoliaUsdc.currency
)
// 4. Generate Claim
// 4. Generate Claim
let token;
try {
token = await manager.getAuthToken(1000000); // 1.00 USDC
} catch (error) {
if (error.name === "ChannelNotFound") {
await manager.deposit(1000000); // Deposit 1.00 USDC
token = await manager.getAuthToken(1000000);
} else {
throw error;
}
}
console.log('EVM Token:', token);Integration
Pass the token in your API calls to Dhali-enabled services.
const url = `https://xrplcluster.dhali.io?payment-claim=${token}`
const response = await fetch(url, { method: 'POST', body: ... })API Reference
DhaliChannelManager
.xrpl(wallet, client, protocol, currency): ReturnsDhaliXrplChannelManager..evm(signer, provider, protocol, currency): ReturnsDhaliEthChannelManager.
getAvailableDhaliCurrencies()
Returns a Promise resolving to:
{
"SEPOLIA": {
"USDC": { currency: ..., destinationAddress: ... },
...
},
...
}