evernode-js-client 0.4.42 → 0.4.43

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.
Files changed (2) hide show
  1. package/index.js +50 -19
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -12090,6 +12090,7 @@ const { EncryptionHelper } = __nccwpck_require__(1247);
12090
12090
  const { Buffer } = __nccwpck_require__(4300);
12091
12091
  const codec = __nccwpck_require__(597);
12092
12092
  const { XflHelpers } = __nccwpck_require__(9281);
12093
+ const { EvernodeHelpers } = __nccwpck_require__(7498);
12093
12094
 
12094
12095
  const OFFER_WAIT_TIMEOUT = 60;
12095
12096
 
@@ -12131,6 +12132,10 @@ class HostClient extends BaseEvernodeClient {
12131
12132
  return null;
12132
12133
  }
12133
12134
 
12135
+ async getLeaseOffers() {
12136
+ return await EvernodeHelpers.getLeaseOffers(this.xrplAcc);
12137
+ }
12138
+
12134
12139
  async cancelOffer(offerIndex) {
12135
12140
  return this.xrplAcc.cancelOffer(offerIndex);
12136
12141
  }
@@ -12477,6 +12482,7 @@ const { XrplAccount } = __nccwpck_require__(6962);
12477
12482
  const { UtilHelpers } = __nccwpck_require__(4954);
12478
12483
  const { Buffer } = __nccwpck_require__(4300);
12479
12484
  const codec = __nccwpck_require__(597);
12485
+ const { EvernodeHelpers } = __nccwpck_require__(7498);
12480
12486
 
12481
12487
  const ACQUIRE_WATCH_PREFIX = 'acquire_';
12482
12488
  const EXTEND_WATCH_PREFIX = 'extend_';
@@ -12546,25 +12552,30 @@ class TenantClient extends BaseEvernodeClient {
12546
12552
  }
12547
12553
 
12548
12554
  async acquireLeaseSubmit(hostAddress, requirement, options = {}) {
12549
- const host = await this.getLeaseHost(hostAddress);
12550
- const hostNfts = (await host.getNfts()).filter(nft => nft.URI.startsWith(EvernodeConstants.LEASE_NFT_PREFIX_HEX));
12551
- const hostTokenIDs = hostNfts.map(nft => nft.NFTokenID);
12552
- const nftOffers = (await host.getNftOffers())?.filter(offer => (offer.Flags == 1 && hostTokenIDs.includes(offer.NFTokenID))); // Filter only sell offers
12553
-
12554
- // Accept the offer.
12555
- if (nftOffers && nftOffers.length > 0) {
12556
- // Encrypt the requirements with the host's encryption key (Specified in MessageKey field of the host account).
12557
- const encKey = await host.getMessageKey();
12558
- if (!encKey)
12559
- throw { reason: ErrorReasons.INTERNAL_ERR, error: "Host encryption key not set." };
12560
-
12561
- const ecrypted = await EncryptionHelper.encrypt(encKey, requirement, {
12562
- iv: options.iv, // Must be null or 16 bytes.
12563
- ephemPrivateKey: options.ephemPrivateKey // Must be null or 32 bytes.
12564
- });
12565
- return this.xrplAcc.buyNft(nftOffers[0].index, [{ type: MemoTypes.ACQUIRE_LEASE, format: MemoFormats.BASE64, data: ecrypted }], options.transactionOptions);
12566
- } else
12567
- throw { reason: ErrorReasons.NO_OFFER, error: "No offers available." };
12555
+
12556
+ const hostAcc = await this.getLeaseHost(hostAddress);
12557
+ let selectedOfferIndex = options.leaseOfferIndex;
12558
+
12559
+ // Attempt to get first available offer, if offer is not specified in options.
12560
+ if (!selectedOfferIndex) {
12561
+ const nftOffers = EvernodeHelpers.getLeaseOffers(hostAcc);
12562
+ selectedOfferIndex = nftOffers && nftOffers[0] && nftOffers[0].index;
12563
+
12564
+ if (!selectedOfferIndex)
12565
+ throw { reason: ErrorReasons.NO_OFFER, error: "No offers available." };
12566
+ }
12567
+
12568
+ // Encrypt the requirements with the host's encryption key (Specified in MessageKey field of the host account).
12569
+ const encKey = await hostAcc.getMessageKey();
12570
+ if (!encKey)
12571
+ throw { reason: ErrorReasons.INTERNAL_ERR, error: "Host encryption key not set." };
12572
+
12573
+ const ecrypted = await EncryptionHelper.encrypt(encKey, requirement, {
12574
+ iv: options.iv, // Must be null or 16 bytes.
12575
+ ephemPrivateKey: options.ephemPrivateKey // Must be null or 32 bytes.
12576
+ });
12577
+
12578
+ return this.xrplAcc.buyNft(selectedOfferIndex, [{ type: MemoTypes.ACQUIRE_LEASE, format: MemoFormats.BASE64, data: ecrypted }], options.transactionOptions);
12568
12579
  }
12569
12580
 
12570
12581
  watchAcquireResponse(tx, options = {}) {
@@ -13163,6 +13174,26 @@ module.exports = {
13163
13174
 
13164
13175
  /***/ }),
13165
13176
 
13177
+ /***/ 7498:
13178
+ /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
13179
+
13180
+ const { EvernodeConstants } = __nccwpck_require__(5716);
13181
+
13182
+ class EvernodeHelpers {
13183
+ static async getLeaseOffers(xrplAcc) {
13184
+ const hostNfts = (await xrplAcc.getNfts()).filter(nft => nft.URI.startsWith(EvernodeConstants.LEASE_NFT_PREFIX_HEX));
13185
+ const hostTokenIDs = hostNfts.map(nft => nft.NFTokenID);
13186
+ const nftOffers = (await xrplAcc.getNftOffers())?.filter(offer => (offer.Flags == 1 && hostTokenIDs.includes(offer.NFTokenID))); // Filter only sell offers
13187
+ return nftOffers;
13188
+ }
13189
+ }
13190
+
13191
+ module.exports = {
13192
+ EvernodeHelpers
13193
+ }
13194
+
13195
+ /***/ }),
13196
+
13166
13197
  /***/ 2092:
13167
13198
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
13168
13199
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evernode-js-client",
3
- "version": "0.4.42",
3
+ "version": "0.4.43",
4
4
  "dependencies": {
5
5
  "elliptic": "6.5.4",
6
6
  "ripple-address-codec": "4.2.0",