@suilend/sui-fe 0.2.96 → 0.2.98

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/keypair.js CHANGED
@@ -37,47 +37,45 @@ const createKeypair = (account, signPersonalMessage) => __awaiter(void 0, void 0
37
37
  exports.createKeypair = createKeypair;
38
38
  const checkIfKeypairCanBeUsed = (lastSignedTransaction, currentFlowDigests, keypair, suiClient) => __awaiter(void 0, void 0, void 0, function* () {
39
39
  var _a, _b;
40
- const ownedObjectIds = (yield (0, transactions_2.getAllOwnedObjects)(suiClient, keypair.toSuiAddress())).map((obj) => { var _a; return (_a = obj.data) === null || _a === void 0 ? void 0 : _a.objectId; });
41
- console.log("[checkIfKeypairCanBeUsed] ownedObjectIds:", ownedObjectIds);
42
- if (ownedObjectIds.length === 0) {
43
- // Empty wallet
40
+ const [mostRecentFromAddressTransaction, mostRecentToAddressTransaction] = yield Promise.all([
41
+ (0, transactions_2.getMostRecentAddressTransaction)(suiClient, keypair.toSuiAddress(), "from"),
42
+ (0, transactions_2.getMostRecentAddressTransaction)(suiClient, keypair.toSuiAddress(), "to"),
43
+ ]);
44
+ const mostRecentFromOrToAddressTransaction = [
45
+ mostRecentFromAddressTransaction,
46
+ mostRecentToAddressTransaction,
47
+ ].sort((a, b) => { var _a, _b; return +((_a = b === null || b === void 0 ? void 0 : b.timestampMs) !== null && _a !== void 0 ? _a : 0) - +((_b = a === null || a === void 0 ? void 0 : a.timestampMs) !== null && _b !== void 0 ? _b : 0); })[0];
48
+ console.log("[checkIfKeypairCanBeUsed] mostRecentFromAddressTransaction:", mostRecentFromAddressTransaction, "mostRecentToAddressTransaction:", mostRecentToAddressTransaction, "mostRecentFromOrToAddressTransaction:", mostRecentFromOrToAddressTransaction, "lastSignedTransaction:", lastSignedTransaction, "currentFlowDigests:", currentFlowDigests);
49
+ if (mostRecentFromOrToAddressTransaction === undefined) {
50
+ // Wallet with no TO/FROM transactions
44
51
  // CONTINUE
45
52
  return { lastCurrentFlowTransaction: undefined };
46
53
  }
47
54
  else {
48
- const mostRecentFromOrToAddressTransaction = yield (0, transactions_2.getMostRecentFromOrToAddressTransaction)(suiClient, keypair.toSuiAddress());
49
- console.log("[checkIfKeypairCanBeUsed] mostRecentFromOrToAddressTransaction:", mostRecentFromOrToAddressTransaction, "lastSignedTransaction:", lastSignedTransaction, "currentFlowDigests:", currentFlowDigests);
50
- if (mostRecentFromOrToAddressTransaction === undefined) {
51
- // Non-empty wallet with no FROM transactions
55
+ // Wallet with TO/FROM transactions
56
+ if ((lastSignedTransaction !== undefined &&
57
+ ((_b = (_a = mostRecentFromOrToAddressTransaction.transaction) === null || _a === void 0 ? void 0 : _a.txSignatures) !== null && _b !== void 0 ? _b : []).includes(lastSignedTransaction.signature)) ||
58
+ currentFlowDigests.includes(mostRecentFromOrToAddressTransaction.digest)) {
59
+ // Retrying current flow
52
60
  // CONTINUE
53
- return { lastCurrentFlowTransaction: undefined };
61
+ return {
62
+ lastCurrentFlowTransaction: mostRecentFromOrToAddressTransaction,
63
+ };
54
64
  }
55
65
  else {
56
- // Non-empty wallet with FROM transactions
57
- if ((lastSignedTransaction !== undefined &&
58
- ((_b = (_a = mostRecentFromOrToAddressTransaction.transaction) === null || _a === void 0 ? void 0 : _a.txSignatures) !== null && _b !== void 0 ? _b : []).includes(lastSignedTransaction.signature)) ||
59
- currentFlowDigests.includes(mostRecentFromOrToAddressTransaction.digest)) {
60
- // Retrying current flow
61
- // CONTINUE
62
- return {
63
- lastCurrentFlowTransaction: mostRecentFromOrToAddressTransaction,
64
- };
66
+ // Previous flow
67
+ const timestampMs = mostRecentFromOrToAddressTransaction.timestampMs;
68
+ const isRecent = !!timestampMs && +timestampMs > Date.now() - 1000 * 60 * 2; // Less than 2 minutes ago
69
+ console.log("[checkIfKeypairCanBeUsed] isRecent:", isRecent, timestampMs, Date.now() - 1000 * 60 * 2);
70
+ if (isRecent) {
71
+ // Previous flow may be ongoing
72
+ // STOP
73
+ throw new Error("Please wait for previous flow to complete");
65
74
  }
66
75
  else {
67
- // Previous flow
68
- const timestampMs = mostRecentFromOrToAddressTransaction.timestampMs;
69
- const isRecent = !!timestampMs && +timestampMs > Date.now() - 1000 * 60 * 2; // Less than 2 minutes ago
70
- console.log("[checkIfKeypairCanBeUsed] isRecent:", isRecent, timestampMs, Date.now() - 1000 * 60 * 2);
71
- if (isRecent) {
72
- // Previous flow may be ongoing
73
- // STOP
74
- throw new Error("Please wait for previous flow to complete");
75
- }
76
- else {
77
- // Previous flow stopped before completion
78
- // CONTINUE
79
- return { lastCurrentFlowTransaction: undefined };
80
- }
76
+ // Previous flow stopped before completion
77
+ // CONTINUE
78
+ return { lastCurrentFlowTransaction: undefined };
81
79
  }
82
80
  }
83
81
  }
@@ -5,4 +5,4 @@ export declare const getTotalGasFee: (res: SuiTransactionBlockResponse) => BigNu
5
5
  export declare const getBalanceChange: (res: SuiTransactionBlockResponse, address: string, token: Token, multiplier?: -1 | 1) => BigNumber | undefined;
6
6
  export declare const getAllOwnedObjects: (suiClient: SuiClient, address: string, filter?: SuiObjectDataFilter) => Promise<SuiObjectResponse[]>;
7
7
  export declare const getAllCoins: (suiClient: SuiClient, address: string, coinType: string) => Promise<import("@mysten/sui/client").CoinStruct[]>;
8
- export declare const getMostRecentFromOrToAddressTransaction: (suiClient: SuiClient, address: string) => Promise<SuiTransactionBlockResponse | undefined>;
8
+ export declare const getMostRecentAddressTransaction: (suiClient: SuiClient, address: string, direction: "from" | "to") => Promise<SuiTransactionBlockResponse | undefined>;
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getMostRecentFromOrToAddressTransaction = exports.getAllCoins = exports.getAllOwnedObjects = exports.getBalanceChange = exports.getTotalGasFee = void 0;
15
+ exports.getMostRecentAddressTransaction = exports.getAllCoins = exports.getAllOwnedObjects = exports.getBalanceChange = exports.getTotalGasFee = void 0;
16
16
  const utils_1 = require("@mysten/sui/utils");
17
17
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
18
18
  const coinType_1 = require("./coinType");
@@ -75,17 +75,15 @@ const getAllCoins = (suiClient, address, coinType) => __awaiter(void 0, void 0,
75
75
  return allCoins;
76
76
  });
77
77
  exports.getAllCoins = getAllCoins;
78
- const getMostRecentFromOrToAddressTransaction = (suiClient, address) => __awaiter(void 0, void 0, void 0, function* () {
78
+ const getMostRecentAddressTransaction = (suiClient, address, direction) => __awaiter(void 0, void 0, void 0, function* () {
79
79
  const allTransactions = [];
80
80
  let cursor = null;
81
81
  let hasNextPage = true;
82
82
  while (hasNextPage) {
83
83
  const transactions = yield suiClient.queryTransactionBlocks({
84
- filter: {
85
- FromOrToAddress: {
86
- addr: address,
87
- },
88
- },
84
+ filter: direction === "from"
85
+ ? { FromAddress: address }
86
+ : { ToAddress: address },
89
87
  cursor,
90
88
  limit: 1,
91
89
  order: "descending",
@@ -99,4 +97,4 @@ const getMostRecentFromOrToAddressTransaction = (suiClient, address) => __awaite
99
97
  }
100
98
  return allTransactions[0];
101
99
  });
102
- exports.getMostRecentFromOrToAddressTransaction = getMostRecentFromOrToAddressTransaction;
100
+ exports.getMostRecentAddressTransaction = getMostRecentAddressTransaction;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@suilend/sui-fe","version":"0.2.96","private":false,"description":"A collection of TypeScript frontend libraries","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./lib/api":"./lib/api.js","./lib/coin":"./lib/coin.js","./lib/coinMetadata":"./lib/coinMetadata.js","./lib/coinType":"./lib/coinType.js","./lib/constants":"./lib/constants.js","./lib/format":"./lib/format.js","./lib":"./lib/index.js","./lib/indexedDB":"./lib/indexedDB.js","./lib/keypair":"./lib/keypair.js","./lib/msafe":"./lib/msafe.js","./lib/track":"./lib/track.js","./lib/transactions":"./lib/transactions.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix \"./src/**/*.ts\"","prettier":"prettier --write \"./src/**/*\"","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ts-node ./release.ts && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/sui-fe.git"},"bugs":{"url":"https://github.com/suilend/sui-fe/issues"},"dependencies":{"@mysten/wallet-standard":"0.14.7","@pythnetwork/pyth-sui-js":"^2.1.0","bignumber.js":"^9.1.2","lodash":"^4.17.21","mixpanel-browser":"^2.56.0","next":"^15.0.3","p-limit":"3.1.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.8","@types/lodash":"^4.17.13","@types/mixpanel-browser":"^2.50.2","@types/node":"^22.9.0","@typescript-eslint/eslint-plugin":"^8.14.0","@typescript-eslint/parser":"^8.14.0","eslint":"^9.14.0","eslint-config-next":"^15.0.3","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.1","prettier":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.6.3"},"peerDependencies":{"@mysten/sui":"1.28.2","date-fns":"^4.1.0"}}
1
+ {"name":"@suilend/sui-fe","version":"0.2.98","private":false,"description":"A collection of TypeScript frontend libraries","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./lib/api":"./lib/api.js","./lib/coin":"./lib/coin.js","./lib/coinMetadata":"./lib/coinMetadata.js","./lib/coinType":"./lib/coinType.js","./lib/constants":"./lib/constants.js","./lib/format":"./lib/format.js","./lib":"./lib/index.js","./lib/indexedDB":"./lib/indexedDB.js","./lib/keypair":"./lib/keypair.js","./lib/msafe":"./lib/msafe.js","./lib/track":"./lib/track.js","./lib/transactions":"./lib/transactions.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix \"./src/**/*.ts\"","prettier":"prettier --write \"./src/**/*\"","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ts-node ./release.ts && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/sui-fe.git"},"bugs":{"url":"https://github.com/suilend/sui-fe/issues"},"dependencies":{"@mysten/wallet-standard":"0.14.7","@pythnetwork/pyth-sui-js":"^2.1.0","bignumber.js":"^9.1.2","lodash":"^4.17.21","mixpanel-browser":"^2.56.0","next":"^15.0.3","p-limit":"3.1.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.8","@types/lodash":"^4.17.13","@types/mixpanel-browser":"^2.50.2","@types/node":"^22.9.0","@typescript-eslint/eslint-plugin":"^8.14.0","@typescript-eslint/parser":"^8.14.0","eslint":"^9.14.0","eslint-config-next":"^15.0.3","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.1","prettier":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.6.3"},"peerDependencies":{"@mysten/sui":"1.28.2","date-fns":"^4.1.0"}}