@bithomp/xrpl-api 3.7.6 → 3.7.9
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.
- package/lib/parse/outcome/amendment_changes.d.ts +8 -0
- package/lib/parse/outcome/amendment_changes.js +84 -0
- package/lib/parse/outcome/index.d.ts +1 -0
- package/lib/parse/outcome/index.js +3 -1
- package/lib/parse/outcome.js +8 -0
- package/lib/parse/specification/fee-update.js +51 -5
- package/lib/types/fees.d.ts +3 -1
- package/lib/types/ledger_entries.d.ts +7 -1
- package/package.json +2 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type AmendmentStatus = "majority" | "enabled" | "lostMajority" | "obsolete";
|
|
2
|
+
interface FormattedAmendmentSummaryInterface {
|
|
3
|
+
status?: AmendmentStatus;
|
|
4
|
+
amendment?: string;
|
|
5
|
+
closeTime?: number;
|
|
6
|
+
}
|
|
7
|
+
declare function parseAmendmentChanges(tx: any): FormattedAmendmentSummaryInterface | undefined;
|
|
8
|
+
export { parseAmendmentChanges };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAmendmentChanges = parseAmendmentChanges;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const ledger_1 = require("../../models/ledger");
|
|
6
|
+
function parseAmendmentStatus(tx, node) {
|
|
7
|
+
const amendment = tx.Amendment;
|
|
8
|
+
const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
|
|
9
|
+
const prev = node.previousFields;
|
|
10
|
+
const amendments = final.Amendments || [];
|
|
11
|
+
const majority = final.Majorities || [];
|
|
12
|
+
if (amendments.includes(amendment)) {
|
|
13
|
+
return "enabled";
|
|
14
|
+
}
|
|
15
|
+
for (const maj of majority) {
|
|
16
|
+
if (maj.Majority.Amendment === amendment) {
|
|
17
|
+
return "majority";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (prev && prev.Majorities) {
|
|
21
|
+
const prevMajority = prev.Majorities;
|
|
22
|
+
for (const maj of prevMajority) {
|
|
23
|
+
if (maj.Majority.Amendment === amendment) {
|
|
24
|
+
return "lostMajority";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (node.diffType === "DeletedNode") {
|
|
29
|
+
const prevFinal = node.finalFields;
|
|
30
|
+
const prevAmendments = prevFinal.Amendments || [];
|
|
31
|
+
if (!prevAmendments.includes(amendment)) {
|
|
32
|
+
return "obsolete";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
function summarizeAmendment(tx, node) {
|
|
38
|
+
const summary = {
|
|
39
|
+
amendment: tx.Amendment,
|
|
40
|
+
status: parseAmendmentStatus(tx, node),
|
|
41
|
+
};
|
|
42
|
+
if (summary.status === "majority") {
|
|
43
|
+
const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
|
|
44
|
+
const majority = final.Majorities || [];
|
|
45
|
+
for (const maj of majority) {
|
|
46
|
+
if (maj.Majority.Amendment === tx.Amendment) {
|
|
47
|
+
if (maj.Majority.CloseTime) {
|
|
48
|
+
summary.closeTime = (0, ledger_1.ledgerTimeToTimestamp)(maj.Majority.CloseTime);
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (summary.status === "lostMajority") {
|
|
55
|
+
const prev = node.previousFields;
|
|
56
|
+
if (prev && prev.Majorities) {
|
|
57
|
+
const prevMajority = prev.Majorities;
|
|
58
|
+
for (const maj of prevMajority) {
|
|
59
|
+
if (maj.Majority.Amendment === tx.Amendment) {
|
|
60
|
+
if (maj.Majority.CloseTime) {
|
|
61
|
+
summary.closeTime = (0, ledger_1.ledgerTimeToTimestamp)(maj.Majority.CloseTime);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return summary;
|
|
69
|
+
}
|
|
70
|
+
function parseAmendmentChanges(tx) {
|
|
71
|
+
const amendment = tx.Amendment;
|
|
72
|
+
if (!amendment) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const affectedNodes = tx.meta.AffectedNodes.filter((affectedNode) => {
|
|
76
|
+
const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
|
|
77
|
+
return node.LedgerEntryType === "Amendments";
|
|
78
|
+
});
|
|
79
|
+
if (affectedNodes.length !== 1) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
|
|
83
|
+
return summarizeAmendment(tx, normalizedNode);
|
|
84
|
+
}
|
|
@@ -21,3 +21,4 @@ export { parseMPTokenChanges } from "./mptoken_changes";
|
|
|
21
21
|
export { parseCredentialChanges } from "./credential_changes";
|
|
22
22
|
export { parseDelegateChanges } from "./delegate_changes";
|
|
23
23
|
export { parseRemarksChanges } from "./remarks_changes";
|
|
24
|
+
export { parseAmendmentChanges } from "./amendment_changes";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseRemarksChanges = exports.parseDelegateChanges = exports.parseCredentialChanges = exports.parseMPTokenChanges = exports.parseMPTokenIssuanceChanges = exports.parseDeliveredAmount = exports.parseOracleChanges = exports.parseDIDChanges = exports.parseAmmChanges = exports.parseUNLReportChanges = exports.parseEscrowChanges = exports.parseEmittedTxns = exports.parseHooksExecutions = exports.parseOrderbookChanges = exports.parseCheckChanges = exports.parseChannelChanges = exports.parseLockedBalanceChanges = exports.parseBalanceChanges = exports.parseURITokenSellOfferChanges = exports.parseURITokenChanges = exports.parseNFTokenOfferChanges = exports.parseNFTokenChanges = exports.parseAffectedObjects = void 0;
|
|
3
|
+
exports.parseAmendmentChanges = exports.parseRemarksChanges = exports.parseDelegateChanges = exports.parseCredentialChanges = exports.parseMPTokenChanges = exports.parseMPTokenIssuanceChanges = exports.parseDeliveredAmount = exports.parseOracleChanges = exports.parseDIDChanges = exports.parseAmmChanges = exports.parseUNLReportChanges = exports.parseEscrowChanges = exports.parseEmittedTxns = exports.parseHooksExecutions = exports.parseOrderbookChanges = exports.parseCheckChanges = exports.parseChannelChanges = exports.parseLockedBalanceChanges = exports.parseBalanceChanges = exports.parseURITokenSellOfferChanges = exports.parseURITokenChanges = exports.parseNFTokenOfferChanges = exports.parseNFTokenChanges = exports.parseAffectedObjects = void 0;
|
|
4
4
|
var affected_objects_1 = require("./affected_objects");
|
|
5
5
|
Object.defineProperty(exports, "parseAffectedObjects", { enumerable: true, get: function () { return affected_objects_1.parseAffectedObjects; } });
|
|
6
6
|
var nftoken_changes_1 = require("./nftoken_changes");
|
|
@@ -47,3 +47,5 @@ var delegate_changes_1 = require("./delegate_changes");
|
|
|
47
47
|
Object.defineProperty(exports, "parseDelegateChanges", { enumerable: true, get: function () { return delegate_changes_1.parseDelegateChanges; } });
|
|
48
48
|
var remarks_changes_1 = require("./remarks_changes");
|
|
49
49
|
Object.defineProperty(exports, "parseRemarksChanges", { enumerable: true, get: function () { return remarks_changes_1.parseRemarksChanges; } });
|
|
50
|
+
var amendment_changes_1 = require("./amendment_changes");
|
|
51
|
+
Object.defineProperty(exports, "parseAmendmentChanges", { enumerable: true, get: function () { return amendment_changes_1.parseAmendmentChanges; } });
|
package/lib/parse/outcome.js
CHANGED
|
@@ -42,6 +42,7 @@ const MPTOKEN_TYPES = [
|
|
|
42
42
|
const CREDENTIAL_TYPES = ["CredentialCreate", "CredentialAccept", "CredentialDelete"];
|
|
43
43
|
const DELEGATE_TYPES = ["DelegateSet"];
|
|
44
44
|
const REMARKS_TYPES = ["SetRemarks"];
|
|
45
|
+
const AMENDMENT_TYPES = ["EnableAmendment"];
|
|
45
46
|
function parseOutcome(tx, nativeCurrency, definitions) {
|
|
46
47
|
const metadata = tx.meta || tx.metaData;
|
|
47
48
|
if (!metadata) {
|
|
@@ -58,6 +59,7 @@ function parseOutcome(tx, nativeCurrency, definitions) {
|
|
|
58
59
|
channelChanges: getChannelChanges(tx),
|
|
59
60
|
checkChanges: getCheckChanges(tx),
|
|
60
61
|
escrowChanges: getEscrowChanges(tx),
|
|
62
|
+
amendmentChanges: getAmendmentChanges(tx),
|
|
61
63
|
nftokenChanges: getNFTokenChanges(tx),
|
|
62
64
|
nftokenOfferChanges: getNFTokenOfferChanges(tx),
|
|
63
65
|
uritokenChanges: getURITokenChanges(tx),
|
|
@@ -114,6 +116,12 @@ function getEscrowChanges(tx) {
|
|
|
114
116
|
}
|
|
115
117
|
return (0, index_1.parseEscrowChanges)(tx);
|
|
116
118
|
}
|
|
119
|
+
function getAmendmentChanges(tx) {
|
|
120
|
+
if (!AMENDMENT_TYPES.includes(tx.TransactionType)) {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
return (0, index_1.parseAmendmentChanges)(tx);
|
|
124
|
+
}
|
|
117
125
|
function getAffectedObjects(tx) {
|
|
118
126
|
if (!NFTOKEN_TYPES.includes(tx.TransactionType) && !URITOKEN_TYPES.includes(tx.TransactionType)) {
|
|
119
127
|
return undefined;
|
|
@@ -1,21 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const assert = __importStar(require("assert"));
|
|
6
40
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
7
41
|
const common_1 = require("../../common");
|
|
8
42
|
const emit_details_1 = require("../ledger/emit_details");
|
|
9
43
|
const memos_1 = require("../ledger/memos");
|
|
10
44
|
const source_1 = require("../ledger/source");
|
|
11
45
|
function parseFeeUpdate(tx) {
|
|
12
|
-
|
|
46
|
+
assert.ok(tx.TransactionType === "SetFee");
|
|
47
|
+
let baseFeeDrops = "0";
|
|
48
|
+
if (tx.BaseFeeDrops) {
|
|
49
|
+
baseFeeDrops = tx.BaseFeeDrops;
|
|
50
|
+
}
|
|
51
|
+
else if (tx.BaseFee) {
|
|
52
|
+
baseFeeDrops = new bignumber_js_1.default(tx.BaseFee, 16).toString();
|
|
53
|
+
}
|
|
54
|
+
const baseFeeNativeCurrency = (0, common_1.dropsToXrp)(baseFeeDrops);
|
|
55
|
+
const reserveBaseNativeCurrency = (0, common_1.dropsToXrp)(tx.ReserveBase || tx.ReserveBaseDrops);
|
|
56
|
+
const reserveIncrementNativeCurrency = (0, common_1.dropsToXrp)(tx.ReserveIncrement || tx.ReserveIncrementDrops);
|
|
13
57
|
return {
|
|
14
58
|
source: (0, source_1.parseSource)(tx),
|
|
15
|
-
baseFeeXRP:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
59
|
+
baseFeeXRP: baseFeeNativeCurrency,
|
|
60
|
+
reserveBaseXRP: reserveBaseNativeCurrency,
|
|
61
|
+
reserveIncrementXRP: reserveIncrementNativeCurrency,
|
|
62
|
+
baseFeeNativeCurrency,
|
|
63
|
+
reserveBaseNativeCurrency,
|
|
64
|
+
reserveIncrementNativeCurrency,
|
|
19
65
|
emittedDetails: (0, emit_details_1.parseEmittedDetails)(tx),
|
|
20
66
|
memos: (0, memos_1.parseMemos)(tx),
|
|
21
67
|
};
|
package/lib/types/fees.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { FormattedBaseSpecification } from "./specification";
|
|
2
2
|
export type FormattedFeeUpdateSpecification = {
|
|
3
|
+
baseFeeNativeCurrency: string;
|
|
4
|
+
reserveBaseNativeCurrency: string;
|
|
5
|
+
reserveIncrementNativeCurrency: string;
|
|
3
6
|
baseFeeXRP: string;
|
|
4
|
-
referenceFeeUnits: number;
|
|
5
7
|
reserveBaseXRP: string;
|
|
6
8
|
reserveIncrementXRP: string;
|
|
7
9
|
} & FormattedBaseSpecification;
|
|
@@ -18,10 +18,16 @@ export interface AccountRootLedgerEntry {
|
|
|
18
18
|
TransferRate?: number;
|
|
19
19
|
WalletLocator?: string;
|
|
20
20
|
}
|
|
21
|
+
export interface AmendmentsMajority {
|
|
22
|
+
Majority: {
|
|
23
|
+
Amendment?: string;
|
|
24
|
+
CloseTime?: number;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
21
27
|
export interface AmendmentsLedgerEntry {
|
|
22
28
|
LedgerEntryType: "Amendments";
|
|
23
29
|
Amendments?: string[];
|
|
24
|
-
Majorities?:
|
|
30
|
+
Majorities?: AmendmentsMajority[];
|
|
25
31
|
Flags: 0;
|
|
26
32
|
}
|
|
27
33
|
export interface CheckLedgerEntry {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bithomp/xrpl-api",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.9",
|
|
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",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
|
|
43
43
|
"lint": "eslint",
|
|
44
44
|
"prepare": "npm run build",
|
|
45
|
-
"
|
|
45
|
+
"prepublishOnly": "npm test && npm run lint",
|
|
46
46
|
"preversion": "npm run lint",
|
|
47
47
|
"version": "npm run format && git add -A src",
|
|
48
48
|
"postversion": "git push && git push --tags"
|