@ledgerhq/coin-framework 0.8.2-nightly.1 → 0.9.0-next.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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/coin-framework@0.8.2-nightly.0 build /home/runner/work/ledger-live/ledger-live/libs/coin-framework
2
+ > @ledgerhq/coin-framework@0.8.1 build /home/runner/work/ledger-live/ledger-live/libs/coin-framework
3
3
  > tsc && tsc -m ES6 --outDir lib-es
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,22 +1,21 @@
1
1
  # @ledgerhq/coin-framework
2
2
 
3
- ## 0.8.2-nightly.1
3
+ ## 0.9.0-next.0
4
4
 
5
- ### Patch Changes
6
-
7
- - Updated dependencies [[`a4299c5d62`](https://github.com/LedgerHQ/ledger-live/commit/a4299c5d629cd56e6e6795adaa14978ae2b90f42), [`e63205b850`](https://github.com/LedgerHQ/ledger-live/commit/e63205b85071538ed2431157a12818d7a8f0ffa9)]:
8
- - @ledgerhq/types-live@6.42.1-nightly.1
9
- - @ledgerhq/errors@6.15.1-nightly.0
10
- - @ledgerhq/devices@8.0.9-nightly.0
5
+ ### Minor Changes
11
6
 
12
- ## 0.8.2-nightly.0
7
+ - [#4886](https://github.com/LedgerHQ/ledger-live/pull/4886) [`771c9d3c1d`](https://github.com/LedgerHQ/ledger-live/commit/771c9d3c1d138ddd68da2e4f9738e2c41ecaf81b) Thanks [@chabroA](https://github.com/chabroA)! - Add speedup / cancel tx feature for evm
13
8
 
14
9
  ### Patch Changes
15
10
 
16
- - Updated dependencies [[`08dde174fd`](https://github.com/LedgerHQ/ledger-live/commit/08dde174fdeaadbce85dcd914383839f788f21dd)]:
17
- - @ledgerhq/types-cryptoassets@7.7.1-nightly.0
18
- - @ledgerhq/cryptoassets@11.1.1-nightly.0
19
- - @ledgerhq/types-live@6.42.1-nightly.0
11
+ - Updated dependencies [[`48487abd29`](https://github.com/LedgerHQ/ledger-live/commit/48487abd297e41629c6725bc0ac9d69bfeaa74d3), [`08dde174fd`](https://github.com/LedgerHQ/ledger-live/commit/08dde174fdeaadbce85dcd914383839f788f21dd), [`771c9d3c1d`](https://github.com/LedgerHQ/ledger-live/commit/771c9d3c1d138ddd68da2e4f9738e2c41ecaf81b), [`c5981ae341`](https://github.com/LedgerHQ/ledger-live/commit/c5981ae3411abc4c8594adf2efcb52aacddac143), [`317685e696`](https://github.com/LedgerHQ/ledger-live/commit/317685e69678e6fe1f489f0c071e7613d329d389), [`a4299c5d62`](https://github.com/LedgerHQ/ledger-live/commit/a4299c5d629cd56e6e6795adaa14978ae2b90f42), [`b4e7201b0b`](https://github.com/LedgerHQ/ledger-live/commit/b4e7201b0b70d146de7d936ff2c9e9e443164243), [`e63205b850`](https://github.com/LedgerHQ/ledger-live/commit/e63205b85071538ed2431157a12818d7a8f0ffa9), [`5964e30bed`](https://github.com/LedgerHQ/ledger-live/commit/5964e30bed11d64a3b7401c6ab51ffc1ad4c427c)]:
12
+ - @ledgerhq/types-live@6.43.0-next.0
13
+ - @ledgerhq/types-cryptoassets@7.8.0-next.0
14
+ - @ledgerhq/cryptoassets@11.2.0-next.0
15
+ - @ledgerhq/errors@6.16.0-next.0
16
+ - @ledgerhq/live-env@0.7.0-next.0
17
+ - @ledgerhq/devices@8.1.0-next.0
18
+ - @ledgerhq/logs@6.12.0-next.0
20
19
 
21
20
  ## 0.8.1
22
21
 
@@ -1,7 +1,7 @@
1
1
  import { BigNumber } from "bignumber.js";
2
2
  import type { Account, AccountLike, AccountLikeArray, SubAccount, TokenAccount, ChildAccount } from "@ledgerhq/types-live";
3
3
  import { CryptoCurrency, TokenCurrency, Unit } from "@ledgerhq/types-cryptoassets";
4
- export declare const getMainAccount: <A extends Account>(account: A | SubAccount, parentAccount?: A | null | undefined) => A;
4
+ export declare const getMainAccount: <A extends Account>(account: SubAccount | A, parentAccount?: A | null | undefined) => A;
5
5
  export declare const getFeesCurrency: (account?: AccountLike) => TokenCurrency | CryptoCurrency;
6
6
  export declare const getFeesUnit: (currency: TokenCurrency | CryptoCurrency) => Unit;
7
7
  export declare const getAccountCurrency: (account?: AccountLike) => TokenCurrency | CryptoCurrency;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=formatCurrencyUnit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatCurrencyUnit.test.d.ts","sourceRoot":"","sources":["../../src/currencies/formatCurrencyUnit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const currencies_1 = require("@ledgerhq/cryptoassets/currencies");
4
+ const formatCurrencyUnit_1 = require("./formatCurrencyUnit");
5
+ const bignumber_js_1 = require("bignumber.js");
6
+ const testCases = Object.values(currencies_1.cryptocurrenciesById).map(currency => {
7
+ return {
8
+ name: currency.name,
9
+ unit: currency.units[0],
10
+ };
11
+ });
12
+ const localeTestCases = [
13
+ "en-US",
14
+ "fr-FR",
15
+ "es-ES",
16
+ "de-DE",
17
+ "ja-JP",
18
+ "ko-KR",
19
+ "pt-BR",
20
+ "ru-RU",
21
+ "tr-TR",
22
+ "zh-CN",
23
+ ];
24
+ describe("formatCurrencyUnit", () => {
25
+ describe("with default options", () => {
26
+ test.each(testCases)("should correctly format $name unit ($unit.name)", ({ unit }) => {
27
+ const value = new bignumber_js_1.BigNumber("12345678900000000");
28
+ expect((0, formatCurrencyUnit_1.formatCurrencyUnit)(unit, value)).toMatchSnapshot();
29
+ });
30
+ });
31
+ describe("with custom options", () => {
32
+ describe.each(localeTestCases)("with locale %s", locale => {
33
+ test.each(testCases)("should correctly format $name unit ($unit.name)", ({ unit }) => {
34
+ const value = new bignumber_js_1.BigNumber("12345678900000000");
35
+ const options = {
36
+ joinFragmentsSeparator: "-",
37
+ showCode: true,
38
+ showAllDigits: true,
39
+ locale,
40
+ };
41
+ expect((0, formatCurrencyUnit_1.formatCurrencyUnit)(unit, value, options)).toMatchSnapshot();
42
+ });
43
+ });
44
+ });
45
+ });
46
+ //# sourceMappingURL=formatCurrencyUnit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatCurrencyUnit.test.js","sourceRoot":"","sources":["../../src/currencies/formatCurrencyUnit.test.ts"],"names":[],"mappings":";;AAAA,kEAAyE;AACzE,6DAA0D;AAC1D,+CAAyC;AAGzC,MAAM,SAAS,GAAmC,MAAM,CAAC,MAAM,CAAC,iCAAoB,CAAC,CAAC,GAAG,CACvF,QAAQ,CAAC,EAAE;IACT,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;KACxB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;CACR,CAAC;AAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,iDAAiD,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACnF,MAAM,KAAK,GAAG,IAAI,wBAAS,CAAC,mBAAmB,CAAC,CAAC;YACjD,MAAM,CAAC,IAAA,uCAAkB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE;YACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,iDAAiD,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;gBACnF,MAAM,KAAK,GAAG,IAAI,wBAAS,CAAC,mBAAmB,CAAC,CAAC;gBACjD,MAAM,OAAO,GAAG;oBACd,sBAAsB,EAAE,GAAG;oBAC3B,QAAQ,EAAE,IAAI;oBACd,aAAa,EAAE,IAAI;oBACnB,MAAM;iBACP,CAAC;gBACF,MAAM,CAAC,IAAA,uCAAkB,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -22,10 +22,10 @@ export declare const getOperationConfirmationNumber: (operation: Operation, acco
22
22
  export declare const getOperationConfirmationDisplayableNumber: (operation: Operation, account: Account) => string;
23
23
  export declare const isConfirmedOperation: (operation: Operation, account: Account, confirmationsNb: number) => boolean;
24
24
  export declare const isAddressPoisoningOperation: (operation: Operation, account: AccountLike) => boolean;
25
- export declare function isEditableOperation(account: AccountLike, operation: Operation): boolean;
26
- export declare function getStuckAccountAndOperation(account: AccountLike, parentAccount: Account | undefined | null): {
27
- account: AccountLike;
28
- parentAccount: Account | undefined;
29
- operation: Operation;
30
- } | undefined;
25
+ /**
26
+ * @param account The account of the transaction to edit
27
+ * @param nonce The nouce of the transaction to edit
28
+ * @returns true if the nonce corresponds to the oldest pending operation
29
+ */
30
+ export declare const isOldestPendingOperation: (account: Account, nonce: number) => boolean;
31
31
  //# sourceMappingURL=operation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAe,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAWzF,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CAyC9B;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAQA;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAiCpF;AAED,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAmB/E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CA0CjE;AAED,wBAAgB,qCAAqC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAK9E;AAED,eAAO,MAAM,8BAA8B,cAAe,SAAS,WAAW,OAAO,KAAG,MACX,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC;AAEZ,eAAO,MAAM,2BAA2B,cAC3B,SAAS,WACX,WAAW,KACnB,OASF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CASvF;AAGD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,GAEvC;IACE,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;CACtB,GACD,SAAS,CAiDZ"}
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAe,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUzF,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CAyC9B;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAQA;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAiCpF;AAED,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAmB/E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CA0CjE;AAED,wBAAgB,qCAAqC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAK9E;AAED,eAAO,MAAM,8BAA8B,cAAe,SAAS,WAAW,OAAO,KAAG,MACX,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC;AAEZ,eAAO,MAAM,2BAA2B,cAC3B,SAAS,WACX,WAAW,KACnB,OASF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,YAAa,OAAO,SAAS,MAAM,KAAG,OAiB1E,CAAC"}
package/lib/operation.js CHANGED
@@ -3,12 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getStuckAccountAndOperation = exports.isEditableOperation = exports.isAddressPoisoningOperation = exports.isConfirmedOperation = exports.getOperationConfirmationDisplayableNumber = exports.getOperationConfirmationNumber = exports.getOperationAmountNumberWithInternals = exports.getOperationAmountNumber = exports.flattenOperationWithInternalsAndNfts = exports.patchOperationWithHash = exports.decodeSubOperationId = exports.encodeSubOperationId = exports.decodeOperationId = exports.encodeOperationId = exports.findOperationInAccount = void 0;
6
+ exports.isOldestPendingOperation = exports.isAddressPoisoningOperation = exports.isConfirmedOperation = exports.getOperationConfirmationDisplayableNumber = exports.getOperationConfirmationNumber = exports.getOperationAmountNumberWithInternals = exports.getOperationAmountNumber = exports.flattenOperationWithInternalsAndNfts = exports.patchOperationWithHash = exports.decodeSubOperationId = exports.encodeSubOperationId = exports.decodeOperationId = exports.encodeOperationId = exports.findOperationInAccount = void 0;
7
7
  const invariant_1 = __importDefault(require("invariant"));
8
8
  const bignumber_js_1 = require("bignumber.js");
9
9
  const live_env_1 = require("@ledgerhq/live-env");
10
10
  const nftOperationId_1 = require("./nft/nftOperationId");
11
- const helpers_1 = require("./account/helpers");
12
11
  const account_1 = require("./account");
13
12
  const nftId_1 = require("./nft/nftId");
14
13
  const nftOperationIdEncoderPerStandard = {
@@ -174,56 +173,24 @@ const isAddressPoisoningOperation = (operation, account) => {
174
173
  operation.value.isZero());
175
174
  };
176
175
  exports.isAddressPoisoningOperation = isAddressPoisoningOperation;
177
- function isEditableOperation(account, operation) {
178
- let isEvmFamily = false;
179
- if (account.type === "Account") {
180
- isEvmFamily = account.currency.family === "evm";
181
- }
182
- else if (account.type === "TokenAccount") {
183
- isEvmFamily = account.token.parentCurrency.family === "evm";
184
- }
185
- return isEvmFamily && operation.blockHeight === null && !!operation.transactionRaw;
186
- }
187
- exports.isEditableOperation = isEditableOperation;
188
- // return the oldest stuck pending operation and its corresponding account according to a eth account or a token subaccount. If no stuck pending operation is found, return undefined
189
- function getStuckAccountAndOperation(account, parentAccount) {
190
- var _a;
191
- let stuckAccount;
192
- let stuckParentAccount;
193
- const mainAccount = (0, helpers_1.getMainAccount)(account, parentAccount);
194
- const SUPPORTED_FAMILIES = ["evm"];
195
- if (!SUPPORTED_FAMILIES.includes(mainAccount.currency.family)) {
196
- return undefined;
197
- }
198
- const now = new Date().getTime();
199
- const stuckOperations = mainAccount.pendingOperations.filter(pendingOp => isEditableOperation(mainAccount, pendingOp) &&
200
- now - pendingOp.date.getTime() > (0, live_env_1.getEnv)("ETHEREUM_STUCK_TRANSACTION_TIMEOUT"));
201
- if (stuckOperations.length === 0) {
202
- return undefined;
203
- }
204
- const oldestStuckOperation = stuckOperations.reduce((oldestOp, currentOp) => {
205
- if (!oldestOp)
206
- return currentOp;
207
- return oldestOp.transactionSequenceNumber !== undefined &&
208
- currentOp.transactionSequenceNumber !== undefined &&
209
- oldestOp.transactionSequenceNumber > currentOp.transactionSequenceNumber
210
- ? currentOp
211
- : oldestOp;
176
+ /**
177
+ * @param account The account of the transaction to edit
178
+ * @param nonce The nouce of the transaction to edit
179
+ * @returns true if the nonce corresponds to the oldest pending operation
180
+ */
181
+ const isOldestPendingOperation = (account, nonce) => {
182
+ /**
183
+ * The selected pending operation is the oldest if there is no pending
184
+ * operation with a lower transactionSequenceNumber
185
+ */
186
+ return !account.pendingOperations.some(pendingOp => {
187
+ /**
188
+ * the pending operation must have a transactionSequenceNumberat this stage
189
+ * since it should have previously been broadcasted
190
+ */
191
+ (0, invariant_1.default)(pendingOp.transactionSequenceNumber !== undefined, "transactionSequenceNumber required");
192
+ return pendingOp.transactionSequenceNumber < nonce;
212
193
  });
213
- if ((_a = oldestStuckOperation === null || oldestStuckOperation === void 0 ? void 0 : oldestStuckOperation.transactionRaw) === null || _a === void 0 ? void 0 : _a.subAccountId) {
214
- stuckAccount = (0, helpers_1.findSubAccountById)(mainAccount, oldestStuckOperation.transactionRaw.subAccountId);
215
- stuckParentAccount = mainAccount;
216
- }
217
- else {
218
- stuckAccount = mainAccount;
219
- stuckParentAccount = undefined;
220
- }
221
- (0, invariant_1.default)(stuckAccount, "stuckAccount required");
222
- return {
223
- account: stuckAccount,
224
- parentAccount: stuckParentAccount,
225
- operation: oldestStuckOperation,
226
- };
227
- }
228
- exports.getStuckAccountAndOperation = getStuckAccountAndOperation;
194
+ };
195
+ exports.isOldestPendingOperation = isOldestPendingOperation;
229
196
  //# sourceMappingURL=operation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation.js","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const prando_1 = __importDefault(require("prando"));
7
6
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
7
+ const prando_1 = __importDefault(require("prando"));
8
8
  const currencies_1 = require("./currencies");
9
- const operation_1 = require("./operation");
10
9
  const account_1 = require("./mocks/account");
10
+ const operation_1 = require("./operation");
11
11
  const ethereum = (0, currencies_1.getCryptoCurrencyById)("ethereum");
12
12
  const usdc = (0, currencies_1.getTokenById)("ethereum/erc20/usd__coin");
13
13
  const cardano = (0, currencies_1.getCryptoCurrencyById)("cardano");
@@ -45,71 +45,35 @@ describe("Operation.ts", () => {
45
45
  expect((0, operation_1.isAddressPoisoningOperation)(operation, account)).toBe(false);
46
46
  });
47
47
  });
48
- describe("isEditableOperation", () => {
49
- it("should return false if the currency is not in eth family", () => {
50
- const account = (0, account_1.genAccount)("myAccount", { currency: cardano });
51
- const tokenAccount = (0, account_1.genTokenAccount)(0, account, lobster);
52
- const operation = Object.assign(Object.assign({}, (0, account_1.genOperation)(account, tokenAccount, account.operations, new prando_1.default(""))), { value: new bignumber_js_1.default(0) });
53
- expect((0, operation_1.isEditableOperation)(account, operation)).toBe(false);
54
- expect((0, operation_1.isEditableOperation)(tokenAccount, operation)).toBe(false);
48
+ describe("isOldestPendingOperation", () => {
49
+ const account = (0, account_1.genAccount)("myAccount", { currency: ethereum });
50
+ const transactionRaw = {
51
+ family: "evm",
52
+ amount: "1",
53
+ recipient: "MockRecipient",
54
+ };
55
+ const pendingCoinOperation0 = Object.assign(Object.assign({}, (0, account_1.genOperation)(account, account, account.operations, new prando_1.default(""))), { transactionRaw, blockHeight: null, value: new bignumber_js_1.default(0), date: new Date(1986, 0, 1), transactionSequenceNumber: 0 });
56
+ const pendingCoinOperation1 = Object.assign(Object.assign({}, pendingCoinOperation0), { transactionSequenceNumber: 1 });
57
+ const pendingCoinOperation2 = Object.assign(Object.assign({}, pendingCoinOperation1), { transactionSequenceNumber: 2 });
58
+ it("should return true if there are no pending operations", () => {
59
+ const testAccount = Object.assign(Object.assign({}, account), { pendingOperations: [] });
60
+ expect((0, operation_1.isOldestPendingOperation)(testAccount, 0)).toBe(true);
55
61
  });
56
- it("should return true if the currency is in eth family, the operation is pending and transactionRaw is filled, otherwise, return false", () => {
57
- const account = (0, account_1.genAccount)("myAccount", { currency: ethereum });
58
- const tokenAccount = (0, account_1.genTokenAccount)(0, account, usdc);
59
- const operation = Object.assign(Object.assign({}, (0, account_1.genOperation)(account, tokenAccount, account.operations, new prando_1.default(""))), { value: new bignumber_js_1.default(0), blockHeight: null });
60
- const transactionRaw = {
61
- family: "evm",
62
- amount: "1",
63
- recipient: "MockRecipient",
64
- };
65
- expect((0, operation_1.isEditableOperation)(account, operation)).toBe(false);
66
- expect((0, operation_1.isEditableOperation)(tokenAccount, operation)).toBe(false);
67
- operation.transactionRaw = transactionRaw;
68
- expect((0, operation_1.isEditableOperation)(account, operation)).toBe(true);
69
- expect((0, operation_1.isEditableOperation)(tokenAccount, operation)).toBe(true);
62
+ it("should return true if the given nonce is the same as the transactionSequenceNumber of the only pending operation", () => {
63
+ const testAccount = Object.assign(Object.assign({}, account), { pendingOperations: [pendingCoinOperation0] });
64
+ expect((0, operation_1.isOldestPendingOperation)(testAccount, 0)).toBe(true);
70
65
  });
71
- });
72
- describe("getStuckAccountAndOperation", () => {
73
- it("should return undefined if the pending transaction is not older than 5 minutes", () => {
74
- const account = (0, account_1.genAccount)("myAccount", { currency: ethereum });
75
- const tokenAccount = (0, account_1.genTokenAccount)(0, account, usdc);
76
- const transactionRaw = {
77
- family: "evm",
78
- amount: "1",
79
- recipient: "MockRecipient",
80
- };
81
- const pendingOperation = Object.assign(Object.assign({}, (0, account_1.genOperation)(account, tokenAccount, account.operations, new prando_1.default(""))), { transactionRaw, blockHeight: null, value: new bignumber_js_1.default(0), date: new Date() });
82
- account.pendingOperations.push(pendingOperation);
83
- expect((0, operation_1.getStuckAccountAndOperation)(account, undefined)).toBe(undefined);
66
+ it("should return true if the given nonce is less than the transactionSequenceNumber of any pending operation", () => {
67
+ const testAccount = Object.assign(Object.assign({}, account), { pendingOperations: [pendingCoinOperation1, pendingCoinOperation2] });
68
+ expect((0, operation_1.isOldestPendingOperation)(testAccount, 0)).toBe(true);
84
69
  });
85
- it("should return pending transaction if the pending transaction is older than 5 minutes", () => {
86
- var _a;
87
- const account = (0, account_1.genAccount)("myAccount", { currency: ethereum });
88
- const tokenAccount = (0, account_1.genTokenAccount)(0, account, usdc);
89
- const transactionRaw = {
90
- family: "evm",
91
- amount: "1",
92
- recipient: "MockRecipient",
93
- };
94
- const pendingOperation = Object.assign(Object.assign({}, (0, account_1.genOperation)(account, tokenAccount, account.operations, new prando_1.default(""))), { transactionRaw, blockHeight: null, value: new bignumber_js_1.default(0), date: new Date(1986, 0, 1), transactionSequenceNumber: 0 });
95
- account.pendingOperations.push(pendingOperation);
96
- expect((_a = (0, operation_1.getStuckAccountAndOperation)(account, undefined)) === null || _a === void 0 ? void 0 : _a.operation.transactionSequenceNumber).toBe(0);
70
+ it("should return false if the given nonce is greater than the transactionSequenceNumber of all pending operations", () => {
71
+ const testAccount = Object.assign(Object.assign({}, account), { pendingOperations: [pendingCoinOperation0, pendingCoinOperation1] });
72
+ expect((0, operation_1.isOldestPendingOperation)(testAccount, 2)).toBe(false);
97
73
  });
98
- it("should return the oldest pending transaction if there are multiple pending transactions. The transactions are sorted by transactionSequenceNumber", () => {
99
- var _a;
100
- const account = (0, account_1.genAccount)("myAccount", { currency: ethereum });
101
- const tokenAccount = (0, account_1.genTokenAccount)(0, account, usdc);
102
- const transactionRaw = {
103
- family: "evm",
104
- amount: "1",
105
- recipient: "MockRecipient",
106
- };
107
- const pendingOperation1 = Object.assign(Object.assign({}, (0, account_1.genOperation)(account, tokenAccount, account.operations, new prando_1.default(""))), { transactionRaw, blockHeight: null, value: new bignumber_js_1.default(0), date: new Date(1986, 0, 1), transactionSequenceNumber: 1 });
108
- const pendingOperation2 = Object.assign(Object.assign({}, pendingOperation1), { transactionSequenceNumber: 0 });
109
- const pendingOperation3 = Object.assign(Object.assign({}, pendingOperation1), { transactionSequenceNumber: 2 });
110
- account.pendingOperations.push(pendingOperation1, pendingOperation2, pendingOperation3);
111
- expect(account.pendingOperations.length).toBe(3);
112
- expect((_a = (0, operation_1.getStuckAccountAndOperation)(account, undefined)) === null || _a === void 0 ? void 0 : _a.operation.transactionSequenceNumber).toBe(0);
74
+ it("should return false if there is a pending operation with a lower transactionSequenceNumber than the given nonce", () => {
75
+ const testAccount = Object.assign(Object.assign({}, account), { pendingOperations: [pendingCoinOperation0, pendingCoinOperation1] });
76
+ expect((0, operation_1.isOldestPendingOperation)(testAccount, 1)).toBe(false);
113
77
  });
114
78
  });
115
79
  });
@@ -1 +1 @@
1
- {"version":3,"file":"operation.test.js","sourceRoot":"","sources":["../src/operation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation.test.js","sourceRoot":"","sources":["../src/operation.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { BigNumber } from "bignumber.js";
2
2
  import type { Account, AccountLike, AccountLikeArray, SubAccount, TokenAccount, ChildAccount } from "@ledgerhq/types-live";
3
3
  import { CryptoCurrency, TokenCurrency, Unit } from "@ledgerhq/types-cryptoassets";
4
- export declare const getMainAccount: <A extends Account>(account: A | SubAccount, parentAccount?: A | null | undefined) => A;
4
+ export declare const getMainAccount: <A extends Account>(account: SubAccount | A, parentAccount?: A | null | undefined) => A;
5
5
  export declare const getFeesCurrency: (account?: AccountLike) => TokenCurrency | CryptoCurrency;
6
6
  export declare const getFeesUnit: (currency: TokenCurrency | CryptoCurrency) => Unit;
7
7
  export declare const getAccountCurrency: (account?: AccountLike) => TokenCurrency | CryptoCurrency;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=formatCurrencyUnit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatCurrencyUnit.test.d.ts","sourceRoot":"","sources":["../../src/currencies/formatCurrencyUnit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import { cryptocurrenciesById } from "@ledgerhq/cryptoassets/currencies";
2
+ import { formatCurrencyUnit } from "./formatCurrencyUnit";
3
+ import { BigNumber } from "bignumber.js";
4
+ const testCases = Object.values(cryptocurrenciesById).map(currency => {
5
+ return {
6
+ name: currency.name,
7
+ unit: currency.units[0],
8
+ };
9
+ });
10
+ const localeTestCases = [
11
+ "en-US",
12
+ "fr-FR",
13
+ "es-ES",
14
+ "de-DE",
15
+ "ja-JP",
16
+ "ko-KR",
17
+ "pt-BR",
18
+ "ru-RU",
19
+ "tr-TR",
20
+ "zh-CN",
21
+ ];
22
+ describe("formatCurrencyUnit", () => {
23
+ describe("with default options", () => {
24
+ test.each(testCases)("should correctly format $name unit ($unit.name)", ({ unit }) => {
25
+ const value = new BigNumber("12345678900000000");
26
+ expect(formatCurrencyUnit(unit, value)).toMatchSnapshot();
27
+ });
28
+ });
29
+ describe("with custom options", () => {
30
+ describe.each(localeTestCases)("with locale %s", locale => {
31
+ test.each(testCases)("should correctly format $name unit ($unit.name)", ({ unit }) => {
32
+ const value = new BigNumber("12345678900000000");
33
+ const options = {
34
+ joinFragmentsSeparator: "-",
35
+ showCode: true,
36
+ showAllDigits: true,
37
+ locale,
38
+ };
39
+ expect(formatCurrencyUnit(unit, value, options)).toMatchSnapshot();
40
+ });
41
+ });
42
+ });
43
+ });
44
+ //# sourceMappingURL=formatCurrencyUnit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatCurrencyUnit.test.js","sourceRoot":"","sources":["../../src/currencies/formatCurrencyUnit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,SAAS,GAAmC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CACvF,QAAQ,CAAC,EAAE;IACT,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;KACxB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;CACR,CAAC;AAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,iDAAiD,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACnF,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACjD,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE;YACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,iDAAiD,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;gBACnF,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;gBACjD,MAAM,OAAO,GAAG;oBACd,sBAAsB,EAAE,GAAG;oBAC3B,QAAQ,EAAE,IAAI;oBACd,aAAa,EAAE,IAAI;oBACnB,MAAM;iBACP,CAAC;gBACF,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -22,10 +22,10 @@ export declare const getOperationConfirmationNumber: (operation: Operation, acco
22
22
  export declare const getOperationConfirmationDisplayableNumber: (operation: Operation, account: Account) => string;
23
23
  export declare const isConfirmedOperation: (operation: Operation, account: Account, confirmationsNb: number) => boolean;
24
24
  export declare const isAddressPoisoningOperation: (operation: Operation, account: AccountLike) => boolean;
25
- export declare function isEditableOperation(account: AccountLike, operation: Operation): boolean;
26
- export declare function getStuckAccountAndOperation(account: AccountLike, parentAccount: Account | undefined | null): {
27
- account: AccountLike;
28
- parentAccount: Account | undefined;
29
- operation: Operation;
30
- } | undefined;
25
+ /**
26
+ * @param account The account of the transaction to edit
27
+ * @param nonce The nouce of the transaction to edit
28
+ * @returns true if the nonce corresponds to the oldest pending operation
29
+ */
30
+ export declare const isOldestPendingOperation: (account: Account, nonce: number) => boolean;
31
31
  //# sourceMappingURL=operation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAe,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAWzF,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CAyC9B;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAQA;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAiCpF;AAED,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAmB/E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CA0CjE;AAED,wBAAgB,qCAAqC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAK9E;AAED,eAAO,MAAM,8BAA8B,cAAe,SAAS,WAAW,OAAO,KAAG,MACX,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC;AAEZ,eAAO,MAAM,2BAA2B,cAC3B,SAAS,WACX,WAAW,KACnB,OASF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CASvF;AAGD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,GAEvC;IACE,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;CACtB,GACD,SAAS,CAiDZ"}
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAe,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUzF,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CAyC9B;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAQA;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAiCpF;AAED,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAmB/E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CA0CjE;AAED,wBAAgB,qCAAqC,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAK9E;AAED,eAAO,MAAM,8BAA8B,cAAe,SAAS,WAAW,OAAO,KAAG,MACX,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC;AAEZ,eAAO,MAAM,2BAA2B,cAC3B,SAAS,WACX,WAAW,KACnB,OASF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,YAAa,OAAO,SAAS,MAAM,KAAG,OAiB1E,CAAC"}
@@ -2,7 +2,6 @@ import invariant from "invariant";
2
2
  import { BigNumber } from "bignumber.js";
3
3
  import { getEnv } from "@ledgerhq/live-env";
4
4
  import { encodeERC1155OperationId, encodeERC721OperationId } from "./nft/nftOperationId";
5
- import { findSubAccountById, getMainAccount } from "./account/helpers";
6
5
  import { decodeAccountId } from "./account";
7
6
  import { encodeNftId } from "./nft/nftId";
8
7
  const nftOperationIdEncoderPerStandard = {
@@ -155,54 +154,23 @@ export const isAddressPoisoningOperation = (operation, account) => {
155
154
  impactedFamilies.includes(account.token.parentCurrency.family) &&
156
155
  operation.value.isZero());
157
156
  };
158
- export function isEditableOperation(account, operation) {
159
- let isEvmFamily = false;
160
- if (account.type === "Account") {
161
- isEvmFamily = account.currency.family === "evm";
162
- }
163
- else if (account.type === "TokenAccount") {
164
- isEvmFamily = account.token.parentCurrency.family === "evm";
165
- }
166
- return isEvmFamily && operation.blockHeight === null && !!operation.transactionRaw;
167
- }
168
- // return the oldest stuck pending operation and its corresponding account according to a eth account or a token subaccount. If no stuck pending operation is found, return undefined
169
- export function getStuckAccountAndOperation(account, parentAccount) {
170
- var _a;
171
- let stuckAccount;
172
- let stuckParentAccount;
173
- const mainAccount = getMainAccount(account, parentAccount);
174
- const SUPPORTED_FAMILIES = ["evm"];
175
- if (!SUPPORTED_FAMILIES.includes(mainAccount.currency.family)) {
176
- return undefined;
177
- }
178
- const now = new Date().getTime();
179
- const stuckOperations = mainAccount.pendingOperations.filter(pendingOp => isEditableOperation(mainAccount, pendingOp) &&
180
- now - pendingOp.date.getTime() > getEnv("ETHEREUM_STUCK_TRANSACTION_TIMEOUT"));
181
- if (stuckOperations.length === 0) {
182
- return undefined;
183
- }
184
- const oldestStuckOperation = stuckOperations.reduce((oldestOp, currentOp) => {
185
- if (!oldestOp)
186
- return currentOp;
187
- return oldestOp.transactionSequenceNumber !== undefined &&
188
- currentOp.transactionSequenceNumber !== undefined &&
189
- oldestOp.transactionSequenceNumber > currentOp.transactionSequenceNumber
190
- ? currentOp
191
- : oldestOp;
157
+ /**
158
+ * @param account The account of the transaction to edit
159
+ * @param nonce The nouce of the transaction to edit
160
+ * @returns true if the nonce corresponds to the oldest pending operation
161
+ */
162
+ export const isOldestPendingOperation = (account, nonce) => {
163
+ /**
164
+ * The selected pending operation is the oldest if there is no pending
165
+ * operation with a lower transactionSequenceNumber
166
+ */
167
+ return !account.pendingOperations.some(pendingOp => {
168
+ /**
169
+ * the pending operation must have a transactionSequenceNumberat this stage
170
+ * since it should have previously been broadcasted
171
+ */
172
+ invariant(pendingOp.transactionSequenceNumber !== undefined, "transactionSequenceNumber required");
173
+ return pendingOp.transactionSequenceNumber < nonce;
192
174
  });
193
- if ((_a = oldestStuckOperation === null || oldestStuckOperation === void 0 ? void 0 : oldestStuckOperation.transactionRaw) === null || _a === void 0 ? void 0 : _a.subAccountId) {
194
- stuckAccount = findSubAccountById(mainAccount, oldestStuckOperation.transactionRaw.subAccountId);
195
- stuckParentAccount = mainAccount;
196
- }
197
- else {
198
- stuckAccount = mainAccount;
199
- stuckParentAccount = undefined;
200
- }
201
- invariant(stuckAccount, "stuckAccount required");
202
- return {
203
- account: stuckAccount,
204
- parentAccount: stuckParentAccount,
205
- operation: oldestStuckOperation,
206
- };
207
- }
175
+ };
208
176
  //# sourceMappingURL=operation.js.map