@bithomp/xrpl-api 3.2.10 → 3.2.11

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.
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parseAmmChanges = parseAmmChanges;
7
7
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
- const utils_1 = require("../utils");
9
8
  const common_1 = require("../../common");
9
+ const utils_1 = require("../utils");
10
10
  const amount_1 = __importDefault(require("../ledger/amount"));
11
11
  const asset_1 = __importDefault(require("../ledger/asset"));
12
12
  const auth_accounts_1 = __importDefault(require("../ledger/auth-accounts"));
@@ -44,7 +44,7 @@ function parseVoteSlot(voteSlot) {
44
44
  }
45
45
  function summarizeVoteSlotsChanges(node) {
46
46
  const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
47
- const prev = node.previousFields || {};
47
+ const prev = node.previousFields;
48
48
  const changes = final.VoteSlots.reduce((acc, slot) => {
49
49
  const prevSlot = prev.VoteSlots.find((s) => s.VoteEntry.Account === slot.VoteEntry.Account);
50
50
  if (!prevSlot) {
@@ -89,7 +89,7 @@ function summarizeVoteSlotsChanges(node) {
89
89
  }
90
90
  function summarizeActionSlotChanges(node) {
91
91
  const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
92
- const prev = node.previousFields || {};
92
+ const prev = node.previousFields;
93
93
  const changes = {};
94
94
  if (prev.AuctionSlot) {
95
95
  if (final.AuctionSlot.Account !== prev.AuctionSlot.Account) {
@@ -165,14 +165,14 @@ function isEqualAuthAccounts(obj1, obj2) {
165
165
  }
166
166
  function summarizeAmm(node) {
167
167
  const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
168
- const prev = node.previousFields || {};
168
+ const prev = node.previousFields;
169
169
  let asset = (0, asset_1.default)(final.Asset);
170
170
  if (node.diffType === "CreatedNode" && !asset) {
171
171
  asset = { currency: (0, client_1.getNativeCurrency)() };
172
172
  }
173
173
  const summary = {
174
174
  status: parseAmmStatus(node),
175
- ammID: node.LedgerIndex,
175
+ ammID: node.ledgerIndex,
176
176
  account: final.Account,
177
177
  asset: asset,
178
178
  asset2: (0, asset_1.default)(final.Asset2),
@@ -202,8 +202,13 @@ function summarizeAmm(node) {
202
202
  return (0, common_1.removeUndefined)(summary);
203
203
  }
204
204
  function parseAmmChanges(metadata) {
205
- const amms = (0, utils_1.normalizeNodes)(metadata).filter((n) => {
206
- return n.entryType === "AMM";
205
+ const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => {
206
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
207
+ return node.LedgerEntryType === "AMM";
207
208
  });
208
- return amms.length === 1 ? summarizeAmm(amms[0]) : undefined;
209
+ if (affectedNodes.length !== 1) {
210
+ return undefined;
211
+ }
212
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
213
+ return summarizeAmm(normalizedNode);
209
214
  }
@@ -13,9 +13,7 @@ export interface AddressBalanceChangeQuantity {
13
13
  export interface BalanceChanges {
14
14
  [key: string]: BalanceChangeQuantity[];
15
15
  }
16
- declare function parseBalanceChanges(metadata: TransactionMetadata, nativeCurrency?: string): {
17
- [x: string]: BalanceChangeQuantity[];
18
- };
16
+ declare function parseBalanceChanges(metadata: TransactionMetadata, nativeCurrency?: string): BalanceChanges;
19
17
  declare function parseFinalBalances(metadata: TransactionMetadata, nativeCurrency?: string): {
20
18
  [x: string]: BalanceChangeQuantity[];
21
19
  };
@@ -8,8 +8,8 @@ exports.parseFinalBalances = parseFinalBalances;
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
10
  const common_1 = require("../../common");
11
- const utils_1 = require("../utils");
12
11
  const client_1 = require("../../client");
12
+ const utils_1 = require("../utils");
13
13
  function groupByAddress(balanceChanges) {
14
14
  const grouped = lodash_1.default.groupBy(balanceChanges, function (node) {
15
15
  return node.address;
@@ -63,7 +63,7 @@ function parseXRPQuantity(node, valueParser, nativeCurrency) {
63
63
  return null;
64
64
  }
65
65
  return {
66
- address: node.finalFields.Account || node.newFields.Account,
66
+ address: (node.finalFields.Account || node.newFields.Account),
67
67
  balance: {
68
68
  currency: nativeCurrency || (0, client_1.getNativeCurrency)(),
69
69
  value: (0, common_1.dropsToXrp)(value).toString(),
@@ -114,15 +114,20 @@ function parseMPTQuantity(node, valueParser) {
114
114
  };
115
115
  }
116
116
  function parseQuantities(metadata, valueParser, nativeCurrency) {
117
- const values = (0, utils_1.normalizeNodes)(metadata).map(function (node) {
118
- if (node.entryType === "AccountRoot") {
119
- return [parseXRPQuantity(node, valueParser, nativeCurrency)];
117
+ const values = metadata.AffectedNodes.map(function (affectedNode) {
118
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
119
+ if (!["AccountRoot", "RippleState", "MPToken"].includes(node.LedgerEntryType)) {
120
+ return [];
121
+ }
122
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNode);
123
+ if (node.LedgerEntryType === "AccountRoot") {
124
+ return [parseXRPQuantity(normalizedNode, valueParser, nativeCurrency)];
120
125
  }
121
- else if (node.entryType === "RippleState") {
122
- return parseTrustlineQuantity(node, valueParser);
126
+ else if (node.LedgerEntryType === "RippleState") {
127
+ return parseTrustlineQuantity(normalizedNode, valueParser);
123
128
  }
124
- else if (node.entryType === "MPToken") {
125
- return [parseMPTQuantity(node, valueParser)];
129
+ else if (node.LedgerEntryType === "MPToken") {
130
+ return [parseMPTQuantity(normalizedNode, valueParser)];
126
131
  }
127
132
  return [];
128
133
  });
@@ -1,6 +1,7 @@
1
- declare function parseChannelChanges(metadata: any): {
1
+ import { TransactionMetadata } from "xrpl";
2
+ declare function parseChannelChanges(metadata: TransactionMetadata): {
2
3
  status: string | undefined;
3
- channelId: any;
4
+ channelId: string;
4
5
  source: any;
5
6
  destination: any;
6
7
  channelAmountDrops: string;
@@ -20,7 +20,7 @@ function parsePaymentChannelStatus(node) {
20
20
  }
21
21
  function summarizePaymentChannel(node) {
22
22
  const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
23
- const prev = node.previousFields || {};
23
+ const prev = node.previousFields;
24
24
  const summary = {
25
25
  status: parsePaymentChannelStatus(node),
26
26
  channelId: node.ledgerIndex,
@@ -45,8 +45,13 @@ function summarizePaymentChannel(node) {
45
45
  return summary;
46
46
  }
47
47
  function parseChannelChanges(metadata) {
48
- const paymentChannels = (0, utils_1.normalizeNodes)(metadata).filter((n) => {
49
- return n.entryType === "PayChannel";
48
+ const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => {
49
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
50
+ return node.LedgerEntryType === "PayChannel";
50
51
  });
51
- return paymentChannels.length === 1 ? summarizePaymentChannel(paymentChannels[0]) : undefined;
52
+ if (affectedNodes.length !== 1) {
53
+ return undefined;
54
+ }
55
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
56
+ return summarizePaymentChannel(normalizedNode);
52
57
  }
@@ -17,10 +17,10 @@ function parseDIDStatus(node) {
17
17
  }
18
18
  function summarizeDID(node) {
19
19
  const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
20
- const prev = node.previousFields || {};
20
+ const prev = node.previousFields;
21
21
  const summary = {
22
22
  status: parseDIDStatus(node),
23
- didID: node.LedgerIndex,
23
+ didID: node.ledgerIndex,
24
24
  account: final.Account,
25
25
  uri: final.URI,
26
26
  data: final.Data,
@@ -38,8 +38,13 @@ function summarizeDID(node) {
38
38
  return (0, common_1.removeUndefined)(summary);
39
39
  }
40
40
  function parseDIDChanges(metadata) {
41
- const dids = (0, utils_1.normalizeNodes)(metadata).filter((n) => {
42
- return n.entryType === "DID";
41
+ const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => {
42
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
43
+ return node.LedgerEntryType === "DID";
43
44
  });
44
- return dids.length === 1 ? summarizeDID(dids[0]) : undefined;
45
+ if (affectedNodes.length !== 1) {
46
+ return undefined;
47
+ }
48
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
49
+ return summarizeDID(normalizedNode);
45
50
  }
@@ -1,7 +1,7 @@
1
1
  import { FormattedSourceAddress, FormattedDestinationAddress } from "../../types/account";
2
2
  interface FormattedEscrowSummaryInterface {
3
3
  status?: "created" | "cancelled" | "executed" | "deleted";
4
- escrowIndex?: number;
4
+ escrowIndex?: string;
5
5
  escrowSequence?: number;
6
6
  amount?: string;
7
7
  condition?: string;
@@ -63,8 +63,13 @@ function summarizeEscrow(tx, node) {
63
63
  return (0, common_1.removeUndefined)(summary);
64
64
  }
65
65
  function parseEscrowChanges(tx) {
66
- const escrows = (0, utils_1.normalizeNodes)(tx.meta).filter((n) => {
67
- return n.entryType === "Escrow";
66
+ const affectedNodes = tx.meta.AffectedNodes.filter((affectedNode) => {
67
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
68
+ return node.LedgerEntryType === "Escrow";
68
69
  });
69
- return escrows.length === 1 ? summarizeEscrow(tx, escrows[0]) : undefined;
70
+ if (affectedNodes.length !== 1) {
71
+ return undefined;
72
+ }
73
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
74
+ return summarizeEscrow(tx, normalizedNode);
70
75
  }
@@ -62,9 +62,14 @@ function parseTrustlineQuantity(node, valueParser) {
62
62
  return [result];
63
63
  }
64
64
  function parseQuantities(metadata, valueParser) {
65
- const values = (0, utils_1.normalizeNodes)(metadata).map(function (node) {
66
- if (node.entryType === "RippleState") {
67
- return parseTrustlineQuantity(node, valueParser);
65
+ const values = metadata.AffectedNodes.map(function (affectedNode) {
66
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
67
+ if (node.LedgerEntryType !== "RippleState") {
68
+ return [];
69
+ }
70
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNode);
71
+ if (node.LedgerEntryType === "RippleState") {
72
+ return parseTrustlineQuantity(normalizedNode, valueParser);
68
73
  }
69
74
  return [];
70
75
  });
@@ -55,7 +55,7 @@ function parsePriceDataSeries(series) {
55
55
  }
56
56
  function summarizePriceDataSeriesChanges(node) {
57
57
  const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
58
- const prev = node.previousFields || {};
58
+ const prev = node.previousFields;
59
59
  const changes = final.PriceDataSeries.reduce((acc, series) => {
60
60
  const prevSeries = prev.PriceDataSeries.find((s) => s.PriceData.BaseAsset === series.PriceData.BaseAsset && s.PriceData.QuoteAsset === series.PriceData.QuoteAsset);
61
61
  const priceFinal = hexPriceToBigNumber(series.PriceData.AssetPrice) || new bignumber_js_1.default(0);
@@ -115,10 +115,10 @@ function summarizePriceDataSeriesChanges(node) {
115
115
  }
116
116
  function summarizeOracle(node) {
117
117
  const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
118
- const prev = node.previousFields || {};
118
+ const prev = node.previousFields;
119
119
  const summary = {
120
120
  status: parseOracleStatus(node),
121
- oracleID: node.LedgerIndex,
121
+ oracleID: node.ledgerIndex,
122
122
  oracleDocumentID: final.OracleDocumentID,
123
123
  provider: final.Provider,
124
124
  uri: final.URI,
@@ -138,8 +138,13 @@ function summarizeOracle(node) {
138
138
  return (0, common_1.removeUndefined)(summary);
139
139
  }
140
140
  function parseOracleChanges(metadata) {
141
- const oracles = (0, utils_1.normalizeNodes)(metadata).filter((n) => {
142
- return n.entryType === "Oracle";
141
+ const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => {
142
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
143
+ return node.LedgerEntryType === "Oracle";
143
144
  });
144
- return oracles.length === 1 ? summarizeOracle(oracles[0]) : undefined;
145
+ if (affectedNodes.length !== 1) {
146
+ return undefined;
147
+ }
148
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
149
+ return summarizeOracle(normalizedNode);
145
150
  }
@@ -31,18 +31,18 @@ function convertOrderChange(order) {
31
31
  });
32
32
  }
33
33
  function getExpirationTime(node) {
34
- const expirationTime = node.finalFields.Expiration || node.newFields.Expiration;
34
+ const expirationTime = (node.finalFields.Expiration || node.newFields.Expiration);
35
35
  if (expirationTime === undefined) {
36
36
  return undefined;
37
37
  }
38
38
  return new Date((0, models_1.ledgerTimeToTimestamp)(expirationTime)).toISOString();
39
39
  }
40
40
  function getQuality(node) {
41
- const takerGets = node.finalFields.TakerGets || node.newFields.TakerGets;
42
- const takerPays = node.finalFields.TakerPays || node.newFields.TakerPays;
41
+ const takerGets = (node.finalFields.TakerGets || node.newFields.TakerGets);
42
+ const takerPays = (node.finalFields.TakerPays || node.newFields.TakerPays);
43
43
  const takerGetsCurrency = takerGets.currency || (0, client_1.getNativeCurrency)();
44
44
  const takerPaysCurrency = takerPays.currency || (0, client_1.getNativeCurrency)();
45
- const bookDirectory = node.finalFields.BookDirectory || node.newFields.BookDirectory;
45
+ const bookDirectory = (node.finalFields.BookDirectory || node.newFields.BookDirectory);
46
46
  const qualityHex = bookDirectory.substring(bookDirectory.length - 16);
47
47
  return (0, orderbook_quality_1.parseOrderbookQuality)(qualityHex, takerGetsCurrency, takerPaysCurrency);
48
48
  }
@@ -87,7 +87,7 @@ function parseOrderChange(node) {
87
87
  taker_pays: parseChangeAmount(node, "TakerPays"),
88
88
  taker_gets: parseChangeAmount(node, "TakerGets"),
89
89
  sell: (node.finalFields.Flags & xrpl_1.LedgerEntry.OfferFlags.lsfSell) !== 0,
90
- sequence: node.finalFields.Sequence || node.newFields.Sequence,
90
+ sequence: (node.finalFields.Sequence || node.newFields.Sequence),
91
91
  status: parseOrderStatus(node),
92
92
  quality: getQuality(node),
93
93
  expiration: getExpirationTime(node),
@@ -103,9 +103,13 @@ function groupByAddress(orderChanges) {
103
103
  });
104
104
  }
105
105
  function parseOrderbookChanges(metadata) {
106
- const nodes = (0, utils_1.normalizeNodes)(metadata);
107
- const orderChanges = lodash_1.default.map(lodash_1.default.filter(nodes, function (node) {
108
- return node.entryType === "Offer";
109
- }), parseOrderChange);
106
+ const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => {
107
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
108
+ return node.LedgerEntryType === "Offer";
109
+ });
110
+ const orderChanges = affectedNodes.map((affectedNode) => {
111
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNode);
112
+ return parseOrderChange(normalizedNode);
113
+ });
110
114
  return groupByAddress(orderChanges);
111
115
  }
@@ -36,8 +36,13 @@ function summarizeUNLReport(tx, node) {
36
36
  return undefined;
37
37
  }
38
38
  function parseUNLReportChanges(tx) {
39
- const escrows = (0, utils_1.normalizeNodes)(tx.meta).filter((n) => {
40
- return n.entryType === "UNLReport";
39
+ const affectedNodes = tx.meta.AffectedNodes.filter((affectedNode) => {
40
+ const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
41
+ return node.LedgerEntryType === "UNLReport";
41
42
  });
42
- return escrows.length === 1 ? summarizeUNLReport(tx, escrows[0]) : undefined;
43
+ if (affectedNodes.length !== 1) {
44
+ return undefined;
45
+ }
46
+ const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
47
+ return summarizeUNLReport(tx, normalizedNode);
43
48
  }
@@ -1,15 +1,32 @@
1
- import { TransactionMetadata } from "xrpl";
1
+ import { Node, TransactionMetadata } from "xrpl";
2
2
  import { IssuedCurrencyAmount, FormattedIssuedCurrencyAmount, FormattedIssuedMPTAmount } from "../types";
3
+ type NormalizedNode = {
4
+ diffType: string;
5
+ entryType: string;
6
+ ledgerIndex: string;
7
+ newFields: {
8
+ [field: string]: unknown;
9
+ };
10
+ finalFields: {
11
+ [field: string]: unknown;
12
+ };
13
+ previousFields: {
14
+ [field: string]: unknown;
15
+ };
16
+ PreviousTxnID?: string;
17
+ PreviousTxnLgrSeq?: number;
18
+ };
3
19
  declare function adjustQualityForXRP(quality: string, takerGetsCurrency: string, takerPaysCurrency: string): string;
4
20
  declare function parseQuality(quality?: number | null): number | undefined;
5
21
  declare function parseTimestamp(rippleTime?: number | null): string | undefined;
6
22
  declare function isPartialPayment(tx: any): boolean;
7
23
  declare function removeGenericCounterparty(amount: IssuedCurrencyAmount | FormattedIssuedCurrencyAmount | FormattedIssuedMPTAmount, address: string): FormattedIssuedCurrencyAmount | FormattedIssuedMPTAmount;
8
- declare function normalizeNodes(metadata: TransactionMetadata): any[];
24
+ declare function normalizeNode(affectedNode: Node): NormalizedNode;
25
+ declare function normalizeNodes(metadata: TransactionMetadata): NormalizedNode[];
9
26
  declare function hexToString(hex: string | undefined): string | undefined;
10
27
  declare function stringToHex(value: string | undefined): string | undefined;
11
28
  declare function bytesToHex(value: Uint8Array | ArrayBufferLike): string;
12
29
  declare function hexToBytes(value: string): Uint8Array;
13
30
  declare function parseUint32(buf: Buffer, cur: number): string;
14
31
  declare function parseUint64(buf: Buffer, cur: number): string;
15
- export { parseQuality, parseTimestamp, adjustQualityForXRP, isPartialPayment, removeGenericCounterparty, normalizeNodes, hexToString, stringToHex, bytesToHex, hexToBytes, parseUint32, parseUint64, };
32
+ export { NormalizedNode, parseQuality, parseTimestamp, adjustQualityForXRP, isPartialPayment, removeGenericCounterparty, normalizeNodes, normalizeNode, hexToString, stringToHex, bytesToHex, hexToBytes, parseUint32, parseUint64, };
@@ -9,6 +9,7 @@ exports.adjustQualityForXRP = adjustQualityForXRP;
9
9
  exports.isPartialPayment = isPartialPayment;
10
10
  exports.removeGenericCounterparty = removeGenericCounterparty;
11
11
  exports.normalizeNodes = normalizeNodes;
12
+ exports.normalizeNode = normalizeNode;
12
13
  exports.hexToString = hexToString;
13
14
  exports.stringToHex = stringToHex;
14
15
  exports.bytesToHex = bytesToHex;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bithomp/xrpl-api",
3
- "version": "3.2.10",
3
+ "version": "3.2.11",
4
4
  "description": "A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",