mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-12 00:35: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",
|
"name": "ripple-lib",
|
||||||
"version": "1.6.6-beta.1",
|
"version": "1.6.6-beta.2",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
|
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -38,6 +38,23 @@ export interface ConnectionOptions {
|
|||||||
*/
|
*/
|
||||||
export type ConnectionUserOptions = Partial<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.
|
* Represents an intentionally triggered web-socket disconnect code.
|
||||||
* WebSocket spec allows 4xxx codes for app/library specific codes.
|
* 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.
|
* captured by the Connection class over time.
|
||||||
*/
|
*/
|
||||||
class LedgerHistory {
|
class LedgerHistory {
|
||||||
private availableVersions = new RangeSet()
|
|
||||||
latestVersion: null | number = null
|
|
||||||
feeBase: null | number = null
|
feeBase: null | number = null
|
||||||
feeRef: 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.
|
* 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
|
* of whether ledger history data exists or not. If relevant ledger data
|
||||||
* is found, we'll update our history (ex: from a "ledgerClosed" event).
|
* is found, we'll update our history (ex: from a "ledgerClosed" event).
|
||||||
*/
|
*/
|
||||||
update(responseData: {
|
update(ledgerMessage: LedgerStreamMessage) {
|
||||||
ledger_index?: string
|
// type: ignored
|
||||||
validated_ledgers?: string
|
this.feeBase = ledgerMessage.fee_base
|
||||||
fee_base?: string
|
this.feeRef = ledgerMessage.fee_ref
|
||||||
fee_ref?: string
|
// ledger_hash: ignored
|
||||||
}) {
|
this.latestVersion = ledgerMessage.ledger_index
|
||||||
this.latestVersion = Number(responseData.ledger_index)
|
// ledger_time: ignored
|
||||||
if (responseData.validated_ledgers) {
|
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.reset()
|
||||||
this.availableVersions.parseAndAddRanges(responseData.validated_ledgers)
|
this.availableVersions.parseAndAddRanges(ledgerMessage.validated_ledgers)
|
||||||
} else {
|
} else {
|
||||||
this.availableVersions.addValue(this.latestVersion)
|
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()
|
await this.connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
async getLedgerVersion(): Promise<number> {
|
|
||||||
await this._waitForReady()
|
|
||||||
return this._ledger.latestVersion!
|
|
||||||
}
|
|
||||||
|
|
||||||
async getFeeBase(): Promise<number> {
|
async getFeeBase(): Promise<number> {
|
||||||
await this._waitForReady()
|
await this._waitForReady()
|
||||||
return this._ledger.feeBase!
|
return this._ledger.feeBase!
|
||||||
@@ -578,6 +588,16 @@ export class Connection extends EventEmitter {
|
|||||||
return this._ledger.feeRef!
|
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
|
* Returns true if the given range of ledger versions exist in history
|
||||||
* (inclusive).
|
* (inclusive).
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ describe('Connection', function() {
|
|||||||
)
|
)
|
||||||
assert.strictEqual(await this.api.connection.getFeeBase(), 10)
|
assert.strictEqual(await this.api.connection.getFeeBase(), 10)
|
||||||
assert.strictEqual(await this.api.connection.getFeeRef(), 10)
|
assert.strictEqual(await this.api.connection.getFeeRef(), 10)
|
||||||
|
assert.strictEqual(await this.api.connection.getReserveBase(), 20000000) // 20 XRP
|
||||||
})
|
})
|
||||||
|
|
||||||
it('with proxy', function(done) {
|
it('with proxy', function(done) {
|
||||||
@@ -378,7 +379,7 @@ describe('Connection', function() {
|
|||||||
throw new Error('error on reconnect')
|
throw new Error('error on reconnect')
|
||||||
}
|
}
|
||||||
// Hook up a listener for the reconnect error event
|
// 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') {
|
if(error === 'reconnect' && message === 'error on reconnect') {
|
||||||
return done()
|
return done()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user