@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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +9 -11
- package/lib/account/groupOperations.d.ts +29 -0
- package/lib/account/groupOperations.d.ts.map +1 -1
- package/lib/account/groupOperations.js +60 -8
- package/lib/account/groupOperations.js.map +1 -1
- package/lib/account/groupOperations.test.d.ts +2 -0
- package/lib/account/groupOperations.test.d.ts.map +1 -0
- package/lib/account/groupOperations.test.js +93 -0
- package/lib/account/groupOperations.test.js.map +1 -0
- package/lib/account/pending.d.ts.map +1 -1
- package/lib/account/pending.js +20 -0
- package/lib/account/pending.js.map +1 -1
- package/lib/account/pending.test.d.ts +3 -1
- package/lib/account/pending.test.d.ts.map +1 -1
- package/lib/account/pending.test.js +31 -0
- package/lib/account/pending.test.js.map +1 -1
- package/lib/operation.test.js +18 -0
- package/lib/operation.test.js.map +1 -1
- package/lib-es/account/groupOperations.d.ts +29 -0
- package/lib-es/account/groupOperations.d.ts.map +1 -1
- package/lib-es/account/groupOperations.js +60 -8
- package/lib-es/account/groupOperations.js.map +1 -1
- package/lib-es/account/groupOperations.test.d.ts +2 -0
- package/lib-es/account/groupOperations.test.d.ts.map +1 -0
- package/lib-es/account/groupOperations.test.js +91 -0
- package/lib-es/account/groupOperations.test.js.map +1 -0
- package/lib-es/account/pending.d.ts.map +1 -1
- package/lib-es/account/pending.js +20 -0
- package/lib-es/account/pending.js.map +1 -1
- package/lib-es/account/pending.test.d.ts +3 -1
- package/lib-es/account/pending.test.d.ts.map +1 -1
- package/lib-es/account/pending.test.js +30 -2
- package/lib-es/account/pending.test.js.map +1 -1
- package/lib-es/operation.test.js +18 -0
- package/lib-es/operation.test.js.map +1 -1
- package/package.json +7 -7
- package/src/account/groupOperations.test.ts +123 -0
- package/src/account/groupOperations.ts +61 -11
- package/src/account/pending.test.ts +38 -2
- package/src/account/pending.ts +20 -0
- 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":"AAMA,OAAO,EAAE,oCAAoC,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,oBAAoB,GAAG;IAC3B,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,IAAI;CAChB,CAAC;AAOF,MAAM,kBAAkB,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAE,EAAE,CAChE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"groupOperations.js","sourceRoot":"","sources":["../../src/account/groupOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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
|
-
|
|
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":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAEjC,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEhD,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,MAAM,EAAE,WAAW,CAAC;QACzC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,YAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAEnC,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEhD,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,EAAE,WAAW,CAAC;QACzC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,YAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAEjC,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEhD,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,EAAE,WAAW,CAAC;QACzC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,YAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAE9C,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,GAAG,EAAE;QACpG,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,UAAU,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iGAAiG,EAAE,GAAG,EAAE;QACzG,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,UAAU,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,UAAU,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAChF,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB;QAC/E,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,GAAG,EAAE;QACjG,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,UAAU,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACtF,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2FAA2F,EAAE,GAAG,EAAE;QACnG,QAAQ;QACR,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,UAAU,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAE9C,OAAO;QACP,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErE,OAAO;QACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;QAEhE,MAAM,MAAM,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAE3E,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;QAExB,yCAAyC;QACzC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE5D,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzD,2DAA2D;QAC3D,MAAM,WAAW,GAAc;YAC7B,GAAG,SAAS;YACZ,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,WAAW;SACvB,CAAC;QACF,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzC,gCAAgC;QAChC,MAAM,MAAM,GAAG,4BAA4B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,EAAE;QACF,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,EAAE;QACpB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QACzB,gBAAgB,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QAClC,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,WAAW,EAAE,CAAC;QACd,QAAQ;QACR,eAAe,EAAE,CAAC;QAClB,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,mBAAmB;QACnB,mBAAmB,EAAE,iBAAiB;QACtC,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAU;IACpC,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,EAAE;QACF,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAA8B;QACrC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QACzB,gBAAgB,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QAClC,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,eAAe,EAAE,CAAC;QAClB,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE,iBAAiB;QACtC,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,MAAiB,EACjB,cAAuB,EACvB,IAAW;IAEX,OAAO;QACL,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QACvB,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;QACrB,iCAAiC;QACjC,OAAO,EAAE,MAAM,IAAI,EAAE;QACrB,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,SAAS;QACpB,yBAAyB,EAAE,cAAc;QACzC,SAAS;QACT,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;QACxB,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
|
package/lib-es/operation.test.js
CHANGED
|
@@ -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-
|
|
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.
|
|
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.
|
|
99
|
-
"@ledgerhq/logs": "^6.
|
|
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-
|
|
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.
|
|
114
|
-
"@ledgerhq/hw-transport-node-speculos-http": "^6.29.
|
|
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
|
+
});
|