dhali-js 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +56 -31
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ [![Package Tests](https://github.com/Dhali-org/Dhali-js/actions/workflows/tests.yaml/badge.svg)](https://github.com/Dhali-org/Dhali-js/actions/workflows/tests.yaml)
2
+ [![Release](https://github.com/Dhali-org/Dhali-js/actions/workflows/publish.yaml/badge.svg)](https://github.com/Dhali-org/Dhali-js/actions/workflows/publish.yaml)
3
+
4
+
1
5
  # dhali-js
2
6
 
3
7
  A JavaScript library for managing XRPL payment channels and generating auth tokens for use with [Dhali](https://dhali.io) APIs.
@@ -9,55 +13,76 @@ Leverages [xrpl.js](https://github.com/XRPLF/xrpl.js) and **only ever performs l
9
13
 
10
14
  ```bash
11
15
  npm install dhali-js
12
- ````
16
+ ```
13
17
 
14
18
  ---
15
19
 
16
20
  ## Quick Start
17
21
 
18
22
  ```js
23
+ // ==== 0. Common setup ====
19
24
  const { Wallet } = require('xrpl')
20
25
  const { DhaliChannelManager, ChannelNotFound } = require('dhali-js')
21
26
 
22
- const seed = "sXXX"
27
+ const seed = "sXXX"
28
+ const wallet = Wallet.fromSeed(seed)
29
+ const manager = new DhaliChannelManager(wallet)
30
+ ```
23
31
 
24
- ;(async () => {
25
- const wallet = Wallet.fromSeed(seed)
26
- const manager = new DhaliChannelManager(wallet)
27
- await manager.ready
28
-
29
- let token
30
- try {
31
- token = await manager.getAuthToken()
32
- } catch (err) {
33
- if (err instanceof ChannelNotFound) {
34
- await manager.deposit(1_000_000)
35
- token = await manager.getAuthToken()
36
- } else {
37
- console.error(err)
38
- process.exit(1)
39
- }
32
+
33
+ ### 1. Create a Payment Claim
34
+
35
+ ```js
36
+ let token
37
+ try {
38
+ token = await manager.getAuthToken()
39
+ } catch (err) {
40
+ if (err instanceof ChannelNotFound) {
41
+ await manager.deposit(1_000_000) // deposit 1 XRP
42
+ token = await manager.getAuthToken() // 🔑 regenerate after deposit
43
+ } else throw err
44
+ }
45
+ console.log('New channel token:', token)
46
+ ```
47
+
48
+ ---
49
+
50
+ ### 2. Top Up Later (and Regenerate)
51
+
52
+ ```js
53
+ await manager.deposit(2_000_000) // add 2 XRP
54
+ const updatedToken = await manager.getAuthToken()
55
+ console.log('Updated token:', updatedToken)
56
+ ```
57
+
58
+ ---
59
+
60
+ ### 3. Using APIs and Handling 402 "Payment Required" Errors
61
+
62
+ ```js
63
+ const fetchWithClaim = async (maxRetries = 5) => {
64
+ for (let i = 1; i <= maxRetries; i++) {
65
+ const token = await manager.getAuthToken()
66
+ const url = `https://xrplcluster.dhali.io?payment-claim=${token}`
67
+ const resp = await fetch(url, { /* …RPC call… */ })
68
+
69
+ if (resp.status !== 402) return resp.json()
70
+
71
+ console.warn(`Attempt ${i}: topping up…`)
72
+ await manager.deposit(1_000_000) // deposit 1 XRP
40
73
  }
74
+ throw new Error(`402 after ${maxRetries} retries`)
75
+ }
41
76
 
42
- const url = `https://xrplcluster.dhali.io?payment-claim=${token}`
43
- const resp = await fetch(url, {
44
- method: 'POST',
45
- headers: { 'Content-Type': 'application/json' },
46
- body: JSON.stringify({
47
- method: 'account_info',
48
- params: [{ account: wallet.classicAddress, ledger_index: 'validated' }],
49
- id: 1,
50
- }),
51
- })
52
- const result = await resp.json()
77
+ ;(async () => {
78
+ const result = await fetchWithClaim()
53
79
  console.log(result)
54
80
  })()
55
-
56
81
  ```
57
82
 
58
83
  ---
59
84
 
60
- ## API
85
+ ## Class reference
61
86
 
62
87
  ### `new DhaliChannelManager(wallet: xrpl.Wallet)`
63
88
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dhali-js",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "A JavaScript library for managing XRPL payment channels and generating auth tokens for Dhali APIs",
5
5
  "main": "src/index.js",
6
6
  "type": "commonjs",