@ledgerhq/coin-framework 5.2.0-next.1 → 5.2.0-nightly.1

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 (42) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +9 -11
  3. package/lib/account/groupOperations.d.ts +29 -0
  4. package/lib/account/groupOperations.d.ts.map +1 -1
  5. package/lib/account/groupOperations.js +60 -8
  6. package/lib/account/groupOperations.js.map +1 -1
  7. package/lib/account/groupOperations.test.d.ts +2 -0
  8. package/lib/account/groupOperations.test.d.ts.map +1 -0
  9. package/lib/account/groupOperations.test.js +93 -0
  10. package/lib/account/groupOperations.test.js.map +1 -0
  11. package/lib/account/pending.d.ts.map +1 -1
  12. package/lib/account/pending.js +20 -0
  13. package/lib/account/pending.js.map +1 -1
  14. package/lib/account/pending.test.d.ts +3 -1
  15. package/lib/account/pending.test.d.ts.map +1 -1
  16. package/lib/account/pending.test.js +31 -0
  17. package/lib/account/pending.test.js.map +1 -1
  18. package/lib/operation.test.js +18 -0
  19. package/lib/operation.test.js.map +1 -1
  20. package/lib-es/account/groupOperations.d.ts +29 -0
  21. package/lib-es/account/groupOperations.d.ts.map +1 -1
  22. package/lib-es/account/groupOperations.js +60 -8
  23. package/lib-es/account/groupOperations.js.map +1 -1
  24. package/lib-es/account/groupOperations.test.d.ts +2 -0
  25. package/lib-es/account/groupOperations.test.d.ts.map +1 -0
  26. package/lib-es/account/groupOperations.test.js +91 -0
  27. package/lib-es/account/groupOperations.test.js.map +1 -0
  28. package/lib-es/account/pending.d.ts.map +1 -1
  29. package/lib-es/account/pending.js +20 -0
  30. package/lib-es/account/pending.js.map +1 -1
  31. package/lib-es/account/pending.test.d.ts +3 -1
  32. package/lib-es/account/pending.test.d.ts.map +1 -1
  33. package/lib-es/account/pending.test.js +30 -2
  34. package/lib-es/account/pending.test.js.map +1 -1
  35. package/lib-es/operation.test.js +18 -0
  36. package/lib-es/operation.test.js.map +1 -1
  37. package/package.json +7 -7
  38. package/src/account/groupOperations.test.ts +123 -0
  39. package/src/account/groupOperations.ts +61 -11
  40. package/src/account/pending.test.ts +38 -2
  41. package/src/account/pending.ts +20 -0
  42. package/src/operation.test.ts +25 -0
@@ -7,6 +7,66 @@ const emptyDailyOperations = {
7
7
  };
8
8
  const hasStableOperation = (account, hash) => account.operations.some(op => op.hash === hash);
9
9
  /**
10
+ * Compares two operations to determine if the first one (`op1`) is more recent than the second (`op2`).
11
+ * This is used to sort operations in descending chronological order.
12
+ *
13
+ * - First compares by `date` (newer dates come first).
14
+ * - If both operations have the same `date`, and both define `transactionSequenceNumber`,
15
+ * the one with the higher sequence number is considered more recent.
16
+ * - If only one operation has a defined `transactionSequenceNumber`, it is prioritized
17
+ * over the one that does not (under the assumption it's more precisely ordered).
18
+ * - If neither has a defined sequence, fallback returns `false` (preserving existing order).
19
+ *
20
+ * @param op1 - First operation
21
+ * @param op2 - Second operation
22
+ * @returns `true` if `op1` should come before `op2`, `false` otherwise
23
+ */
24
+ function compareOps(op1, op2) {
25
+ if (op1.date > op2.date)
26
+ return true;
27
+ if (op1.date < op2.date)
28
+ return false;
29
+ const seq1 = op1.transactionSequenceNumber;
30
+ const seq2 = op2.transactionSequenceNumber;
31
+ if (seq1 !== undefined && seq2 !== undefined) {
32
+ return seq1 > seq2;
33
+ }
34
+ if (seq1 !== undefined && seq2 === undefined)
35
+ return true;
36
+ if (seq1 === undefined && seq2 !== undefined)
37
+ return false;
38
+ return false;
39
+ }
40
+ /**
41
+ * Groups operations from one or more accounts into day-based sections,
42
+ * ordered from most recent to oldest.
43
+ *
44
+ * This function collects operations incrementally, scanning one operation
45
+ * at a time per account in a round-robin fashion (including subaccounts if enabled).
46
+ * In each round, it picks the most recent operation based on:
47
+ * - `date` (newer comes first)
48
+ * - `transactionSequenceNumber` (higher means more recent, used as a tiebreaker when dates are equal)
49
+ *
50
+ * The process stops once the requested `count` of operations has been collected.
51
+ * Pending operations are included unless:
52
+ * - They are duplicates of confirmed operations (based on `hash`)
53
+ * - They are filtered out via the optional `filterOperation` callback
54
+ *
55
+ * ⚠️ Due to its round-by-account design, operations from the same account
56
+ * are not compared against each other in the same pass. This may lead to
57
+ * chronological inconsistencies if relying solely on `transactionSequenceNumber`
58
+ * for intra-account ordering. Consider sorting operations manually if strict ordering is required.
59
+ *
60
+ * @param inputAccounts - A list of accounts (or parent accounts) to pull operations from
61
+ * @param options - Options to configure grouping behavior
62
+ * @param options.count - Maximum number of operations to include in the result
63
+ * @param options.withSubAccounts - Whether to include subaccounts in the input set
64
+ * @param options.filterOperation - Optional function to selectively include/exclude operations
65
+ *
66
+ * @returns A `DailyOperations` object containing:
67
+ * - `sections`: An array of `{ day, data[] }` groups
68
+ * - `completed`: Boolean indicating whether fewer operations were available than requested
69
+ *
10
70
  * @memberof account
11
71
  */
12
72
  export function groupAccountsOperationsByDay(inputAccounts, { count, withSubAccounts, filterOperation }) {
@@ -15,14 +75,6 @@ export function groupAccountsOperationsByDay(inputAccounts, { count, withSubAcco
15
75
  const indexes = Array(accounts.length).fill(0);
16
76
  // Track indexes of account.pendingOperations[] for each account
17
77
  const indexesPending = Array(accounts.length).fill(0);
18
- // Retruns true if operation 1 is later than operation 2
19
- function compareOps(op1, op2) {
20
- return (op1.date > op2.date ||
21
- (op1.date === op2.date &&
22
- op1.transactionSequenceNumber !== undefined &&
23
- op2.transactionSequenceNumber !== undefined &&
24
- op1.transactionSequenceNumber > op2.transactionSequenceNumber));
25
- }
26
78
  // Returns the next most recent operation from the account with current indexes
27
79
  function getNext() {
28
80
  let bestOp;
@@ -1 +1 @@
1
- {"version":3,"file":"groupOperations.js","sourceRoot":"","sources":["../../src/account/groupOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"groupOperations.js","sourceRoot":"","sources":["../../src/account/groupOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=groupOperations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupOperations.test.d.ts","sourceRoot":"","sources":["../../src/account/groupOperations.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ import { groupAccountsOperationsByDay } from "./groupOperations";
2
+ import { createOperation, createAccount as baseCreateAccount } from "./pending.test";
3
+ // Wrapper around createOperation to set transactionSequenceNumber and optional date override
4
+ const createOp = (id, isoDate, sequence, isPending = false) => {
5
+ const op = createOperation("acc1", ["sender"], sequence);
6
+ return {
7
+ ...op,
8
+ id,
9
+ hash: id,
10
+ accountId: "acc1",
11
+ date: new Date(isoDate),
12
+ transactionSequenceNumber: sequence,
13
+ blockHeight: isPending ? null : 1,
14
+ };
15
+ };
16
+ // Wrap createAccount to support injecting confirmed & pending operations
17
+ const createAccount = ({ confirmed = [], pending = [], }) => {
18
+ const base = baseCreateAccount("acc1");
19
+ return {
20
+ ...base,
21
+ id: "acc1",
22
+ operations: confirmed,
23
+ operationsCount: confirmed.length,
24
+ pendingOperations: pending,
25
+ };
26
+ };
27
+ describe("groupAccountOperationsByDay", () => {
28
+ it("groups confirmed ops by day and preserves order", () => {
29
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z");
30
+ const op2 = createOp("op2", "2024-01-01T08:00:00Z");
31
+ const op3 = createOp("op3", "2024-01-02T12:00:00Z");
32
+ const acc = createAccount({ confirmed: [op3, op1, op2] });
33
+ const result = groupAccountsOperationsByDay([acc], { count: 10 });
34
+ expect(result.sections.length).toBe(2);
35
+ expect(result.sections[0].day.toISOString()).toContain("2024-01-02");
36
+ expect(result.sections[0].data.map((op) => op.id)).toEqual(["op3"]);
37
+ expect(result.sections[1].data.map((op) => op.id)).toEqual(["op1", "op2"]);
38
+ });
39
+ it("orders ops with equal date by transactionSequenceNumber", () => {
40
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z", 3);
41
+ const op2 = createOp("op2", "2024-01-01T10:00:00Z", 5);
42
+ const acc1 = createAccount({ confirmed: [op1] });
43
+ const acc2 = createAccount({ confirmed: [op2] });
44
+ const result = groupAccountsOperationsByDay([acc1, acc2], { count: 10 });
45
+ expect(result.sections.length).toBe(1);
46
+ expect(result.sections[0].data.map((op) => op.id)).toEqual(["op2", "op1"]);
47
+ });
48
+ it("prioritizes defined transactionSequenceNumber over undefined", () => {
49
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z");
50
+ const op2 = createOp("op2", "2024-01-01T10:00:00Z", 0);
51
+ const acc1 = createAccount({ confirmed: [op1] });
52
+ const acc2 = createAccount({ confirmed: [op2] });
53
+ const result = groupAccountsOperationsByDay([acc1, acc2], { count: 10 });
54
+ expect(result.sections[0].data.map((op) => op.id)).toEqual(["op2", "op1"]);
55
+ });
56
+ it("includes pending ops if not duplicated", () => {
57
+ const confirmed = createOp("op1", "2024-01-01T10:00:00Z", 5);
58
+ const pending = createOp("op2", "2024-01-02T10:00:00Z", 10, true);
59
+ const acc = createAccount({
60
+ confirmed: [confirmed],
61
+ pending: [pending],
62
+ });
63
+ const result = groupAccountsOperationsByDay([acc], { count: 10 });
64
+ expect(result.sections.length).toBe(2);
65
+ expect(result.sections[0].data.map((op) => op.id)).toEqual(["op2"]);
66
+ expect(result.sections[1].data.map((op) => op.id)).toEqual(["op1"]);
67
+ });
68
+ it("filters out pending ops with duplicate hash", () => {
69
+ const confirmed = createOp("op1", "2024-01-01T10:00:00Z", 5);
70
+ const pendingDuplicate = createOp("op1", "2024-01-02T10:00:00Z", 10, true); // same hash/id
71
+ const acc = createAccount({
72
+ confirmed: [confirmed],
73
+ pending: [pendingDuplicate],
74
+ });
75
+ const result = groupAccountsOperationsByDay([acc], { count: 10 });
76
+ expect(result.sections.length).toBe(1);
77
+ expect(result.sections[0].data.map((op) => op.id)).toEqual(["op1"]);
78
+ });
79
+ it("respects filterOperation if provided", () => {
80
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z");
81
+ const op2 = createOp("op2", "2024-01-01T09:00:00Z");
82
+ const acc = createAccount({ confirmed: [op1, op2] });
83
+ const result = groupAccountsOperationsByDay([acc], {
84
+ count: 10,
85
+ filterOperation: (op) => op.id === "op1",
86
+ });
87
+ expect(result.sections.length).toBe(1);
88
+ expect(result.sections[0].data.map((op) => op.id)).toEqual(["op1"]);
89
+ });
90
+ });
91
+ //# sourceMappingURL=groupOperations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupOperations.test.js","sourceRoot":"","sources":["../../src/account/groupOperations.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../src/account/pending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAgB,MAAM,sBAAsB,CAAC;AAG7E,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAerF;AAoBD,eAAO,MAAM,mBAAmB,YAAa,OAAO,aAAa,SAAS,KAAG,OAsB5E,CAAC"}
1
+ {"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../src/account/pending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAgB,MAAM,sBAAsB,CAAC;AAO7E,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAerF;AAoCD,eAAO,MAAM,mBAAmB,YAAa,OAAO,aAAa,SAAS,KAAG,OAsB5E,CAAC"}
@@ -1,4 +1,8 @@
1
1
  import { getEnv } from "@ledgerhq/live-env";
2
+ /*
3
+ We want to discard pendingOperations if their transaction sequence number
4
+ has been out-numbered by the last operation...
5
+ */
2
6
  export function shouldRetainPendingOperation(account, op) {
3
7
  // FIXME: valueOf to compare dates in typescript
4
8
  const delay = new Date().valueOf() - op.date.valueOf();
@@ -11,6 +15,22 @@ export function shouldRetainPendingOperation(account, op) {
11
15
  }
12
16
  return delay < getEnv("OPERATION_OPTIMISTIC_RETENTION");
13
17
  }
18
+ /**
19
+ * Appends a pending operation to the list, ensuring no duplicates based on transactionSequenceNumber.
20
+ *
21
+ * If another operation in the list has the same `transactionSequenceNumber` as the new one,
22
+ * it is removed first — the new one replaces it at the beginning of the list.
23
+ *
24
+ * This ensures optimistic operations (e.g., from RBF or retry logic) don't stack up multiple times
25
+ * when they refer to the same transaction.
26
+ *
27
+ * Note: If `transactionSequenceNumber` is `undefined`, all existing ops with `undefined` are preserved,
28
+ * which may lead to duplicates — this is acceptable for receive-only txs or ops with incomplete metadata.
29
+ *
30
+ * @param ops - Existing list of pending operations
31
+ * @param op - The new pending operation to insert
32
+ * @returns A new array with `op` prepended and any conflicting op removed
33
+ */
14
34
  const appendPendingOp = (ops, op) => {
15
35
  const filtered = ops.filter(o => o.transactionSequenceNumber !== op.transactionSequenceNumber);
16
36
  filtered.unshift(op);
@@ -1 +1 @@
1
- {"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/account/pending.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAAC,OAAgB,EAAE,EAAa;IAC1E,gDAAgD;IAChD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,IACE,IAAI;QACJ,IAAI,CAAC,yBAAyB;QAC9B,EAAE,CAAC,yBAAyB;QAC5B,EAAE,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,EAC9D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,GAAgB,EAAE,EAAa,EAAE,EAAE;IAC1D,MAAM,QAAQ,GAAgB,GAAG,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,yBAAyB,CAClE,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,SAAS,eAAe,CAAC,WAA2B,EAAE,EAAa;IACjE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;IAE7D,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAiB,EAAE,GAAG,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACpE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,SAAoB,EAAW,EAAE;IACrF,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACnC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEhC,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAmB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACzB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,CAAC,EAAE,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3C,WAAW,CAAC,iBAAiB,GAAG,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,MAAM,MAAM,GAAmB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACnC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/account/pending.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;EAGE;AACF,MAAM,UAAU,4BAA4B,CAAC,OAAgB,EAAE,EAAa;IAC1E,gDAAgD;IAChD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,IACE,IAAI;QACJ,IAAI,CAAC,yBAAyB;QAC9B,EAAE,CAAC,yBAAyB;QAC5B,EAAE,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,EAC9D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,eAAe,GAAG,CAAC,GAAgB,EAAE,EAAa,EAAE,EAAE;IAC1D,MAAM,QAAQ,GAAgB,GAAG,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,yBAAyB,CAClE,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,SAAS,eAAe,CAAC,WAA2B,EAAE,EAAa;IACjE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;IAE7D,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAiB,EAAE,GAAG,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACpE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,SAAoB,EAAW,EAAE;IACrF,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACnC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEhC,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAmB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACzB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,CAAC,EAAE,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3C,WAAW,CAAC,iBAAiB,GAAG,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,MAAM,MAAM,GAAmB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACnC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
@@ -1,2 +1,4 @@
1
- export {};
1
+ import { Account, Operation } from "@ledgerhq/types-live";
2
+ export declare function createAccount(id: string): Account;
3
+ export declare function createOperation(accountId: string, sender?: string[], sequenceNumber?: number, date?: Date): Operation;
2
4
  //# sourceMappingURL=pending.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pending.test.d.ts","sourceRoot":"","sources":["../../src/account/pending.test.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"pending.test.d.ts","sourceRoot":"","sources":["../../src/account/pending.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAgB,MAAM,sBAAsB,CAAC;AA2NxE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAyBjD;AAmBD,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,cAAc,CAAC,EAAE,MAAM,EACvB,IAAI,CAAC,EAAE,IAAI,GACV,SAAS,CAiBX"}
@@ -149,8 +149,36 @@ describe("shouldRetainPendingOperation", () => {
149
149
  // Then
150
150
  expect(shouldRetainPending).toBe(true);
151
151
  });
152
+ it("should replace existing pending operation with same transactionSequenceNumber", () => {
153
+ const account = createAccount("12");
154
+ const op1 = createOperation("12", ["addr"], 5);
155
+ const op2 = createOperation("12", ["addr"], 5); // same sequence
156
+ const result = addPendingOperation(addPendingOperation(account, op1), op2);
157
+ expect(result.pendingOperations.length).toBe(1);
158
+ expect(result.pendingOperations[0]).toBe(op2);
159
+ });
160
+ it("should remove the pending operation when confirmed version appears in second sync", () => {
161
+ const account = createAccount("12");
162
+ const now = new Date();
163
+ const senders = ["abc"];
164
+ // First sync: we get a pending operation
165
+ const pendingOp = createOperation("12", senders, 42, now);
166
+ const withPending = addPendingOperation(account, pendingOp);
167
+ expect(withPending.pendingOperations).toHaveLength(1);
168
+ expect(withPending.pendingOperations[0]).toBe(pendingOp);
169
+ // Second sync: confirmed operation shows up in the history
170
+ const confirmedOp = {
171
+ ...pendingOp,
172
+ blockHeight: 100,
173
+ blockHash: "blockhash",
174
+ };
175
+ withPending.operations.push(confirmedOp);
176
+ // Should not retain pending now
177
+ const retain = shouldRetainPendingOperation(withPending, pendingOp);
178
+ expect(retain).toBe(false);
179
+ });
152
180
  });
153
- function createAccount(id) {
181
+ export function createAccount(id) {
154
182
  const currency = listCryptoCurrencies(true)[0];
155
183
  return {
156
184
  type: "Account",
@@ -191,7 +219,7 @@ function createTokenAccount(id) {
191
219
  swapHistory: [],
192
220
  };
193
221
  }
194
- function createOperation(accountId, sender, sequenceNumber, date) {
222
+ export function createOperation(accountId, sender, sequenceNumber, date) {
195
223
  return {
196
224
  id: "",
197
225
  hash: "",
@@ -1 +1 @@
1
- {"version":3,"file":"pending.test.js","sourceRoot":"","sources":["../../src/account/pending.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending.test.js","sourceRoot":"","sources":["../../src/account/pending.test.ts"],"names":[],"mappings":"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"}
@@ -107,6 +107,24 @@ describe("Operation.ts", () => {
107
107
  };
108
108
  expect(isOldestPendingOperation(testAccount, 1)).toBe(false);
109
109
  });
110
+ it("should throw if a pending operation is missing transactionSequenceNumber", () => {
111
+ const malformedOp = {
112
+ ...pendingCoinOperation0,
113
+ transactionSequenceNumber: undefined,
114
+ };
115
+ const testAccount = {
116
+ ...account,
117
+ pendingOperations: [malformedOp],
118
+ };
119
+ expect(() => isOldestPendingOperation(testAccount, 0)).toThrow("transactionSequenceNumber required");
120
+ });
121
+ it("should still return true when pending operations are out of order", () => {
122
+ const testAccount = {
123
+ ...account,
124
+ pendingOperations: [pendingCoinOperation2, pendingCoinOperation0],
125
+ };
126
+ expect(isOldestPendingOperation(testAccount, 0)).toBe(true);
127
+ });
110
128
  });
111
129
  });
112
130
  //# sourceMappingURL=operation.test.js.map
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-framework",
3
- "version": "5.2.0-next.1",
3
+ "version": "5.2.0-nightly.1",
4
4
  "description": "Ledger framework for Coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -92,13 +92,13 @@
92
92
  "prando": "^6.0.1",
93
93
  "rxjs": "^7.8.1",
94
94
  "@ledgerhq/cryptoassets": "^13.18.0",
95
- "@ledgerhq/devices": "8.4.6-next.0",
95
+ "@ledgerhq/devices": "8.4.5",
96
96
  "@ledgerhq/errors": "^6.21.0",
97
97
  "@ledgerhq/live-env": "^2.9.0",
98
- "@ledgerhq/live-network": "^2.0.9-next.0",
99
- "@ledgerhq/logs": "^6.13.0-next.0",
98
+ "@ledgerhq/live-network": "^2.0.8",
99
+ "@ledgerhq/logs": "^6.12.0",
100
100
  "@ledgerhq/types-cryptoassets": "^7.23.0",
101
- "@ledgerhq/types-live": "^6.72.0-next.0"
101
+ "@ledgerhq/types-live": "^6.72.0-nightly.1"
102
102
  },
103
103
  "devDependencies": {
104
104
  "@types/invariant": "^2.2.2",
@@ -110,8 +110,8 @@
110
110
  "timemachine": "^0.3.2",
111
111
  "ts-jest": "^29.1.1",
112
112
  "jest-sonar": "0.2.16",
113
- "@ledgerhq/hw-transport-node-speculos": "^6.29.6-next.0",
114
- "@ledgerhq/hw-transport-node-speculos-http": "^6.29.6-next.0"
113
+ "@ledgerhq/hw-transport-node-speculos": "^6.29.5",
114
+ "@ledgerhq/hw-transport-node-speculos-http": "^6.29.5"
115
115
  },
116
116
  "scripts": {
117
117
  "clean": "rm -rf lib lib-es",
@@ -0,0 +1,123 @@
1
+ import { groupAccountsOperationsByDay } from "./groupOperations";
2
+ import type { AccountLike, Operation } from "@ledgerhq/types-live";
3
+ import { createOperation, createAccount as baseCreateAccount } from "./pending.test";
4
+
5
+ // Wrapper around createOperation to set transactionSequenceNumber and optional date override
6
+ const createOp = (id: string, isoDate: string, sequence?: number, isPending = false): Operation => {
7
+ const op = createOperation("acc1", ["sender"], sequence);
8
+ return {
9
+ ...op,
10
+ id,
11
+ hash: id,
12
+ accountId: "acc1",
13
+ date: new Date(isoDate),
14
+ transactionSequenceNumber: sequence,
15
+ blockHeight: isPending ? null : 1,
16
+ };
17
+ };
18
+
19
+ // Wrap createAccount to support injecting confirmed & pending operations
20
+ const createAccount = ({
21
+ confirmed = [],
22
+ pending = [],
23
+ }: {
24
+ confirmed?: Operation[];
25
+ pending?: Operation[];
26
+ }): AccountLike => {
27
+ const base = baseCreateAccount("acc1");
28
+ return {
29
+ ...base,
30
+ id: "acc1",
31
+ operations: confirmed,
32
+ operationsCount: confirmed.length,
33
+ pendingOperations: pending,
34
+ };
35
+ };
36
+
37
+ describe("groupAccountOperationsByDay", () => {
38
+ it("groups confirmed ops by day and preserves order", () => {
39
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z");
40
+ const op2 = createOp("op2", "2024-01-01T08:00:00Z");
41
+ const op3 = createOp("op3", "2024-01-02T12:00:00Z");
42
+
43
+ const acc = createAccount({ confirmed: [op3, op1, op2] });
44
+
45
+ const result = groupAccountsOperationsByDay([acc], { count: 10 });
46
+
47
+ expect(result.sections.length).toBe(2);
48
+ expect(result.sections[0].day.toISOString()).toContain("2024-01-02");
49
+ expect(result.sections[0].data.map((op: Operation) => op.id)).toEqual(["op3"]);
50
+ expect(result.sections[1].data.map((op: Operation) => op.id)).toEqual(["op1", "op2"]);
51
+ });
52
+
53
+ it("orders ops with equal date by transactionSequenceNumber", () => {
54
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z", 3);
55
+ const op2 = createOp("op2", "2024-01-01T10:00:00Z", 5);
56
+
57
+ const acc1 = createAccount({ confirmed: [op1] });
58
+ const acc2 = createAccount({ confirmed: [op2] });
59
+
60
+ const result = groupAccountsOperationsByDay([acc1, acc2], { count: 10 });
61
+
62
+ expect(result.sections.length).toBe(1);
63
+ expect(result.sections[0].data.map((op: Operation) => op.id)).toEqual(["op2", "op1"]);
64
+ });
65
+
66
+ it("prioritizes defined transactionSequenceNumber over undefined", () => {
67
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z");
68
+ const op2 = createOp("op2", "2024-01-01T10:00:00Z", 0);
69
+
70
+ const acc1 = createAccount({ confirmed: [op1] });
71
+ const acc2 = createAccount({ confirmed: [op2] });
72
+
73
+ const result = groupAccountsOperationsByDay([acc1, acc2], { count: 10 });
74
+
75
+ expect(result.sections[0].data.map((op: Operation) => op.id)).toEqual(["op2", "op1"]);
76
+ });
77
+
78
+ it("includes pending ops if not duplicated", () => {
79
+ const confirmed = createOp("op1", "2024-01-01T10:00:00Z", 5);
80
+ const pending = createOp("op2", "2024-01-02T10:00:00Z", 10, true);
81
+
82
+ const acc = createAccount({
83
+ confirmed: [confirmed],
84
+ pending: [pending],
85
+ });
86
+
87
+ const result = groupAccountsOperationsByDay([acc], { count: 10 });
88
+
89
+ expect(result.sections.length).toBe(2);
90
+ expect(result.sections[0].data.map((op: Operation) => op.id)).toEqual(["op2"]);
91
+ expect(result.sections[1].data.map((op: Operation) => op.id)).toEqual(["op1"]);
92
+ });
93
+
94
+ it("filters out pending ops with duplicate hash", () => {
95
+ const confirmed = createOp("op1", "2024-01-01T10:00:00Z", 5);
96
+ const pendingDuplicate = createOp("op1", "2024-01-02T10:00:00Z", 10, true); // same hash/id
97
+
98
+ const acc = createAccount({
99
+ confirmed: [confirmed],
100
+ pending: [pendingDuplicate],
101
+ });
102
+
103
+ const result = groupAccountsOperationsByDay([acc], { count: 10 });
104
+
105
+ expect(result.sections.length).toBe(1);
106
+ expect(result.sections[0].data.map((op: Operation) => op.id)).toEqual(["op1"]);
107
+ });
108
+
109
+ it("respects filterOperation if provided", () => {
110
+ const op1 = createOp("op1", "2024-01-01T10:00:00Z");
111
+ const op2 = createOp("op2", "2024-01-01T09:00:00Z");
112
+
113
+ const acc = createAccount({ confirmed: [op1, op2] });
114
+
115
+ const result = groupAccountsOperationsByDay([acc], {
116
+ count: 10,
117
+ filterOperation: (op: Operation) => op.id === "op1",
118
+ });
119
+
120
+ expect(result.sections.length).toBe(1);
121
+ expect(result.sections[0].data.map((op: Operation) => op.id)).toEqual(["op1"]);
122
+ });
123
+ });