evernode-js-client 0.4.38 → 0.4.39

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/index.js +36 -4
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -11814,9 +11814,9 @@ class BaseEvernodeClient {
11814
11814
 
11815
11815
  async getHookStates() {
11816
11816
  const regAcc = new XrplAccount(this.registryAddress, null, { xrplApi: this.xrplApi });
11817
- const hookNamespace = (await regAcc.getInfo())?.HookNamespaces[0];
11818
- if (hookNamespace) {
11819
- const configs = await regAcc.getNamespaceEntries(hookNamespace);
11817
+ const hookNamespaces = (await regAcc.getInfo())?.HookNamespaces;
11818
+ if (hookNamespaces) {
11819
+ const configs = await regAcc.getNamespaceEntries(hookNamespaces[0]);
11820
11820
  return configs.filter(c => c.LedgerEntryType === 'HookState').map(c => { return { key: c.HookStateKey, data: c.HookStateData } });
11821
11821
  }
11822
11822
  return [];
@@ -13503,6 +13503,14 @@ const HOST_CPU_MICROSEC_OFFSET = 64;
13503
13503
  const HOST_RAM_MB_OFFSET = 68;
13504
13504
  const HOST_DISK_MB_OFFSET = 72;
13505
13505
 
13506
+ const STATE_KEY_TYPES = {
13507
+ TOKEN_ID: 2,
13508
+ HOST_ADDR: 3
13509
+ }
13510
+
13511
+ const EVERNODE_PREFIX = 'EVR';
13512
+ const HOST_ADDR_KEY_ZERO_COUNT = 8;
13513
+
13506
13514
  class StateHelpers {
13507
13515
  static StateTypes = {
13508
13516
  TOKEN_ID: 'tokenId',
@@ -13535,7 +13543,7 @@ class StateHelpers {
13535
13543
  cpuMicrosec: stateDataBuf.readUInt32BE(HOST_CPU_MICROSEC_OFFSET),
13536
13544
  ramMb: stateDataBuf.readUInt32BE(HOST_RAM_MB_OFFSET),
13537
13545
  diskMb: stateDataBuf.readUInt32BE(HOST_DISK_MB_OFFSET)
13538
- }
13546
+ }
13539
13547
  }
13540
13548
 
13541
13549
  static decodeStateData(stateKey, stateData) {
@@ -13655,6 +13663,30 @@ class StateHelpers {
13655
13663
  else
13656
13664
  throw { type: 'Validation Error', message: 'Invalid state key.' };
13657
13665
  }
13666
+
13667
+ static generateTokenIdStateKey(nfTokenId) {
13668
+ // 1 byte - Key Type.
13669
+ let buf = Buffer.allocUnsafe(1);
13670
+ buf.writeUInt8(STATE_KEY_TYPES.TOKEN_ID);
13671
+
13672
+ const nfTokenIdBuf = Buffer.from(nfTokenId, "hex");
13673
+ const stateKeyBuf = (Buffer.concat([Buffer.from(EVERNODE_PREFIX, "utf-8"), buf, nfTokenIdBuf.slice(4, 32)]));
13674
+ return stateKeyBuf.toString('hex').toUpperCase();
13675
+ }
13676
+
13677
+ static generateHostAddrStateKey(address) {
13678
+ // 1 byte - Key Type.
13679
+ // 8 bytes - Zeros.
13680
+ let buf = Buffer.allocUnsafe(9);
13681
+ buf.writeUInt8(STATE_KEY_TYPES.HOST_ADDR);
13682
+ for (let i = 0; i < HOST_ADDR_KEY_ZERO_COUNT; i++) {
13683
+ buf.writeUInt8(0, i+1);
13684
+ }
13685
+
13686
+ const addrBuf = Buffer.from(codec.decodeAccountID(address), "hex");
13687
+ const stateKeyBuf = Buffer.concat([Buffer.from(EVERNODE_PREFIX, "utf-8"), buf, addrBuf]);
13688
+ return stateKeyBuf.toString('hex').toUpperCase();
13689
+ }
13658
13690
  }
13659
13691
 
13660
13692
  module.exports = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evernode-js-client",
3
- "version": "0.4.38",
3
+ "version": "0.4.39",
4
4
  "dependencies": {
5
5
  "elliptic": "6.5.4",
6
6
  "ripple-address-codec": "4.2.0",