This commit is contained in:
nitowa
2023-08-15 22:28:03 +02:00
commit 1dae68b1c7
5529 changed files with 1659171 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
import type { Client } from '..';
import { Transaction } from '../models/transactions';
declare function autofill<T extends Transaction>(this: Client, transaction: T, signersCount?: number): Promise<T>;
export default autofill;
//# sourceMappingURL=autofill.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"autofill.d.ts","sourceRoot":"","sources":["../../../src/sugar/autofill.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAyBpD,iBAAe,QAAQ,CAAC,CAAC,SAAS,WAAW,EAC3C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,CAAC,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAkLD,eAAe,QAAQ,CAAA"}
+158
View File
@@ -0,0 +1,158 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const ripple_address_codec_1 = require("ripple-address-codec");
const errors_1 = require("../errors");
const flags_1 = require("../models/utils/flags");
const utils_1 = require("../utils");
const getFeeXrp_1 = __importDefault(require("./getFeeXrp"));
const LEDGER_OFFSET = 20;
function autofill(transaction, signersCount) {
return __awaiter(this, void 0, void 0, function* () {
const tx = Object.assign({}, transaction);
setValidAddresses(tx);
(0, flags_1.setTransactionFlagsToNumber)(tx);
const promises = [];
if (tx.Sequence == null) {
promises.push(setNextValidSequenceNumber(this, tx));
}
if (tx.Fee == null) {
promises.push(calculateFeePerTransactionType(this, tx, signersCount));
}
if (tx.LastLedgerSequence == null) {
promises.push(setLatestValidatedLedgerSequence(this, tx));
}
if (tx.TransactionType === 'AccountDelete') {
promises.push(checkAccountDeleteBlockers(this, tx));
}
return Promise.all(promises).then(() => tx);
});
}
function setValidAddresses(tx) {
validateAccountAddress(tx, 'Account', 'SourceTag');
if (tx['Destination'] != null) {
validateAccountAddress(tx, 'Destination', 'DestinationTag');
}
convertToClassicAddress(tx, 'Authorize');
convertToClassicAddress(tx, 'Unauthorize');
convertToClassicAddress(tx, 'Owner');
convertToClassicAddress(tx, 'RegularKey');
}
function validateAccountAddress(tx, accountField, tagField) {
const { classicAccount, tag } = getClassicAccountAndTag(tx[accountField]);
tx[accountField] = classicAccount;
if (tag != null && tag !== false) {
if (tx[tagField] && tx[tagField] !== tag) {
throw new errors_1.ValidationError(`The ${tagField}, if present, must match the tag of the ${accountField} X-address`);
}
tx[tagField] = tag;
}
}
function getClassicAccountAndTag(Account, expectedTag) {
if ((0, ripple_address_codec_1.isValidXAddress)(Account)) {
const classic = (0, ripple_address_codec_1.xAddressToClassicAddress)(Account);
if (expectedTag != null && classic.tag !== expectedTag) {
throw new errors_1.ValidationError('address includes a tag that does not match the tag specified in the transaction');
}
return {
classicAccount: classic.classicAddress,
tag: classic.tag,
};
}
return {
classicAccount: Account,
tag: expectedTag,
};
}
function convertToClassicAddress(tx, fieldName) {
const account = tx[fieldName];
if (typeof account === 'string') {
const { classicAccount } = getClassicAccountAndTag(account);
tx[fieldName] = classicAccount;
}
}
function setNextValidSequenceNumber(client, tx) {
return __awaiter(this, void 0, void 0, function* () {
const request = {
command: 'account_info',
account: tx.Account,
ledger_index: 'current',
};
const data = yield client.request(request);
tx.Sequence = data.result.account_data.Sequence;
});
}
function fetchAccountDeleteFee(client) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const response = yield client.request({ command: 'server_state' });
const fee = (_a = response.result.state.validated_ledger) === null || _a === void 0 ? void 0 : _a.reserve_inc;
if (fee == null) {
return Promise.reject(new Error('Could not fetch Owner Reserve.'));
}
return new bignumber_js_1.default(fee);
});
}
function calculateFeePerTransactionType(client, tx, signersCount = 0) {
return __awaiter(this, void 0, void 0, function* () {
const netFeeXRP = yield (0, getFeeXrp_1.default)(client);
const netFeeDrops = (0, utils_1.xrpToDrops)(netFeeXRP);
let baseFee = new bignumber_js_1.default(netFeeDrops);
if (tx.TransactionType === 'EscrowFinish' && tx.Fulfillment != null) {
const fulfillmentBytesSize = Math.ceil(tx.Fulfillment.length / 2);
const product = new bignumber_js_1.default(scaleValue(netFeeDrops, 33 + fulfillmentBytesSize / 16));
baseFee = product.dp(0, bignumber_js_1.default.ROUND_CEIL);
}
if (tx.TransactionType === 'AccountDelete') {
baseFee = yield fetchAccountDeleteFee(client);
}
if (signersCount > 0) {
baseFee = bignumber_js_1.default.sum(baseFee, scaleValue(netFeeDrops, 1 + signersCount));
}
const maxFeeDrops = (0, utils_1.xrpToDrops)(client.maxFeeXRP);
const totalFee = tx.TransactionType === 'AccountDelete'
? baseFee
: bignumber_js_1.default.min(baseFee, maxFeeDrops);
tx.Fee = totalFee.dp(0, bignumber_js_1.default.ROUND_CEIL).toString(10);
});
}
function scaleValue(value, multiplier) {
return new bignumber_js_1.default(value).times(multiplier).toString();
}
function setLatestValidatedLedgerSequence(client, tx) {
return __awaiter(this, void 0, void 0, function* () {
const ledgerSequence = yield client.getLedgerIndex();
tx.LastLedgerSequence = ledgerSequence + LEDGER_OFFSET;
});
}
function checkAccountDeleteBlockers(client, tx) {
return __awaiter(this, void 0, void 0, function* () {
const request = {
command: 'account_objects',
account: tx.Account,
ledger_index: 'validated',
deletion_blockers_only: true,
};
const response = yield client.request(request);
return new Promise((resolve, reject) => {
if (response.result.account_objects.length > 0) {
reject(new errors_1.XrplError(`Account ${tx.Account} cannot be deleted; there are Escrows, PayChannels, RippleStates, or Checks associated with the account.`, response.result.account_objects));
}
resolve();
});
});
}
exports.default = autofill;
//# sourceMappingURL=autofill.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"autofill.js","sourceRoot":"","sources":["../../../src/sugar/autofill.ts"],"names":[],"mappings":"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"}
+18
View File
@@ -0,0 +1,18 @@
import type { Client } from '..';
import { LedgerIndex } from '../models/common';
declare function getXrpBalance(this: Client, address: string, options?: {
ledger_hash?: string;
ledger_index?: LedgerIndex;
}): Promise<string>;
declare function getBalances(this: Client, address: string, options?: {
ledger_hash?: string;
ledger_index?: LedgerIndex;
peer?: string;
limit?: number;
}): Promise<Array<{
value: string;
currency: string;
issuer?: string | undefined;
}>>;
export { getXrpBalance, getBalances };
//# sourceMappingURL=balances.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"balances.d.ts","sourceRoot":"","sources":["../../../src/sugar/balances.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAuC9C,iBAAe,aAAa,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,WAAW,CAAA;CACtB,GACL,OAAO,CAAC,MAAM,CAAC,CASjB;AAkBD,iBAAe,WAAW,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,WAAW,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACV,GACL,OAAO,CACR,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CACxE,CAoCA;AAED,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA"}
+70
View File
@@ -0,0 +1,70 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBalances = exports.getXrpBalance = void 0;
const flatMap_1 = __importDefault(require("lodash/flatMap"));
const utils_1 = require("../utils");
function formatBalances(trustlines) {
return trustlines.map((trustline) => ({
value: trustline.balance,
currency: trustline.currency,
issuer: trustline.account,
}));
}
function getXrpBalance(address, options = {}) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const xrpRequest = {
command: 'account_info',
account: address,
ledger_index: (_a = options.ledger_index) !== null && _a !== void 0 ? _a : 'validated',
ledger_hash: options.ledger_hash,
};
const response = yield this.request(xrpRequest);
return (0, utils_1.dropsToXrp)(response.result.account_data.Balance);
});
}
exports.getXrpBalance = getXrpBalance;
function getBalances(address, options = {}) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const balances = [];
let xrpPromise = Promise.resolve('');
if (!options.peer) {
xrpPromise = this.getXrpBalance(address, {
ledger_hash: options.ledger_hash,
ledger_index: options.ledger_index,
});
}
const linesRequest = {
command: 'account_lines',
account: address,
ledger_index: (_a = options.ledger_index) !== null && _a !== void 0 ? _a : 'validated',
ledger_hash: options.ledger_hash,
peer: options.peer,
limit: options.limit,
};
const linesPromise = this.requestAll(linesRequest);
yield Promise.all([xrpPromise, linesPromise]).then(([xrpBalance, linesResponses]) => {
const accountLinesBalance = (0, flatMap_1.default)(linesResponses, (response) => formatBalances(response.result.lines));
if (xrpBalance !== '') {
balances.push({ currency: 'XRP', value: xrpBalance });
}
balances.push(...accountLinesBalance);
});
return balances.slice(0, options.limit);
});
}
exports.getBalances = getBalances;
//# sourceMappingURL=balances.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../src/sugar/balances.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAoC;AAMpC,oCAAqC;AAQrC,SAAS,cAAc,CAAC,UAAuB;IAC7C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACpC,KAAK,EAAE,SAAS,CAAC,OAAO;QACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,MAAM,EAAE,SAAS,CAAC,OAAO;KAC1B,CAAC,CAAC,CAAA;AACL,CAAC;AAsBD,SAAe,aAAa,CAE1B,OAAe,EACf,UAGI,EAAE;;;QAEN,MAAM,UAAU,GAAuB;YACrC,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,mCAAI,WAAW;YACjD,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAA;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAC/C,OAAO,IAAA,kBAAU,EAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;;CACxD;AAmEQ,sCAAa;AAjDtB,SAAe,WAAW,CAExB,OAAe,EACf,UAKI,EAAE;;;QAIN,MAAM,QAAQ,GAAc,EAAE,CAAA;QAG9B,IAAI,UAAU,GAAoB,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACrD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBACvC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CAAA;SACH;QAGD,MAAM,YAAY,GAAwB;YACxC,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,mCAAI,WAAW;YACjD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAA;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAGlD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAChD,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,EAAE;YAC/B,MAAM,mBAAmB,GAAG,IAAA,iBAAO,EAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC/D,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CACtC,CAAA;YACD,IAAI,UAAU,KAAK,EAAE,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;aACtD;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAA;QACvC,CAAC,CACF,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;;CACxC;AAEuB,kCAAW"}
+3
View File
@@ -0,0 +1,3 @@
import type { Client } from '..';
export default function getFeeXrp(client: Client, cushion?: number): Promise<string>;
//# sourceMappingURL=getFeeXrp.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"getFeeXrp.d.ts","sourceRoot":"","sources":["../../../src/sugar/getFeeXrp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAchC,wBAA8B,SAAS,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAyBjB"}
+39
View File
@@ -0,0 +1,39 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const errors_1 = require("../errors");
const NUM_DECIMAL_PLACES = 6;
const BASE_10 = 10;
function getFeeXrp(client, cushion) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const feeCushion = cushion !== null && cushion !== void 0 ? cushion : client.feeCushion;
const serverInfo = (yield client.request({ command: 'server_info' })).result
.info;
const baseFee = (_a = serverInfo.validated_ledger) === null || _a === void 0 ? void 0 : _a.base_fee_xrp;
if (baseFee == null) {
throw new errors_1.XrplError('getFeeXrp: Could not get base_fee_xrp from server_info');
}
const baseFeeXrp = new bignumber_js_1.default(baseFee);
if (serverInfo.load_factor == null) {
serverInfo.load_factor = 1;
}
let fee = baseFeeXrp.times(serverInfo.load_factor).times(feeCushion);
fee = bignumber_js_1.default.min(fee, client.maxFeeXRP);
return new bignumber_js_1.default(fee.toFixed(NUM_DECIMAL_PLACES)).toString(BASE_10);
});
}
exports.default = getFeeXrp;
//# sourceMappingURL=getFeeXrp.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"getFeeXrp.js","sourceRoot":"","sources":["../../../src/sugar/getFeeXrp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gEAAoC;AAGpC,sCAAqC;AAErC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,OAAO,GAAG,EAAE,CAAA;AAUlB,SAA8B,SAAS,CACrC,MAAc,EACd,OAAgB;;;QAEhB,MAAM,UAAU,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,MAAM,CAAC,UAAU,CAAA;QAE/C,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM;aACzE,IAAI,CAAA;QAEP,MAAM,OAAO,GAAG,MAAA,UAAU,CAAC,gBAAgB,0CAAE,YAAY,CAAA;QAEzD,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,MAAM,IAAI,kBAAS,CACjB,wDAAwD,CACzD,CAAA;SACF;QAED,MAAM,UAAU,GAAG,IAAI,sBAAS,CAAC,OAAO,CAAC,CAAA;QACzC,IAAI,UAAU,CAAC,WAAW,IAAI,IAAI,EAAE;YAElC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAA;SAC3B;QACD,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAGpE,GAAG,GAAG,sBAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QAE1C,OAAO,IAAI,sBAAS,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;;CACxE;AA5BD,4BA4BC"}
+3
View File
@@ -0,0 +1,3 @@
import type { Client } from '..';
export default function getLedgerIndex(this: Client): Promise<number>;
//# sourceMappingURL=getLedgerIndex.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"getLedgerIndex.d.ts","sourceRoot":"","sources":["../../../src/sugar/getLedgerIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAQhC,wBAA8B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
+22
View File
@@ -0,0 +1,22 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
function getLedgerIndex() {
return __awaiter(this, void 0, void 0, function* () {
const ledgerResponse = yield this.request({
command: 'ledger',
ledger_index: 'validated',
});
return ledgerResponse.result.ledger_index;
});
}
exports.default = getLedgerIndex;
//# sourceMappingURL=getLedgerIndex.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"getLedgerIndex.js","sourceRoot":"","sources":["../../../src/sugar/getLedgerIndex.ts"],"names":[],"mappings":";;;;;;;;;;;AAQA,SAA8B,cAAc;;QAC1C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACxC,OAAO,EAAE,QAAQ;YACjB,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAA;QACF,OAAO,cAAc,CAAC,MAAM,CAAC,YAAY,CAAA;IAC3C,CAAC;CAAA;AAND,iCAMC"}
+14
View File
@@ -0,0 +1,14 @@
import type { Client } from '../client';
import { LedgerIndex } from '../models/common';
import { BookOffer, TakerAmount } from '../models/methods/bookOffers';
declare function getOrderbook(this: Client, takerPays: TakerAmount, takerGets: TakerAmount, options?: {
limit?: number;
ledger_index?: LedgerIndex;
ledger_hash?: string | null;
taker?: string | null;
}): Promise<{
buy: BookOffer[];
sell: BookOffer[];
}>;
export default getOrderbook;
//# sourceMappingURL=getOrderbook.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"getOrderbook.d.ts","sourceRoot":"","sources":["../../../src/sugar/getOrderbook.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EACL,SAAS,EAET,WAAW,EACZ,MAAM,8BAA8B,CAAA;AAuCrC,iBAAe,YAAY,CACzB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,WAAW,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjB,GACL,OAAO,CAAC;IACT,GAAG,EAAE,SAAS,EAAE,CAAA;IAChB,IAAI,EAAE,SAAS,EAAE,CAAA;CAClB,CAAC,CAqFD;AAED,eAAe,YAAY,CAAA"}
+92
View File
@@ -0,0 +1,92 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const flatMap_1 = __importDefault(require("lodash/flatMap"));
const errors_1 = require("../errors");
const Offer_1 = require("../models/ledger/Offer");
const DEFAULT_LIMIT = 20;
function sortOffers(offers) {
return offers.sort((offerA, offerB) => {
var _a, _b;
const qualityA = (_a = offerA.quality) !== null && _a !== void 0 ? _a : 0;
const qualityB = (_b = offerB.quality) !== null && _b !== void 0 ? _b : 0;
return new bignumber_js_1.default(qualityA).comparedTo(qualityB);
});
}
const getOrderbookOptionsSet = new Set([
'limit',
'ledger_index',
'ledger_hash',
'taker',
]);
function getOrderbook(takerPays, takerGets, options = {}) {
var _a, _b;
return __awaiter(this, void 0, void 0, function* () {
Object.keys(options).forEach((key) => {
if (!getOrderbookOptionsSet.has(key)) {
throw new errors_1.ValidationError(`Unexpected option: ${key}`, options);
}
});
if (options.limit && typeof options.limit !== 'number') {
throw new errors_1.ValidationError('limit must be a number', options.limit);
}
if (options.ledger_index &&
!(typeof options.ledger_index === 'number' ||
(typeof options.ledger_index === 'string' &&
['validated', 'closed', 'current'].includes(options.ledger_index)))) {
throw new errors_1.ValidationError('ledger_index must be a number or a string of "validated", "closed", or "current"', options.ledger_index);
}
if (options.ledger_hash !== undefined &&
options.ledger_hash !== null &&
typeof options.ledger_hash !== 'string') {
throw new errors_1.ValidationError('ledger_hash must be a string', options.ledger_hash);
}
if (options.taker !== undefined && typeof options.taker !== 'string') {
throw new errors_1.ValidationError('taker must be a string', options.taker);
}
const request = {
command: 'book_offers',
taker_pays: takerPays,
taker_gets: takerGets,
ledger_index: (_a = options.ledger_index) !== null && _a !== void 0 ? _a : 'validated',
ledger_hash: options.ledger_hash === null ? undefined : options.ledger_hash,
limit: (_b = options.limit) !== null && _b !== void 0 ? _b : DEFAULT_LIMIT,
taker: options.taker ? options.taker : undefined,
};
const directOfferResults = yield this.requestAll(request);
request.taker_gets = takerPays;
request.taker_pays = takerGets;
const reverseOfferResults = yield this.requestAll(request);
const directOffers = (0, flatMap_1.default)(directOfferResults, (directOfferResult) => directOfferResult.result.offers);
const reverseOffers = (0, flatMap_1.default)(reverseOfferResults, (reverseOfferResult) => reverseOfferResult.result.offers);
const orders = [...directOffers, ...reverseOffers];
const buy = [];
const sell = [];
orders.forEach((order) => {
if ((order.Flags & Offer_1.OfferFlags.lsfSell) === 0) {
buy.push(order);
}
else {
sell.push(order);
}
});
return {
buy: sortOffers(buy).slice(0, options.limit),
sell: sortOffers(sell).slice(0, options.limit),
};
});
}
exports.default = getOrderbook;
//# sourceMappingURL=getOrderbook.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"getOrderbook.js","sourceRoot":"","sources":["../../../src/sugar/getOrderbook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,gEAAoC;AACpC,6DAAoC;AAGpC,sCAA2C;AAE3C,kDAAmD;AAOnD,MAAM,aAAa,GAAG,EAAE,CAAA;AAExB,SAAS,UAAU,CAAC,MAAmB;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;;QACpC,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,CAAC,CAAA;QAEpC,OAAO,IAAI,sBAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,OAAO;IACP,cAAc;IACd,aAAa;IACb,OAAO;CACR,CAAC,CAAA;AAqBF,SAAe,YAAY,CAEzB,SAAsB,EACtB,SAAsB,EACtB,UAKI,EAAE;;;QAKN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACpC,MAAM,IAAI,wBAAe,CAAC,sBAAsB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;aAChE;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;YACtD,MAAM,IAAI,wBAAe,CAAC,wBAAwB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;SACnE;QAED,IACE,OAAO,CAAC,YAAY;YACpB,CAAC,CACC,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ;gBACxC,CAAC,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ;oBACvC,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CACrE,EACD;YACA,MAAM,IAAI,wBAAe,CACvB,kFAAkF,EAClF,OAAO,CAAC,YAAY,CACrB,CAAA;SACF;QAED,IACE,OAAO,CAAC,WAAW,KAAK,SAAS;YACjC,OAAO,CAAC,WAAW,KAAK,IAAI;YAC5B,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EACvC;YACA,MAAM,IAAI,wBAAe,CACvB,8BAA8B,EAC9B,OAAO,CAAC,WAAW,CACpB,CAAA;SACF;QAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;YACpE,MAAM,IAAI,wBAAe,CAAC,wBAAwB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;SACnE;QAED,MAAM,OAAO,GAAsB;YACjC,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,mCAAI,WAAW;YACjD,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW;YAC3E,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,aAAa;YACrC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACjD,CAAA;QAED,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACzD,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;QAC9B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;QAC9B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAE1D,MAAM,YAAY,GAAG,IAAA,iBAAO,EAC1B,kBAAkB,EAClB,CAAC,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CACvD,CAAA;QACD,MAAM,aAAa,GAAG,IAAA,iBAAO,EAC3B,mBAAmB,EACnB,CAAC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CACzD,CAAA;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAA;QAElD,MAAM,GAAG,GAAgB,EAAE,CAAA;QAC3B,MAAM,IAAI,GAAgB,EAAE,CAAA;QAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAEvB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,kBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC5C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aAChB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACjB;QACH,CAAC,CAAC,CAAA;QAMF,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;YAC5C,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;SAC/C,CAAA;;CACF;AAED,kBAAe,YAAY,CAAA"}
+7
View File
@@ -0,0 +1,7 @@
export { default as autofill } from './autofill';
export { getBalances, getXrpBalance } from './balances';
export { default as getLedgerIndex } from './getLedgerIndex';
export { default as getOrderbook } from './getOrderbook';
export * from './submit';
export * from './utils';
//# sourceMappingURL=index.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sugar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEvD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAExD,cAAc,UAAU,CAAA;AAExB,cAAc,SAAS,CAAA"}
+32
View File
@@ -0,0 +1,32 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOrderbook = exports.getLedgerIndex = exports.getXrpBalance = exports.getBalances = exports.autofill = void 0;
var autofill_1 = require("./autofill");
Object.defineProperty(exports, "autofill", { enumerable: true, get: function () { return __importDefault(autofill_1).default; } });
var balances_1 = require("./balances");
Object.defineProperty(exports, "getBalances", { enumerable: true, get: function () { return balances_1.getBalances; } });
Object.defineProperty(exports, "getXrpBalance", { enumerable: true, get: function () { return balances_1.getXrpBalance; } });
var getLedgerIndex_1 = require("./getLedgerIndex");
Object.defineProperty(exports, "getLedgerIndex", { enumerable: true, get: function () { return __importDefault(getLedgerIndex_1).default; } });
var getOrderbook_1 = require("./getOrderbook");
Object.defineProperty(exports, "getOrderbook", { enumerable: true, get: function () { return __importDefault(getOrderbook_1).default; } });
__exportStar(require("./submit"), exports);
__exportStar(require("./utils"), exports);
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sugar/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,uCAAgD;AAAvC,qHAAA,OAAO,OAAY;AAE5B,uCAAuD;AAA9C,uGAAA,WAAW,OAAA;AAAE,yGAAA,aAAa,OAAA;AAEnC,mDAA4D;AAAnD,iIAAA,OAAO,OAAkB;AAElC,+CAAwD;AAA/C,6HAAA,OAAO,OAAgB;AAEhC,2CAAwB;AAExB,0CAAuB"}
+15
View File
@@ -0,0 +1,15 @@
import type { Client, SubmitResponse, Wallet } from '..';
import { TxResponse } from '../models/methods';
import { Transaction } from '../models/transactions';
declare function submit(this: Client, transaction: Transaction | string, opts?: {
autofill?: boolean;
failHard?: boolean;
wallet?: Wallet;
}): Promise<SubmitResponse>;
declare function submitAndWait(this: Client, transaction: Transaction | string, opts?: {
autofill?: boolean;
failHard?: boolean;
wallet?: Wallet;
}): Promise<TxResponse>;
export { submit, submitAndWait };
//# sourceMappingURL=submit.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/sugar/submit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAiB,cAAc,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AA4BpD,iBAAe,MAAM,CACnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,GAAG,MAAM,EACjC,IAAI,CAAC,EAAE;IAEL,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GACA,OAAO,CAAC,cAAc,CAAC,CAGzB;AAeD,iBAAe,aAAa,CAC1B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,GAAG,MAAM,EACjC,IAAI,CAAC,EAAE;IAEL,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GACA,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAqJD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA"}
+118
View File
@@ -0,0 +1,118 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.submitAndWait = exports.submit = void 0;
const ripple_binary_codec_1 = require("ripple-binary-codec");
const errors_1 = require("../errors");
const utils_1 = require("../utils");
const LEDGER_CLOSE_TIME = 1000;
function sleep(ms) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
});
}
function submit(transaction, opts) {
return __awaiter(this, void 0, void 0, function* () {
const signedTx = yield getSignedTx(this, transaction, opts);
return submitRequest(this, signedTx, opts === null || opts === void 0 ? void 0 : opts.failHard);
});
}
exports.submit = submit;
function submitAndWait(transaction, opts) {
return __awaiter(this, void 0, void 0, function* () {
const signedTx = yield getSignedTx(this, transaction, opts);
const lastLedger = getLastLedgerSequence(signedTx);
if (lastLedger == null) {
throw new errors_1.ValidationError('Transaction must contain a LastLedgerSequence value for reliable submission.');
}
const response = yield submitRequest(this, signedTx, opts === null || opts === void 0 ? void 0 : opts.failHard);
const txHash = utils_1.hashes.hashSignedTx(signedTx);
return waitForFinalTransactionOutcome(this, txHash, lastLedger, response.result.engine_result);
});
}
exports.submitAndWait = submitAndWait;
function submitRequest(client, signedTransaction, failHard = false) {
return __awaiter(this, void 0, void 0, function* () {
if (!isSigned(signedTransaction)) {
throw new errors_1.ValidationError('Transaction must be signed');
}
const signedTxEncoded = typeof signedTransaction === 'string'
? signedTransaction
: (0, ripple_binary_codec_1.encode)(signedTransaction);
const request = {
command: 'submit',
tx_blob: signedTxEncoded,
fail_hard: isAccountDelete(signedTransaction) || failHard,
};
return client.request(request);
});
}
function waitForFinalTransactionOutcome(client, txHash, lastLedger, submissionResult) {
return __awaiter(this, void 0, void 0, function* () {
yield sleep(LEDGER_CLOSE_TIME);
const latestLedger = yield client.getLedgerIndex();
if (lastLedger < latestLedger) {
throw new errors_1.XrplError(`The latest ledger sequence ${latestLedger} is greater than the transaction's LastLedgerSequence (${lastLedger}).\n` +
`Preliminary result: ${submissionResult}`);
}
const txResponse = yield client
.request({
command: 'tx',
transaction: txHash,
})
.catch((error) => __awaiter(this, void 0, void 0, function* () {
var _a;
const message = (_a = error === null || error === void 0 ? void 0 : error.data) === null || _a === void 0 ? void 0 : _a.error;
if (message === 'txnNotFound') {
return waitForFinalTransactionOutcome(client, txHash, lastLedger, submissionResult);
}
throw new Error(`${message} \n Preliminary result: ${submissionResult}.\nFull error details: ${String(error)}`);
}));
if (txResponse.result.validated) {
return txResponse;
}
return waitForFinalTransactionOutcome(client, txHash, lastLedger, submissionResult);
});
}
function isSigned(transaction) {
const tx = typeof transaction === 'string' ? (0, ripple_binary_codec_1.decode)(transaction) : transaction;
return (typeof tx !== 'string' &&
(tx.SigningPubKey != null || tx.TxnSignature != null));
}
function getSignedTx(client, transaction, { autofill = true, wallet, } = {}) {
return __awaiter(this, void 0, void 0, function* () {
if (isSigned(transaction)) {
return transaction;
}
if (!wallet) {
throw new errors_1.ValidationError('Wallet must be provided when submitting an unsigned transaction');
}
let tx = typeof transaction === 'string'
?
(0, ripple_binary_codec_1.decode)(transaction)
: transaction;
if (autofill) {
tx = yield client.autofill(tx);
}
return wallet.sign(tx).tx_blob;
});
}
function getLastLedgerSequence(transaction) {
const tx = typeof transaction === 'string' ? (0, ripple_binary_codec_1.decode)(transaction) : transaction;
return tx.LastLedgerSequence;
}
function isAccountDelete(transaction) {
const tx = typeof transaction === 'string' ? (0, ripple_binary_codec_1.decode)(transaction) : transaction;
return tx.TransactionType === 'AccountDelete';
}
//# sourceMappingURL=submit.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/sugar/submit.ts"],"names":[],"mappings":"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"}
+2
View File
@@ -0,0 +1,2 @@
export declare function ensureClassicAddress(account: string): string;
//# sourceMappingURL=utils.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sugar/utils.ts"],"names":[],"mappings":"AAUA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmB5D"}
+16
View File
@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ensureClassicAddress = void 0;
const ripple_address_codec_1 = require("ripple-address-codec");
function ensureClassicAddress(account) {
if ((0, ripple_address_codec_1.isValidXAddress)(account)) {
const { classicAddress, tag } = (0, ripple_address_codec_1.xAddressToClassicAddress)(account);
if (tag !== false) {
throw new Error('This command does not support the use of a tag. Use an address without a tag.');
}
return classicAddress;
}
return account;
}
exports.ensureClassicAddress = ensureClassicAddress;
//# sourceMappingURL=utils.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sugar/utils.ts"],"names":[],"mappings":";;;AAAA,+DAAgF;AAUhF,SAAgB,oBAAoB,CAAC,OAAe;IAClD,IAAI,IAAA,sCAAe,EAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,IAAA,+CAAwB,EAAC,OAAO,CAAC,CAAA;QAOjE,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAA;SACF;QAGD,OAAO,cAAc,CAAA;KACtB;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAnBD,oDAmBC"}