xrpl 4.4.0-smartescrow.0 → 4.5.0-smartescrow.0
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/build/xrpl-latest-min.js +1 -1
- package/build/xrpl-latest-min.js.map +1 -1
- package/build/xrpl-latest.js +191 -26
- package/build/xrpl-latest.js.map +1 -1
- package/dist/npm/models/common/index.d.ts +16 -0
- package/dist/npm/models/common/index.d.ts.map +1 -1
- package/dist/npm/models/ledger/AccountRoot.d.ts +3 -1
- package/dist/npm/models/ledger/AccountRoot.d.ts.map +1 -1
- package/dist/npm/models/ledger/AccountRoot.js +1 -0
- package/dist/npm/models/ledger/AccountRoot.js.map +1 -1
- package/dist/npm/models/ledger/DirectoryNode.d.ts +1 -0
- package/dist/npm/models/ledger/DirectoryNode.d.ts.map +1 -1
- package/dist/npm/models/ledger/Escrow.d.ts +2 -0
- package/dist/npm/models/ledger/Escrow.d.ts.map +1 -1
- package/dist/npm/models/ledger/MPToken.d.ts +1 -0
- package/dist/npm/models/ledger/MPToken.d.ts.map +1 -1
- package/dist/npm/models/ledger/MPTokenIssuance.d.ts +1 -0
- package/dist/npm/models/ledger/MPTokenIssuance.d.ts.map +1 -1
- package/dist/npm/models/ledger/Offer.d.ts +10 -1
- package/dist/npm/models/ledger/Offer.d.ts.map +1 -1
- package/dist/npm/models/ledger/Offer.js +1 -0
- package/dist/npm/models/ledger/Offer.js.map +1 -1
- package/dist/npm/models/methods/bookOffers.d.ts +1 -0
- package/dist/npm/models/methods/bookOffers.d.ts.map +1 -1
- package/dist/npm/models/methods/pathFind.d.ts +2 -0
- package/dist/npm/models/methods/pathFind.d.ts.map +1 -1
- package/dist/npm/models/methods/ripplePathFind.d.ts +1 -0
- package/dist/npm/models/methods/ripplePathFind.d.ts.map +1 -1
- package/dist/npm/models/methods/subscribe.d.ts +4 -0
- package/dist/npm/models/methods/subscribe.d.ts.map +1 -1
- package/dist/npm/models/transactions/MPTokenIssuanceCreate.d.ts +1 -1
- package/dist/npm/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
- package/dist/npm/models/transactions/MPTokenIssuanceCreate.js +14 -5
- package/dist/npm/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
- package/dist/npm/models/transactions/accountSet.d.ts +2 -1
- package/dist/npm/models/transactions/accountSet.d.ts.map +1 -1
- package/dist/npm/models/transactions/accountSet.js +1 -0
- package/dist/npm/models/transactions/accountSet.js.map +1 -1
- package/dist/npm/models/transactions/common.d.ts +4 -0
- package/dist/npm/models/transactions/common.d.ts.map +1 -1
- package/dist/npm/models/transactions/common.js +134 -1
- package/dist/npm/models/transactions/common.js.map +1 -1
- package/dist/npm/models/transactions/escrowCreate.d.ts +2 -1
- package/dist/npm/models/transactions/escrowCreate.d.ts.map +1 -1
- package/dist/npm/models/transactions/escrowCreate.js +1 -6
- package/dist/npm/models/transactions/escrowCreate.js.map +1 -1
- package/dist/npm/models/transactions/escrowFinish.d.ts +5 -0
- package/dist/npm/models/transactions/escrowFinish.d.ts.map +1 -1
- package/dist/npm/models/transactions/escrowFinish.js.map +1 -1
- package/dist/npm/models/transactions/index.d.ts +1 -1
- package/dist/npm/models/transactions/index.d.ts.map +1 -1
- package/dist/npm/models/transactions/index.js +2 -1
- package/dist/npm/models/transactions/index.js.map +1 -1
- package/dist/npm/models/transactions/metadata.d.ts +2 -1
- package/dist/npm/models/transactions/metadata.d.ts.map +1 -1
- package/dist/npm/models/transactions/metadata.js.map +1 -1
- package/dist/npm/models/transactions/offerCreate.d.ts +4 -1
- package/dist/npm/models/transactions/offerCreate.d.ts.map +1 -1
- package/dist/npm/models/transactions/offerCreate.js +10 -0
- package/dist/npm/models/transactions/offerCreate.js.map +1 -1
- package/dist/npm/models/transactions/payment.d.ts +1 -0
- package/dist/npm/models/transactions/payment.d.ts.map +1 -1
- package/dist/npm/models/transactions/payment.js +4 -3
- package/dist/npm/models/transactions/payment.js.map +1 -1
- package/dist/npm/models/transactions/vaultCreate.d.ts.map +1 -1
- package/dist/npm/models/transactions/vaultCreate.js +13 -4
- package/dist/npm/models/transactions/vaultCreate.js.map +1 -1
- package/dist/npm/models/transactions/vaultDeposit.d.ts +2 -2
- package/dist/npm/models/transactions/vaultDeposit.d.ts.map +1 -1
- package/dist/npm/models/transactions/vaultDeposit.js.map +1 -1
- package/dist/npm/models/transactions/vaultWithdraw.d.ts +2 -2
- package/dist/npm/models/transactions/vaultWithdraw.d.ts.map +1 -1
- package/dist/npm/models/transactions/vaultWithdraw.js.map +1 -1
- package/dist/npm/snippets/src/permissionedDEX.d.ts +2 -0
- package/dist/npm/snippets/src/permissionedDEX.d.ts.map +1 -0
- package/dist/npm/snippets/src/permissionedDEX.js +173 -0
- package/dist/npm/snippets/src/permissionedDEX.js.map +1 -0
- package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
- package/dist/npm/src/models/common/index.d.ts +16 -0
- package/dist/npm/src/models/common/index.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/AccountRoot.d.ts +3 -1
- package/dist/npm/src/models/ledger/AccountRoot.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/AccountRoot.js +1 -0
- package/dist/npm/src/models/ledger/AccountRoot.js.map +1 -1
- package/dist/npm/src/models/ledger/DirectoryNode.d.ts +1 -0
- package/dist/npm/src/models/ledger/DirectoryNode.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/Escrow.d.ts +2 -0
- package/dist/npm/src/models/ledger/Escrow.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/MPToken.d.ts +1 -0
- package/dist/npm/src/models/ledger/MPToken.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/MPTokenIssuance.d.ts +1 -0
- package/dist/npm/src/models/ledger/MPTokenIssuance.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/Offer.d.ts +10 -1
- package/dist/npm/src/models/ledger/Offer.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/Offer.js +1 -0
- package/dist/npm/src/models/ledger/Offer.js.map +1 -1
- package/dist/npm/src/models/methods/bookOffers.d.ts +1 -0
- package/dist/npm/src/models/methods/bookOffers.d.ts.map +1 -1
- package/dist/npm/src/models/methods/pathFind.d.ts +2 -0
- package/dist/npm/src/models/methods/pathFind.d.ts.map +1 -1
- package/dist/npm/src/models/methods/ripplePathFind.d.ts +1 -0
- package/dist/npm/src/models/methods/ripplePathFind.d.ts.map +1 -1
- package/dist/npm/src/models/methods/subscribe.d.ts +4 -0
- package/dist/npm/src/models/methods/subscribe.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.d.ts +1 -1
- package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.js +14 -5
- package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
- package/dist/npm/src/models/transactions/accountSet.d.ts +2 -1
- package/dist/npm/src/models/transactions/accountSet.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/accountSet.js +1 -0
- package/dist/npm/src/models/transactions/accountSet.js.map +1 -1
- package/dist/npm/src/models/transactions/common.d.ts +4 -0
- package/dist/npm/src/models/transactions/common.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/common.js +134 -1
- package/dist/npm/src/models/transactions/common.js.map +1 -1
- package/dist/npm/src/models/transactions/escrowCreate.d.ts +2 -1
- package/dist/npm/src/models/transactions/escrowCreate.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/escrowCreate.js +1 -6
- package/dist/npm/src/models/transactions/escrowCreate.js.map +1 -1
- package/dist/npm/src/models/transactions/escrowFinish.d.ts +5 -0
- package/dist/npm/src/models/transactions/escrowFinish.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/escrowFinish.js.map +1 -1
- package/dist/npm/src/models/transactions/index.d.ts +1 -1
- package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/index.js +2 -1
- package/dist/npm/src/models/transactions/index.js.map +1 -1
- package/dist/npm/src/models/transactions/metadata.d.ts +2 -1
- package/dist/npm/src/models/transactions/metadata.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/metadata.js.map +1 -1
- package/dist/npm/src/models/transactions/offerCreate.d.ts +4 -1
- package/dist/npm/src/models/transactions/offerCreate.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/offerCreate.js +10 -0
- package/dist/npm/src/models/transactions/offerCreate.js.map +1 -1
- package/dist/npm/src/models/transactions/payment.d.ts +1 -0
- package/dist/npm/src/models/transactions/payment.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/payment.js +4 -3
- package/dist/npm/src/models/transactions/payment.js.map +1 -1
- package/dist/npm/src/models/transactions/vaultCreate.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/vaultCreate.js +13 -4
- package/dist/npm/src/models/transactions/vaultCreate.js.map +1 -1
- package/dist/npm/src/models/transactions/vaultDeposit.d.ts +2 -2
- package/dist/npm/src/models/transactions/vaultDeposit.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/vaultDeposit.js.map +1 -1
- package/dist/npm/src/models/transactions/vaultWithdraw.d.ts +2 -2
- package/dist/npm/src/models/transactions/vaultWithdraw.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/vaultWithdraw.js.map +1 -1
- package/package.json +4 -4
- package/src/models/common/index.ts +25 -0
- package/src/models/ledger/AccountRoot.ts +10 -0
- package/src/models/ledger/DirectoryNode.ts +3 -0
- package/src/models/ledger/Escrow.ts +13 -1
- package/src/models/ledger/MPToken.ts +1 -0
- package/src/models/ledger/MPTokenIssuance.ts +1 -0
- package/src/models/ledger/Offer.ts +21 -0
- package/src/models/methods/bookOffers.ts +7 -0
- package/src/models/methods/pathFind.ts +10 -0
- package/src/models/methods/ripplePathFind.ts +5 -0
- package/src/models/methods/subscribe.ts +21 -0
- package/src/models/transactions/MPTokenIssuanceCreate.ts +33 -10
- package/src/models/transactions/accountSet.ts +2 -0
- package/src/models/transactions/common.ts +236 -1
- package/src/models/transactions/escrowCreate.ts +8 -12
- package/src/models/transactions/escrowFinish.ts +7 -0
- package/src/models/transactions/index.ts +1 -1
- package/src/models/transactions/metadata.ts +3 -0
- package/src/models/transactions/offerCreate.ts +25 -0
- package/src/models/transactions/payment.ts +18 -6
- package/src/models/transactions/vaultCreate.ts +30 -6
- package/src/models/transactions/vaultDeposit.ts +3 -2
- package/src/models/transactions/vaultWithdraw.ts +3 -2
package/build/xrpl-latest.js
CHANGED
@@ -18983,10 +18983,14 @@ const enums_1 = __webpack_require__(/*! ../enums */ "../../node_modules/ripple-b
|
|
18983
18983
|
const HEX_REGEX = /^[a-fA-F0-9]{1,16}$/;
|
18984
18984
|
const BASE10_REGEX = /^[0-9]{1,20}$/;
|
18985
18985
|
const mask = BigInt(0x00000000ffffffff);
|
18986
|
-
|
18987
|
-
|
18988
|
-
|
18989
|
-
|
18986
|
+
const BASE10_AMOUNT_FIELDS = new Set([
|
18987
|
+
'MaximumAmount',
|
18988
|
+
'OutstandingAmount',
|
18989
|
+
'MPTAmount',
|
18990
|
+
'LockedAmount',
|
18991
|
+
]);
|
18992
|
+
function isBase10(fieldName) {
|
18993
|
+
return BASE10_AMOUNT_FIELDS.has(fieldName);
|
18990
18994
|
}
|
18991
18995
|
/**
|
18992
18996
|
* Derived UInt class for serializing/deserializing 64 bit UInt
|
@@ -19020,7 +19024,7 @@ class UInt64 extends uint_1.UInt {
|
|
19020
19024
|
return new UInt64((0, utils_1.concat)(intBuf));
|
19021
19025
|
}
|
19022
19026
|
if (typeof val === 'string') {
|
19023
|
-
if (
|
19027
|
+
if (isBase10(fieldName)) {
|
19024
19028
|
if (!BASE10_REGEX.test(val)) {
|
19025
19029
|
throw new Error(`${fieldName} ${val} is not a valid base 10 string`);
|
19026
19030
|
}
|
@@ -19048,7 +19052,7 @@ class UInt64 extends uint_1.UInt {
|
|
19048
19052
|
*/
|
19049
19053
|
toJSON(_definitions = enums_1.DEFAULT_DEFINITIONS, fieldName = '') {
|
19050
19054
|
const hexString = (0, utils_1.bytesToHex)(this.bytes);
|
19051
|
-
if (
|
19055
|
+
if (isBase10(fieldName)) {
|
19052
19056
|
return BigInt('0x' + hexString).toString(10);
|
19053
19057
|
}
|
19054
19058
|
return hexString;
|
@@ -21924,6 +21928,7 @@ var AccountRootFlags;
|
|
21924
21928
|
AccountRootFlags[AccountRootFlags["lsfDisallowIncomingPayChan"] = 268435456] = "lsfDisallowIncomingPayChan";
|
21925
21929
|
AccountRootFlags[AccountRootFlags["lsfDisallowIncomingTrustline"] = 536870912] = "lsfDisallowIncomingTrustline";
|
21926
21930
|
AccountRootFlags[AccountRootFlags["lsfAllowTrustLineClawback"] = 2147483648] = "lsfAllowTrustLineClawback";
|
21931
|
+
AccountRootFlags[AccountRootFlags["lsfAllowTrustLineLocking"] = 1073741824] = "lsfAllowTrustLineLocking";
|
21927
21932
|
})(AccountRootFlags || (exports.AccountRootFlags = AccountRootFlags = {}));
|
21928
21933
|
|
21929
21934
|
|
@@ -21988,6 +21993,7 @@ var OfferFlags;
|
|
21988
21993
|
(function (OfferFlags) {
|
21989
21994
|
OfferFlags[OfferFlags["lsfPassive"] = 65536] = "lsfPassive";
|
21990
21995
|
OfferFlags[OfferFlags["lsfSell"] = 131072] = "lsfSell";
|
21996
|
+
OfferFlags[OfferFlags["lsfHybrid"] = 262144] = "lsfHybrid";
|
21991
21997
|
})(OfferFlags || (exports.OfferFlags = OfferFlags = {}));
|
21992
21998
|
|
21993
21999
|
|
@@ -22625,11 +22631,10 @@ function validateMPTokenIssuanceCreate(tx) {
|
|
22625
22631
|
(0, common_1.validateOptionalField)(tx, 'MPTokenMetadata', common_1.isString);
|
22626
22632
|
(0, common_1.validateOptionalField)(tx, 'TransferFee', common_1.isNumber);
|
22627
22633
|
(0, common_1.validateOptionalField)(tx, 'AssetScale', common_1.isNumber);
|
22628
|
-
if (typeof tx.MPTokenMetadata === 'string' &&
|
22629
|
-
|
22630
|
-
|
22631
|
-
|
22632
|
-
throw new errors_1.ValidationError('MPTokenIssuanceCreate: MPTokenMetadata must be in hex format');
|
22634
|
+
if (typeof tx.MPTokenMetadata === 'string' &&
|
22635
|
+
(!(0, utils_1.isHex)(tx.MPTokenMetadata) ||
|
22636
|
+
tx.MPTokenMetadata.length / 2 > common_1.MAX_MPT_META_BYTE_LENGTH)) {
|
22637
|
+
throw new errors_1.ValidationError(`MPTokenIssuanceCreate: MPTokenMetadata (hex format) must be non-empty and no more than ${common_1.MAX_MPT_META_BYTE_LENGTH} bytes.`);
|
22633
22638
|
}
|
22634
22639
|
if (typeof tx.MaximumAmount === 'string') {
|
22635
22640
|
if (!utils_1.INTEGER_SANITY_CHECK.exec(tx.MaximumAmount)) {
|
@@ -22652,6 +22657,16 @@ function validateMPTokenIssuanceCreate(tx) {
|
|
22652
22657
|
throw new errors_1.ValidationError('MPTokenIssuanceCreate: TransferFee cannot be provided without enabling tfMPTCanTransfer flag');
|
22653
22658
|
}
|
22654
22659
|
}
|
22660
|
+
if (tx.MPTokenMetadata != null) {
|
22661
|
+
const validationMessages = (0, common_1.validateMPTokenMetadata)(tx.MPTokenMetadata);
|
22662
|
+
if (validationMessages.length > 0) {
|
22663
|
+
const message = [
|
22664
|
+
common_1.MPT_META_WARNING_HEADER,
|
22665
|
+
...validationMessages.map((msg) => `- ${msg}`),
|
22666
|
+
].join('\n');
|
22667
|
+
console.warn(message);
|
22668
|
+
}
|
22669
|
+
}
|
22655
22670
|
}
|
22656
22671
|
exports.validateMPTokenIssuanceCreate = validateMPTokenIssuanceCreate;
|
22657
22672
|
|
@@ -23197,6 +23212,7 @@ var AccountSetAsfFlags;
|
|
23197
23212
|
AccountSetAsfFlags[AccountSetAsfFlags["asfDisallowIncomingPayChan"] = 14] = "asfDisallowIncomingPayChan";
|
23198
23213
|
AccountSetAsfFlags[AccountSetAsfFlags["asfDisallowIncomingTrustline"] = 15] = "asfDisallowIncomingTrustline";
|
23199
23214
|
AccountSetAsfFlags[AccountSetAsfFlags["asfAllowTrustLineClawback"] = 16] = "asfAllowTrustLineClawback";
|
23215
|
+
AccountSetAsfFlags[AccountSetAsfFlags["asfAllowTrustLineLocking"] = 17] = "asfAllowTrustLineLocking";
|
23200
23216
|
})(AccountSetAsfFlags || (exports.AccountSetAsfFlags = AccountSetAsfFlags = {}));
|
23201
23217
|
var AccountSetTfFlags;
|
23202
23218
|
(function (AccountSetTfFlags) {
|
@@ -23469,7 +23485,7 @@ exports.validateClawback = validateClawback;
|
|
23469
23485
|
"use strict";
|
23470
23486
|
|
23471
23487
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
23472
|
-
exports.containsDuplicates = exports.validateCredentialsList = exports.validateCredentialType = exports.parseAmountValue = exports.validateBaseTransaction = exports.GlobalFlags = exports.validateOptionalField = exports.validateRequiredField = exports.isArray = exports.isXChainBridge = exports.isAmount = exports.isAccount = exports.isClawbackAmount = exports.isMPTAmount = exports.isAuthorizeCredential = exports.isIssuedCurrencyAmount = exports.isIssuedCurrency = exports.isCurrency = exports.isXRPLNumber = exports.isNumber = exports.isString = exports.isRecord = exports.VAULT_DATA_MAX_BYTE_LENGTH = exports.MAX_AUTHORIZED_CREDENTIALS = void 0;
|
23488
|
+
exports.validateMPTokenMetadata = exports.isDomainID = exports.containsDuplicates = exports.validateCredentialsList = exports.validateCredentialType = exports.parseAmountValue = exports.validateBaseTransaction = exports.GlobalFlags = exports.validateOptionalField = exports.validateRequiredField = exports.isArray = exports.isXChainBridge = exports.isAmount = exports.isAccount = exports.isClawbackAmount = exports.isMPTAmount = exports.isAuthorizeCredential = exports.isIssuedCurrencyAmount = exports.isIssuedCurrency = exports.isCurrency = exports.isXRPLNumber = exports.isNumber = exports.isString = exports.isRecord = exports.MPT_META_WARNING_HEADER = exports.VAULT_DATA_MAX_BYTE_LENGTH = exports.MAX_MPT_META_BYTE_LENGTH = exports.MAX_AUTHORIZED_CREDENTIALS = void 0;
|
23473
23489
|
const utils_1 = __webpack_require__(/*! @xrplf/isomorphic/utils */ "../../node_modules/@xrplf/isomorphic/dist/utils/browser.js");
|
23474
23490
|
const ripple_address_codec_1 = __webpack_require__(/*! ripple-address-codec */ "../../node_modules/ripple-address-codec/dist/index.js");
|
23475
23491
|
const ripple_binary_codec_1 = __webpack_require__(/*! ripple-binary-codec */ "../../node_modules/ripple-binary-codec/dist/index.js");
|
@@ -23479,7 +23495,38 @@ const MEMO_SIZE = 3;
|
|
23479
23495
|
exports.MAX_AUTHORIZED_CREDENTIALS = 8;
|
23480
23496
|
const MAX_CREDENTIAL_BYTE_LENGTH = 64;
|
23481
23497
|
const MAX_CREDENTIAL_TYPE_LENGTH = MAX_CREDENTIAL_BYTE_LENGTH * 2;
|
23498
|
+
exports.MAX_MPT_META_BYTE_LENGTH = 1024;
|
23482
23499
|
exports.VAULT_DATA_MAX_BYTE_LENGTH = 256;
|
23500
|
+
const TICKER_REGEX = /^[A-Z0-9]{1,6}$/u;
|
23501
|
+
const MAX_MPT_META_TOP_LEVEL_FIELD_COUNT = 9;
|
23502
|
+
const MPT_META_URL_FIELD_COUNT = 3;
|
23503
|
+
const MPT_META_REQUIRED_FIELDS = [
|
23504
|
+
'ticker',
|
23505
|
+
'name',
|
23506
|
+
'icon',
|
23507
|
+
'asset_class',
|
23508
|
+
'issuer_name',
|
23509
|
+
];
|
23510
|
+
const MPT_META_ASSET_CLASSES = [
|
23511
|
+
'rwa',
|
23512
|
+
'memes',
|
23513
|
+
'wrapped',
|
23514
|
+
'gaming',
|
23515
|
+
'defi',
|
23516
|
+
'other',
|
23517
|
+
];
|
23518
|
+
const MPT_META_ASSET_SUB_CLASSES = [
|
23519
|
+
'stablecoin',
|
23520
|
+
'commodity',
|
23521
|
+
'real_estate',
|
23522
|
+
'private_credit',
|
23523
|
+
'equity',
|
23524
|
+
'treasury',
|
23525
|
+
'other',
|
23526
|
+
];
|
23527
|
+
exports.MPT_META_WARNING_HEADER = 'MPTokenMetadata is not properly formatted as JSON as per the XLS-89d standard. ' +
|
23528
|
+
"While adherence to this standard is not mandatory, such non-compliant MPToken's might not be discoverable " +
|
23529
|
+
'by Explorers and Indexers in the XRPL ecosystem.';
|
23483
23530
|
function isMemo(obj) {
|
23484
23531
|
if (!isRecord(obj)) {
|
23485
23532
|
return false;
|
@@ -23745,6 +23792,108 @@ function containsDuplicates(objectList) {
|
|
23745
23792
|
return false;
|
23746
23793
|
}
|
23747
23794
|
exports.containsDuplicates = containsDuplicates;
|
23795
|
+
const _DOMAIN_ID_LENGTH = 64;
|
23796
|
+
function isDomainID(domainID) {
|
23797
|
+
return (isString(domainID) &&
|
23798
|
+
domainID.length === _DOMAIN_ID_LENGTH &&
|
23799
|
+
(0, utils_2.isHex)(domainID));
|
23800
|
+
}
|
23801
|
+
exports.isDomainID = isDomainID;
|
23802
|
+
function validateMPTokenMetadata(input) {
|
23803
|
+
const validationMessages = [];
|
23804
|
+
if (!(0, utils_2.isHex)(input)) {
|
23805
|
+
validationMessages.push(`MPTokenMetadata must be in hex format.`);
|
23806
|
+
return validationMessages;
|
23807
|
+
}
|
23808
|
+
if (input.length / 2 > exports.MAX_MPT_META_BYTE_LENGTH) {
|
23809
|
+
validationMessages.push(`MPTokenMetadata must be max ${exports.MAX_MPT_META_BYTE_LENGTH} bytes.`);
|
23810
|
+
return validationMessages;
|
23811
|
+
}
|
23812
|
+
let jsonMetaData;
|
23813
|
+
try {
|
23814
|
+
jsonMetaData = JSON.parse((0, utils_1.hexToString)(input));
|
23815
|
+
}
|
23816
|
+
catch (err) {
|
23817
|
+
validationMessages.push(`MPTokenMetadata is not properly formatted as JSON - ${String(err)}`);
|
23818
|
+
return validationMessages;
|
23819
|
+
}
|
23820
|
+
if (jsonMetaData == null ||
|
23821
|
+
typeof jsonMetaData !== 'object' ||
|
23822
|
+
Array.isArray(jsonMetaData)) {
|
23823
|
+
validationMessages.push('MPTokenMetadata is not properly formatted as per XLS-89d.');
|
23824
|
+
return validationMessages;
|
23825
|
+
}
|
23826
|
+
const obj = jsonMetaData;
|
23827
|
+
const fieldCount = Object.keys(obj).length;
|
23828
|
+
if (fieldCount > MAX_MPT_META_TOP_LEVEL_FIELD_COUNT) {
|
23829
|
+
validationMessages.push(`MPTokenMetadata must not contain more than ${MAX_MPT_META_TOP_LEVEL_FIELD_COUNT} top-level fields (found ${fieldCount}).`);
|
23830
|
+
return validationMessages;
|
23831
|
+
}
|
23832
|
+
const incorrectRequiredFields = MPT_META_REQUIRED_FIELDS.filter((field) => !isString(obj[field]));
|
23833
|
+
if (incorrectRequiredFields.length > 0) {
|
23834
|
+
incorrectRequiredFields.forEach((field) => validationMessages.push(`${field} is required and must be string.`));
|
23835
|
+
return validationMessages;
|
23836
|
+
}
|
23837
|
+
if (obj.desc != null && !isString(obj.desc)) {
|
23838
|
+
validationMessages.push(`desc must be a string.`);
|
23839
|
+
return validationMessages;
|
23840
|
+
}
|
23841
|
+
if (obj.asset_subclass != null && !isString(obj.asset_subclass)) {
|
23842
|
+
validationMessages.push(`asset_subclass must be a string.`);
|
23843
|
+
return validationMessages;
|
23844
|
+
}
|
23845
|
+
if (obj.additional_info != null &&
|
23846
|
+
!isString(obj.additional_info) &&
|
23847
|
+
!isRecord(obj.additional_info)) {
|
23848
|
+
validationMessages.push(`additional_info must be a string or JSON object.`);
|
23849
|
+
return validationMessages;
|
23850
|
+
}
|
23851
|
+
if (obj.urls != null) {
|
23852
|
+
if (!Array.isArray(obj.urls)) {
|
23853
|
+
validationMessages.push('urls must be an array as per XLS-89d.');
|
23854
|
+
return validationMessages;
|
23855
|
+
}
|
23856
|
+
if (!obj.urls.every(isValidMPTokenMetadataUrlStructure)) {
|
23857
|
+
validationMessages.push('One or more urls are not structured per XLS-89d.');
|
23858
|
+
return validationMessages;
|
23859
|
+
}
|
23860
|
+
}
|
23861
|
+
const mptMPTokenMetadata = obj;
|
23862
|
+
if (!TICKER_REGEX.test(mptMPTokenMetadata.ticker)) {
|
23863
|
+
validationMessages.push(`ticker should have uppercase letters (A-Z) and digits (0-9) only. Max 6 characters recommended.`);
|
23864
|
+
}
|
23865
|
+
if (!mptMPTokenMetadata.icon.startsWith('https://')) {
|
23866
|
+
validationMessages.push(`icon should be a valid https url.`);
|
23867
|
+
}
|
23868
|
+
if (!MPT_META_ASSET_CLASSES.includes(mptMPTokenMetadata.asset_class.toLowerCase())) {
|
23869
|
+
validationMessages.push(`asset_class should be one of ${MPT_META_ASSET_CLASSES.join(', ')}.`);
|
23870
|
+
}
|
23871
|
+
if (mptMPTokenMetadata.asset_subclass != null &&
|
23872
|
+
!MPT_META_ASSET_SUB_CLASSES.includes(mptMPTokenMetadata.asset_subclass.toLowerCase())) {
|
23873
|
+
validationMessages.push(`asset_subclass should be one of ${MPT_META_ASSET_SUB_CLASSES.join(', ')}.`);
|
23874
|
+
}
|
23875
|
+
if (mptMPTokenMetadata.asset_class.toLowerCase() === 'rwa' &&
|
23876
|
+
mptMPTokenMetadata.asset_subclass == null) {
|
23877
|
+
validationMessages.push(`asset_subclass is required when asset_class is rwa.`);
|
23878
|
+
}
|
23879
|
+
if (mptMPTokenMetadata.urls != null &&
|
23880
|
+
!mptMPTokenMetadata.urls.every((ele) => ele.url.startsWith('https://'))) {
|
23881
|
+
validationMessages.push(`url should be a valid https url.`);
|
23882
|
+
}
|
23883
|
+
return validationMessages;
|
23884
|
+
}
|
23885
|
+
exports.validateMPTokenMetadata = validateMPTokenMetadata;
|
23886
|
+
function isValidMPTokenMetadataUrlStructure(input) {
|
23887
|
+
if (input == null) {
|
23888
|
+
return false;
|
23889
|
+
}
|
23890
|
+
const obj = input;
|
23891
|
+
return (typeof obj === 'object' &&
|
23892
|
+
isString(obj.url) &&
|
23893
|
+
isString(obj.type) &&
|
23894
|
+
isString(obj.title) &&
|
23895
|
+
Object.keys(obj).length === MPT_META_URL_FIELD_COUNT);
|
23896
|
+
}
|
23748
23897
|
|
23749
23898
|
|
23750
23899
|
/***/ }),
|
@@ -23930,12 +24079,7 @@ const errors_1 = __webpack_require__(/*! ../../errors */ "./dist/npm/errors.js")
|
|
23930
24079
|
const common_1 = __webpack_require__(/*! ./common */ "./dist/npm/models/transactions/common.js");
|
23931
24080
|
function validateEscrowCreate(tx) {
|
23932
24081
|
(0, common_1.validateBaseTransaction)(tx);
|
23933
|
-
|
23934
|
-
throw new errors_1.ValidationError('EscrowCreate: missing field Amount');
|
23935
|
-
}
|
23936
|
-
if (typeof tx.Amount !== 'string') {
|
23937
|
-
throw new errors_1.ValidationError('EscrowCreate: Amount must be a string');
|
23938
|
-
}
|
24082
|
+
(0, common_1.validateRequiredField)(tx, 'Amount', common_1.isAmount);
|
23939
24083
|
(0, common_1.validateRequiredField)(tx, 'Destination', common_1.isAccount);
|
23940
24084
|
(0, common_1.validateOptionalField)(tx, 'DestinationTag', common_1.isNumber);
|
23941
24085
|
if (tx.CancelAfter === undefined && tx.FinishAfter === undefined) {
|
@@ -24020,9 +24164,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
24020
24164
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
24021
24165
|
};
|
24022
24166
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
24023
|
-
exports.XChainModifyBridgeFlags = exports.VaultWithdrawalPolicy = exports.VaultCreateFlags = exports.TrustSetFlags = exports.PaymentChannelClaimFlags = exports.PaymentFlags = exports.OfferCreateFlags = exports.validateNFTokenModify = exports.NFTokenMintFlags = exports.NFTokenCreateOfferFlags = exports.MPTokenIssuanceSetFlags = exports.MPTokenIssuanceCreateFlags = exports.MPTokenAuthorizeFlags = exports.EnableAmendmentFlags = exports.AMMWithdrawFlags = exports.AMMDepositFlags = exports.AMMClawbackFlags = exports.AccountSetTfFlags = exports.AccountSetAsfFlags = exports.validate = exports.isMPTAmount = void 0;
|
24167
|
+
exports.XChainModifyBridgeFlags = exports.VaultWithdrawalPolicy = exports.VaultCreateFlags = exports.TrustSetFlags = exports.PaymentChannelClaimFlags = exports.PaymentFlags = exports.OfferCreateFlags = exports.validateNFTokenModify = exports.NFTokenMintFlags = exports.NFTokenCreateOfferFlags = exports.MPTokenIssuanceSetFlags = exports.MPTokenIssuanceCreateFlags = exports.MPTokenAuthorizeFlags = exports.EnableAmendmentFlags = exports.AMMWithdrawFlags = exports.AMMDepositFlags = exports.AMMClawbackFlags = exports.AccountSetTfFlags = exports.AccountSetAsfFlags = exports.validate = exports.validateMPTokenMetadata = exports.isMPTAmount = void 0;
|
24024
24168
|
var common_1 = __webpack_require__(/*! ./common */ "./dist/npm/models/transactions/common.js");
|
24025
24169
|
Object.defineProperty(exports, "isMPTAmount", ({ enumerable: true, get: function () { return common_1.isMPTAmount; } }));
|
24170
|
+
Object.defineProperty(exports, "validateMPTokenMetadata", ({ enumerable: true, get: function () { return common_1.validateMPTokenMetadata; } }));
|
24026
24171
|
var transaction_1 = __webpack_require__(/*! ./transaction */ "./dist/npm/models/transactions/transaction.js");
|
24027
24172
|
Object.defineProperty(exports, "validate", ({ enumerable: true, get: function () { return transaction_1.validate; } }));
|
24028
24173
|
__exportStar(__webpack_require__(/*! ./metadata */ "./dist/npm/models/transactions/metadata.js"), exports);
|
@@ -24129,6 +24274,7 @@ exports.validateOfferCancel = validateOfferCancel;
|
|
24129
24274
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
24130
24275
|
exports.validateOfferCreate = exports.OfferCreateFlags = void 0;
|
24131
24276
|
const errors_1 = __webpack_require__(/*! ../../errors */ "./dist/npm/errors.js");
|
24277
|
+
const utils_1 = __webpack_require__(/*! ../utils */ "./dist/npm/models/utils/index.js");
|
24132
24278
|
const common_1 = __webpack_require__(/*! ./common */ "./dist/npm/models/transactions/common.js");
|
24133
24279
|
var OfferCreateFlags;
|
24134
24280
|
(function (OfferCreateFlags) {
|
@@ -24136,6 +24282,7 @@ var OfferCreateFlags;
|
|
24136
24282
|
OfferCreateFlags[OfferCreateFlags["tfImmediateOrCancel"] = 131072] = "tfImmediateOrCancel";
|
24137
24283
|
OfferCreateFlags[OfferCreateFlags["tfFillOrKill"] = 262144] = "tfFillOrKill";
|
24138
24284
|
OfferCreateFlags[OfferCreateFlags["tfSell"] = 524288] = "tfSell";
|
24285
|
+
OfferCreateFlags[OfferCreateFlags["tfHybrid"] = 1048576] = "tfHybrid";
|
24139
24286
|
})(OfferCreateFlags || (exports.OfferCreateFlags = OfferCreateFlags = {}));
|
24140
24287
|
function validateOfferCreate(tx) {
|
24141
24288
|
(0, common_1.validateBaseTransaction)(tx);
|
@@ -24157,6 +24304,14 @@ function validateOfferCreate(tx) {
|
|
24157
24304
|
if (tx.OfferSequence !== undefined && typeof tx.OfferSequence !== 'number') {
|
24158
24305
|
throw new errors_1.ValidationError('OfferCreate: invalid OfferSequence');
|
24159
24306
|
}
|
24307
|
+
(0, common_1.validateOptionalField)(tx, 'DomainID', common_1.isDomainID, {
|
24308
|
+
txType: 'OfferCreate',
|
24309
|
+
paramName: 'DomainID',
|
24310
|
+
});
|
24311
|
+
if (tx.DomainID == null &&
|
24312
|
+
(0, utils_1.hasFlag)(tx, OfferCreateFlags.tfHybrid, 'tfHybrid')) {
|
24313
|
+
throw new errors_1.ValidationError('OfferCreate: tfHybrid flag cannot be set if DomainID is not present');
|
24314
|
+
}
|
24160
24315
|
}
|
24161
24316
|
exports.validateOfferCreate = validateOfferCreate;
|
24162
24317
|
|
@@ -24300,6 +24455,10 @@ function validatePayment(tx) {
|
|
24300
24455
|
if (tx.InvoiceID !== undefined && typeof tx.InvoiceID !== 'string') {
|
24301
24456
|
throw new errors_1.ValidationError('PaymentTransaction: InvoiceID must be a string');
|
24302
24457
|
}
|
24458
|
+
(0, common_1.validateOptionalField)(tx, 'DomainID', common_1.isDomainID, {
|
24459
|
+
txType: 'PaymentTransaction',
|
24460
|
+
paramName: 'DomainID',
|
24461
|
+
});
|
24303
24462
|
if (tx.Paths !== undefined && !isPaths(tx.Paths)) {
|
24304
24463
|
throw new errors_1.ValidationError('PaymentTransaction: invalid Paths');
|
24305
24464
|
}
|
@@ -24307,9 +24466,6 @@ function validatePayment(tx) {
|
|
24307
24466
|
throw new errors_1.ValidationError('PaymentTransaction: invalid SendMax');
|
24308
24467
|
}
|
24309
24468
|
checkPartialPayment(tx);
|
24310
|
-
if (tx.DeliverMax != null) {
|
24311
|
-
throw new errors_1.ValidationError('PaymentTransaction: Cannot have DeliverMax in a submitted transaction');
|
24312
|
-
}
|
24313
24469
|
}
|
24314
24470
|
exports.validatePayment = validatePayment;
|
24315
24471
|
function checkPartialPayment(tx) {
|
@@ -25013,7 +25169,6 @@ exports.validateVaultCreate = exports.VaultCreateFlags = exports.VaultWithdrawal
|
|
25013
25169
|
const errors_1 = __webpack_require__(/*! ../../errors */ "./dist/npm/errors.js");
|
25014
25170
|
const utils_1 = __webpack_require__(/*! ../utils */ "./dist/npm/models/utils/index.js");
|
25015
25171
|
const common_1 = __webpack_require__(/*! ./common */ "./dist/npm/models/transactions/common.js");
|
25016
|
-
const META_MAX_BYTE_LENGTH = 1024;
|
25017
25172
|
var VaultWithdrawalPolicy;
|
25018
25173
|
(function (VaultWithdrawalPolicy) {
|
25019
25174
|
VaultWithdrawalPolicy[VaultWithdrawalPolicy["vaultStrategyFirstComeFirstServe"] = 1] = "vaultStrategyFirstComeFirstServe";
|
@@ -25044,17 +25199,27 @@ function validateVaultCreate(tx) {
|
|
25044
25199
|
if (tx.MPTokenMetadata !== undefined) {
|
25045
25200
|
const metaHex = tx.MPTokenMetadata;
|
25046
25201
|
if (!(0, utils_1.isHex)(metaHex)) {
|
25047
|
-
throw new errors_1.ValidationError('VaultCreate: MPTokenMetadata must be a valid hex string');
|
25202
|
+
throw new errors_1.ValidationError('VaultCreate: MPTokenMetadata must be a valid non-empty hex string');
|
25048
25203
|
}
|
25049
25204
|
const metaByteLength = metaHex.length / 2;
|
25050
|
-
if (metaByteLength >
|
25051
|
-
throw new errors_1.ValidationError(`VaultCreate: MPTokenMetadata exceeds ${
|
25205
|
+
if (metaByteLength > common_1.MAX_MPT_META_BYTE_LENGTH) {
|
25206
|
+
throw new errors_1.ValidationError(`VaultCreate: MPTokenMetadata exceeds ${common_1.MAX_MPT_META_BYTE_LENGTH} bytes (actual: ${metaByteLength})`);
|
25052
25207
|
}
|
25053
25208
|
}
|
25054
25209
|
if (tx.DomainID !== undefined &&
|
25055
25210
|
!(0, utils_1.hasFlag)(tx, VaultCreateFlags.tfVaultPrivate, 'tfVaultPrivate')) {
|
25056
25211
|
throw new errors_1.ValidationError('VaultCreate: Cannot set DomainID unless tfVaultPrivate flag is set.');
|
25057
25212
|
}
|
25213
|
+
if (tx.MPTokenMetadata != null) {
|
25214
|
+
const validationMessages = (0, common_1.validateMPTokenMetadata)(tx.MPTokenMetadata);
|
25215
|
+
if (validationMessages.length > 0) {
|
25216
|
+
const message = [
|
25217
|
+
common_1.MPT_META_WARNING_HEADER,
|
25218
|
+
...validationMessages.map((msg) => `- ${msg}`),
|
25219
|
+
].join('\n');
|
25220
|
+
console.warn(message);
|
25221
|
+
}
|
25222
|
+
}
|
25058
25223
|
}
|
25059
25224
|
exports.validateVaultCreate = validateVaultCreate;
|
25060
25225
|
|