mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-04 21:15:47 +00:00
Add api.connection.getReserveBase() (#1259)
* Returns the current minimum reserve, in drops of XRP, that is required for an account. * Release 1.6.6-beta.2
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ripple-lib",
|
||||
"version": "1.6.6-beta.1",
|
||||
"version": "1.6.6-beta.2",
|
||||
"license": "ISC",
|
||||
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
|
||||
"files": [
|
||||
|
||||
@@ -38,6 +38,23 @@ export interface ConnectionOptions {
|
||||
*/
|
||||
export type ConnectionUserOptions = Partial<ConnectionOptions>
|
||||
|
||||
/**
|
||||
* Ledger Stream Message
|
||||
* https://xrpl.org/subscribe.html#ledger-stream
|
||||
*/
|
||||
interface LedgerStreamMessage {
|
||||
type?: 'ledgerClosed' // not present in initial `subscribe` response
|
||||
fee_base: number
|
||||
fee_ref: number
|
||||
ledger_hash: string
|
||||
ledger_index: number
|
||||
ledger_time: number
|
||||
reserve_base: number
|
||||
reserve_inc: number
|
||||
txn_count?: number // not present in initial `subscribe` response
|
||||
validated_ledgers?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents an intentionally triggered web-socket disconnect code.
|
||||
* WebSocket spec allows 4xxx codes for app/library specific codes.
|
||||
@@ -118,10 +135,11 @@ function websocketSendAsync(ws: WebSocket, message: string) {
|
||||
* captured by the Connection class over time.
|
||||
*/
|
||||
class LedgerHistory {
|
||||
private availableVersions = new RangeSet()
|
||||
latestVersion: null | number = null
|
||||
feeBase: null | number = null
|
||||
feeRef: null | number = null
|
||||
latestVersion: null | number = null
|
||||
reserveBase: null | number = null
|
||||
private availableVersions = new RangeSet()
|
||||
|
||||
/**
|
||||
* Returns true if the given version exists.
|
||||
@@ -143,25 +161,22 @@ class LedgerHistory {
|
||||
* of whether ledger history data exists or not. If relevant ledger data
|
||||
* is found, we'll update our history (ex: from a "ledgerClosed" event).
|
||||
*/
|
||||
update(responseData: {
|
||||
ledger_index?: string
|
||||
validated_ledgers?: string
|
||||
fee_base?: string
|
||||
fee_ref?: string
|
||||
}) {
|
||||
this.latestVersion = Number(responseData.ledger_index)
|
||||
if (responseData.validated_ledgers) {
|
||||
update(ledgerMessage: LedgerStreamMessage) {
|
||||
// type: ignored
|
||||
this.feeBase = ledgerMessage.fee_base
|
||||
this.feeRef = ledgerMessage.fee_ref
|
||||
// ledger_hash: ignored
|
||||
this.latestVersion = ledgerMessage.ledger_index
|
||||
// ledger_time: ignored
|
||||
this.reserveBase = ledgerMessage.reserve_base
|
||||
// reserve_inc: ignored (may be useful for advanced use cases)
|
||||
// txn_count: ignored
|
||||
if (ledgerMessage.validated_ledgers) {
|
||||
this.availableVersions.reset()
|
||||
this.availableVersions.parseAndAddRanges(responseData.validated_ledgers)
|
||||
this.availableVersions.parseAndAddRanges(ledgerMessage.validated_ledgers)
|
||||
} else {
|
||||
this.availableVersions.addValue(this.latestVersion)
|
||||
}
|
||||
if (responseData.fee_base) {
|
||||
this.feeBase = Number(responseData.fee_base)
|
||||
}
|
||||
if (responseData.fee_ref) {
|
||||
this.feeRef = Number(responseData.fee_ref)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -563,11 +578,6 @@ export class Connection extends EventEmitter {
|
||||
await this.connect()
|
||||
}
|
||||
|
||||
async getLedgerVersion(): Promise<number> {
|
||||
await this._waitForReady()
|
||||
return this._ledger.latestVersion!
|
||||
}
|
||||
|
||||
async getFeeBase(): Promise<number> {
|
||||
await this._waitForReady()
|
||||
return this._ledger.feeBase!
|
||||
@@ -578,6 +588,16 @@ export class Connection extends EventEmitter {
|
||||
return this._ledger.feeRef!
|
||||
}
|
||||
|
||||
async getLedgerVersion(): Promise<number> {
|
||||
await this._waitForReady()
|
||||
return this._ledger.latestVersion!
|
||||
}
|
||||
|
||||
async getReserveBase(): Promise<number> {
|
||||
await this._waitForReady()
|
||||
return this._ledger.reserveBase!
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the given range of ledger versions exist in history
|
||||
* (inclusive).
|
||||
|
||||
@@ -98,6 +98,7 @@ describe('Connection', function() {
|
||||
)
|
||||
assert.strictEqual(await this.api.connection.getFeeBase(), 10)
|
||||
assert.strictEqual(await this.api.connection.getFeeRef(), 10)
|
||||
assert.strictEqual(await this.api.connection.getReserveBase(), 20000000) // 20 XRP
|
||||
})
|
||||
|
||||
it('with proxy', function(done) {
|
||||
@@ -378,7 +379,7 @@ describe('Connection', function() {
|
||||
throw new Error('error on reconnect')
|
||||
}
|
||||
// Hook up a listener for the reconnect error event
|
||||
this.api.on('error', (error, message) => {
|
||||
this.api.on('error', (error, message) => {
|
||||
if(error === 'reconnect' && message === 'error on reconnect') {
|
||||
return done()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user