@ledgerhq/coin-tezos 1.1.0-next.0 → 1.2.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +27 -2
- package/lib/logic/listOperations.d.ts.map +1 -1
- package/lib/logic/listOperations.js +22 -7
- package/lib/logic/listOperations.js.map +1 -1
- package/lib/logic/listOperations.test.d.ts +2 -0
- package/lib/logic/listOperations.test.d.ts.map +1 -0
- package/lib/logic/listOperations.test.js +91 -0
- package/lib/logic/listOperations.test.js.map +1 -0
- package/lib/network/bakers.d.ts.map +1 -1
- package/lib/network/bakers.js +1 -0
- package/lib/network/bakers.js.map +1 -1
- package/lib-es/logic/listOperations.d.ts.map +1 -1
- package/lib-es/logic/listOperations.js +22 -7
- package/lib-es/logic/listOperations.js.map +1 -1
- package/lib-es/logic/listOperations.test.d.ts +2 -0
- package/lib-es/logic/listOperations.test.d.ts.map +1 -0
- package/lib-es/logic/listOperations.test.js +89 -0
- package/lib-es/logic/listOperations.test.js.map +1 -0
- package/lib-es/network/bakers.d.ts.map +1 -1
- package/lib-es/network/bakers.js +1 -0
- package/lib-es/network/bakers.js.map +1 -1
- package/package.json +5 -4
- package/src/logic/listOperations.test.ts +101 -0
- package/src/logic/listOperations.ts +24 -7
- package/src/network/bakers.ts +1 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/coin-tezos@1.
|
|
2
|
+
> @ledgerhq/coin-tezos@1.1.0 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-tezos
|
|
3
3
|
> tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @ledgerhq/coin-tezos
|
|
2
2
|
|
|
3
|
+
## 1.2.0-next.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#9126](https://github.com/LedgerHQ/ledger-live/pull/9126) [`339a611`](https://github.com/LedgerHQ/ledger-live/commit/339a61190c8bd9bb125f7fd3e3fbdaa9b31fcb58) Thanks [@jprudent](https://github.com/jprudent)! - Fix addresses on operations
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`da67b55`](https://github.com/LedgerHQ/ledger-live/commit/da67b5511b22553f7e3e089eca2e363a5e3cbffe), [`0a4413d`](https://github.com/LedgerHQ/ledger-live/commit/0a4413dd5cf50967c27b39bbd7dd9222e6322a60)]:
|
|
12
|
+
- @ledgerhq/cryptoassets@13.12.0-next.0
|
|
13
|
+
- @ledgerhq/coin-framework@2.1.0-next.0
|
|
14
|
+
- @ledgerhq/types-live@6.60.0-next.0
|
|
15
|
+
|
|
16
|
+
## 1.1.0
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- [#8908](https://github.com/LedgerHQ/ledger-live/pull/8908) [`5ad0782`](https://github.com/LedgerHQ/ledger-live/commit/5ad07824ab794b826b47cb1136bba239b1c44322) Thanks [@qperrot](https://github.com/qperrot)! - Fix device actions on tezos
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [[`58c1a9c`](https://github.com/LedgerHQ/ledger-live/commit/58c1a9c68b2ce2ebef9dbd7af00ae09efd7a29dc), [`ff40e9a`](https://github.com/LedgerHQ/ledger-live/commit/ff40e9a00d325e5b46cb069936ba2a5781c601b5)]:
|
|
25
|
+
- @ledgerhq/coin-framework@2.0.0
|
|
26
|
+
- @ledgerhq/cryptoassets@13.11.0
|
|
27
|
+
|
|
3
28
|
## 1.1.0-next.0
|
|
4
29
|
|
|
5
30
|
### Minor Changes
|
|
@@ -8,9 +33,9 @@
|
|
|
8
33
|
|
|
9
34
|
### Patch Changes
|
|
10
35
|
|
|
11
|
-
- Updated dependencies [[`ff40e9a`](https://github.com/LedgerHQ/ledger-live/commit/ff40e9a00d325e5b46cb069936ba2a5781c601b5)]:
|
|
36
|
+
- Updated dependencies [[`58c1a9c`](https://github.com/LedgerHQ/ledger-live/commit/58c1a9c68b2ce2ebef9dbd7af00ae09efd7a29dc), [`ff40e9a`](https://github.com/LedgerHQ/ledger-live/commit/ff40e9a00d325e5b46cb069936ba2a5781c601b5)]:
|
|
37
|
+
- @ledgerhq/coin-framework@2.0.0-next.0
|
|
12
38
|
- @ledgerhq/cryptoassets@13.11.0-next.0
|
|
13
|
-
- @ledgerhq/coin-framework@1.0.1-next.0
|
|
14
39
|
|
|
15
40
|
## 1.0.0
|
|
16
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listOperations.d.ts","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listOperations.d.ts","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,yBAAyB,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,CAchC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listOperations = listOperations;
|
|
4
4
|
const network_1 = require("../network");
|
|
5
|
+
const logs_1 = require("@ledgerhq/logs");
|
|
5
6
|
const types_1 = require("../network/types");
|
|
6
7
|
async function listOperations(address, { token, limit }) {
|
|
7
8
|
let options = { limit: limit };
|
|
@@ -10,21 +11,35 @@ async function listOperations(address, { token, limit }) {
|
|
|
10
11
|
}
|
|
11
12
|
const operations = await network_1.tzkt.getAccountOperations(address, options);
|
|
12
13
|
const lastOperation = operations.slice(-1)[0];
|
|
13
|
-
const
|
|
14
|
+
const nextToken = lastOperation ? JSON.stringify(lastOperation?.id) : "";
|
|
14
15
|
return [
|
|
15
16
|
operations
|
|
16
17
|
.filter(op => (0, types_1.isAPITransactionType)(op) || (0, types_1.isAPIDelegationType)(op))
|
|
17
18
|
.reduce((acc, op) => acc.concat(convertOperation(address, op)), []),
|
|
18
|
-
|
|
19
|
+
nextToken,
|
|
19
20
|
];
|
|
20
21
|
}
|
|
22
|
+
// note that "initiator" of APITransactionType is never used in the conversion
|
|
21
23
|
function convertOperation(address, operation) {
|
|
22
24
|
const { amount, hash, storageFee, sender, timestamp, type, counter } = operation;
|
|
23
|
-
let targetAddress =
|
|
24
|
-
if ((0, types_1.isAPITransactionType)(operation)
|
|
25
|
-
targetAddress = operation
|
|
25
|
+
let targetAddress = undefined;
|
|
26
|
+
if ((0, types_1.isAPITransactionType)(operation)) {
|
|
27
|
+
targetAddress = operation?.target?.address;
|
|
26
28
|
}
|
|
29
|
+
else if ((0, types_1.isAPIDelegationType)(operation)) {
|
|
30
|
+
// delegate and undelegate has the type, but hold the address in different fields
|
|
31
|
+
targetAddress = operation?.newDelegate?.address || operation?.prevDelegate?.address;
|
|
32
|
+
}
|
|
33
|
+
const recipients = [];
|
|
34
|
+
if (!targetAddress) {
|
|
35
|
+
(0, logs_1.log)("coin:tezos", "(logic/operations): No target address found for operation", operation);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
recipients.push(targetAddress);
|
|
39
|
+
}
|
|
40
|
+
const senders = sender?.address ? [sender.address] : [];
|
|
27
41
|
return {
|
|
42
|
+
// hash id defined nullable in the tzkt API, but I wonder when it would be null ?
|
|
28
43
|
hash: hash ?? "",
|
|
29
44
|
address,
|
|
30
45
|
type: type,
|
|
@@ -36,8 +51,8 @@ function convertOperation(address, operation) {
|
|
|
36
51
|
height: operation.level,
|
|
37
52
|
time: new Date(operation.timestamp),
|
|
38
53
|
},
|
|
39
|
-
senders:
|
|
40
|
-
recipients:
|
|
54
|
+
senders: senders,
|
|
55
|
+
recipients: recipients,
|
|
41
56
|
date: new Date(timestamp),
|
|
42
57
|
transactionSequenceNumber: counter,
|
|
43
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listOperations.js","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"listOperations.js","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":";;AA0BA,wCAiBC;AA3CD,wCAAkC;AAClC,yCAAqC;AACrC,4CAK0B;AAmBnB,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,EAAE,KAAK,EAAE,KAAK,EAAsC;IAEpD,IAAI,OAAO,GAAwC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACpE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,cAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,OAAO;QACL,UAAU;aACP,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,4BAAoB,EAAC,EAAE,CAAC,IAAI,IAAA,2BAAmB,EAAC,EAAE,CAAC,CAAC;aACjE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAiB,CAAC;QACpF,SAAS;KACV,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,gBAAgB,CACvB,OAAe,EACf,SAAiD;IAEjD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAEjF,IAAI,aAAa,GAAG,SAAS,CAAC;IAC9B,IAAI,IAAA,4BAAoB,EAAC,SAAS,CAAC,EAAE,CAAC;QACpC,aAAa,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;IAC7C,CAAC;SAAM,IAAI,IAAA,2BAAmB,EAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,iFAAiF;QACjF,aAAa,GAAG,SAAS,EAAE,WAAW,EAAE,OAAO,IAAI,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC;IACtF,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAA,UAAG,EAAC,YAAY,EAAE,2DAA2D,EAAE,SAAS,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExD,OAAO;QACL,iFAAiF;QACjF,IAAI,EAAE,IAAI,IAAI,EAAE;QAChB,OAAO;QACP,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,+CAA+C;QAC/C,GAAG,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC5B,KAAK,EAAE;YACL,IAAI,EAAE,SAAS,CAAC,KAAK;YACrB,MAAM,EAAE,SAAS,CAAC,KAAK;YACvB,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;SACpC;QACD,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;QACzB,yBAAyB,EAAE,OAAO;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listOperations.test.d.ts","sourceRoot":"","sources":["../../src/logic/listOperations.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const listOperations_1 = require("./listOperations");
|
|
4
|
+
const mockNetworkGetTransactions = jest.fn();
|
|
5
|
+
jest.mock("../network", () => ({
|
|
6
|
+
tzkt: {
|
|
7
|
+
getAccountOperations: async () => {
|
|
8
|
+
return mockNetworkGetTransactions();
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
}));
|
|
12
|
+
describe("listOperations", () => {
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
mockNetworkGetTransactions.mockClear();
|
|
15
|
+
});
|
|
16
|
+
it("should return no operations", async () => {
|
|
17
|
+
// Given
|
|
18
|
+
mockNetworkGetTransactions.mockResolvedValue([]);
|
|
19
|
+
// When
|
|
20
|
+
const [results, token] = await (0, listOperations_1.listOperations)("any address", {});
|
|
21
|
+
// Then
|
|
22
|
+
expect(results).toEqual([]);
|
|
23
|
+
expect(token).toEqual("");
|
|
24
|
+
});
|
|
25
|
+
const someDestinationAddress = "tz3Vq38qYD3GEbWcXHMLt5PaASZrkDtEiA8D";
|
|
26
|
+
const someSenderAddress = "tz2CVMDVA16dD9A7kpWym2ptGDhs5zUhwWXr";
|
|
27
|
+
const delegate = {
|
|
28
|
+
type: "delegation",
|
|
29
|
+
id: 111,
|
|
30
|
+
level: 2702551,
|
|
31
|
+
block: "BMJ1ZQ6",
|
|
32
|
+
timestamp: "2022-09-12T01:36:59Z",
|
|
33
|
+
amount: 724846,
|
|
34
|
+
sender: {
|
|
35
|
+
address: someSenderAddress,
|
|
36
|
+
},
|
|
37
|
+
counter: 65214462,
|
|
38
|
+
prevDelegate: {
|
|
39
|
+
address: someDestinationAddress,
|
|
40
|
+
},
|
|
41
|
+
newDelegate: null,
|
|
42
|
+
};
|
|
43
|
+
const undelegate = {
|
|
44
|
+
...delegate,
|
|
45
|
+
id: 222,
|
|
46
|
+
prevDelegate: null,
|
|
47
|
+
newDelegate: { address: someDestinationAddress },
|
|
48
|
+
};
|
|
49
|
+
const transfer = {
|
|
50
|
+
...delegate,
|
|
51
|
+
id: 333,
|
|
52
|
+
initiator: null,
|
|
53
|
+
type: "transaction",
|
|
54
|
+
target: { address: someDestinationAddress },
|
|
55
|
+
};
|
|
56
|
+
it.each([undelegate, delegate, transfer])("should return operation with proper recipient list", async (operation) => {
|
|
57
|
+
// Given
|
|
58
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
59
|
+
// When
|
|
60
|
+
const [results, token] = await (0, listOperations_1.listOperations)("any address", {});
|
|
61
|
+
// Then
|
|
62
|
+
expect(results.length).toEqual(1);
|
|
63
|
+
expect(results[0].recipients).toEqual([someDestinationAddress]);
|
|
64
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
65
|
+
});
|
|
66
|
+
it.each([
|
|
67
|
+
{ ...undelegate, newDelegate: null, prevDelegate: null },
|
|
68
|
+
{ ...transfer, target: null },
|
|
69
|
+
])("should return empty recipient list when no target can be found", async (operation) => {
|
|
70
|
+
// Given
|
|
71
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
72
|
+
// When
|
|
73
|
+
const [results, token] = await (0, listOperations_1.listOperations)("any address", {});
|
|
74
|
+
// Then
|
|
75
|
+
expect(results.length).toEqual(1);
|
|
76
|
+
expect(results[0].recipients).toEqual([]);
|
|
77
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
78
|
+
});
|
|
79
|
+
it("should return empty sender list when no sender can be found", async () => {
|
|
80
|
+
// Given
|
|
81
|
+
const operation = { ...undelegate, sender: null };
|
|
82
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
83
|
+
// When
|
|
84
|
+
const [results, token] = await (0, listOperations_1.listOperations)("any address", {});
|
|
85
|
+
// Then
|
|
86
|
+
expect(results.length).toEqual(1);
|
|
87
|
+
expect(results[0].senders).toEqual([]);
|
|
88
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=listOperations.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listOperations.test.js","sourceRoot":"","sources":["../../src/logic/listOperations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bakers.d.ts","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"bakers.d.ts","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,KAAK,8DA6BjB,CAAC;AAIF,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,KAAK,EAAE,CAItD,CAAC;AAKF,eAAO,MAAM,qBAAqB,uBAAwB,MAAM,EAAE,KAAG,KAAK,EAEzE,CAAC;AAEF,eAAO,MAAM,UAAU,uBAA8B,MAAM,EAAE,KAAG,OAAO,CAAC,KAAK,EAAE,CAG9E,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE5D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,CA2B5F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEjE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAMxE;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,CAKxC;AAED,eAAO,MAAM,OAAO,SAAU,aAAa,KAAG,KAAK,GAAG,SAqBrD,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,KAAK,EAAE,KAAG,IAG/C,CAAC"}
|
package/lib/network/bakers.js
CHANGED
|
@@ -30,6 +30,7 @@ exports.cache = (0, cache_1.makeLRUCache)(async () => {
|
|
|
30
30
|
bakers.push(baker);
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
|
+
bakers.sort((a, b) => (a.name > b.name ? 1 : -1));
|
|
33
34
|
}
|
|
34
35
|
const ledgerBakerIndex = bakers.findIndex(baker => baker.address === bakers_whitelist_default_1.ledgerValidatorAddress);
|
|
35
36
|
const [ledgerBaker] = bakers.splice(ledgerBakerIndex, 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bakers.js","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"bakers.js","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listOperations.d.ts","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listOperations.d.ts","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,yBAAyB,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,CAchC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { tzkt } from "../network";
|
|
2
|
+
import { log } from "@ledgerhq/logs";
|
|
2
3
|
import { isAPIDelegationType, isAPITransactionType, } from "../network/types";
|
|
3
4
|
export async function listOperations(address, { token, limit }) {
|
|
4
5
|
let options = { limit: limit };
|
|
@@ -7,21 +8,35 @@ export async function listOperations(address, { token, limit }) {
|
|
|
7
8
|
}
|
|
8
9
|
const operations = await tzkt.getAccountOperations(address, options);
|
|
9
10
|
const lastOperation = operations.slice(-1)[0];
|
|
10
|
-
const
|
|
11
|
+
const nextToken = lastOperation ? JSON.stringify(lastOperation?.id) : "";
|
|
11
12
|
return [
|
|
12
13
|
operations
|
|
13
14
|
.filter(op => isAPITransactionType(op) || isAPIDelegationType(op))
|
|
14
15
|
.reduce((acc, op) => acc.concat(convertOperation(address, op)), []),
|
|
15
|
-
|
|
16
|
+
nextToken,
|
|
16
17
|
];
|
|
17
18
|
}
|
|
19
|
+
// note that "initiator" of APITransactionType is never used in the conversion
|
|
18
20
|
function convertOperation(address, operation) {
|
|
19
21
|
const { amount, hash, storageFee, sender, timestamp, type, counter } = operation;
|
|
20
|
-
let targetAddress =
|
|
21
|
-
if (isAPITransactionType(operation)
|
|
22
|
-
targetAddress = operation
|
|
22
|
+
let targetAddress = undefined;
|
|
23
|
+
if (isAPITransactionType(operation)) {
|
|
24
|
+
targetAddress = operation?.target?.address;
|
|
23
25
|
}
|
|
26
|
+
else if (isAPIDelegationType(operation)) {
|
|
27
|
+
// delegate and undelegate has the type, but hold the address in different fields
|
|
28
|
+
targetAddress = operation?.newDelegate?.address || operation?.prevDelegate?.address;
|
|
29
|
+
}
|
|
30
|
+
const recipients = [];
|
|
31
|
+
if (!targetAddress) {
|
|
32
|
+
log("coin:tezos", "(logic/operations): No target address found for operation", operation);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
recipients.push(targetAddress);
|
|
36
|
+
}
|
|
37
|
+
const senders = sender?.address ? [sender.address] : [];
|
|
24
38
|
return {
|
|
39
|
+
// hash id defined nullable in the tzkt API, but I wonder when it would be null ?
|
|
25
40
|
hash: hash ?? "",
|
|
26
41
|
address,
|
|
27
42
|
type: type,
|
|
@@ -33,8 +48,8 @@ function convertOperation(address, operation) {
|
|
|
33
48
|
height: operation.level,
|
|
34
49
|
time: new Date(operation.timestamp),
|
|
35
50
|
},
|
|
36
|
-
senders:
|
|
37
|
-
recipients:
|
|
51
|
+
senders: senders,
|
|
52
|
+
recipients: recipients,
|
|
38
53
|
date: new Date(timestamp),
|
|
39
54
|
transactionSequenceNumber: counter,
|
|
40
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listOperations.js","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAGL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAmB1B,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,EAAE,KAAK,EAAE,KAAK,EAAsC;IAEpD,IAAI,OAAO,GAAwC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACpE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,
|
|
1
|
+
{"version":3,"file":"listOperations.js","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listOperations.test.d.ts","sourceRoot":"","sources":["../../src/logic/listOperations.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { listOperations } from "./listOperations";
|
|
2
|
+
const mockNetworkGetTransactions = jest.fn();
|
|
3
|
+
jest.mock("../network", () => ({
|
|
4
|
+
tzkt: {
|
|
5
|
+
getAccountOperations: async () => {
|
|
6
|
+
return mockNetworkGetTransactions();
|
|
7
|
+
},
|
|
8
|
+
},
|
|
9
|
+
}));
|
|
10
|
+
describe("listOperations", () => {
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
mockNetworkGetTransactions.mockClear();
|
|
13
|
+
});
|
|
14
|
+
it("should return no operations", async () => {
|
|
15
|
+
// Given
|
|
16
|
+
mockNetworkGetTransactions.mockResolvedValue([]);
|
|
17
|
+
// When
|
|
18
|
+
const [results, token] = await listOperations("any address", {});
|
|
19
|
+
// Then
|
|
20
|
+
expect(results).toEqual([]);
|
|
21
|
+
expect(token).toEqual("");
|
|
22
|
+
});
|
|
23
|
+
const someDestinationAddress = "tz3Vq38qYD3GEbWcXHMLt5PaASZrkDtEiA8D";
|
|
24
|
+
const someSenderAddress = "tz2CVMDVA16dD9A7kpWym2ptGDhs5zUhwWXr";
|
|
25
|
+
const delegate = {
|
|
26
|
+
type: "delegation",
|
|
27
|
+
id: 111,
|
|
28
|
+
level: 2702551,
|
|
29
|
+
block: "BMJ1ZQ6",
|
|
30
|
+
timestamp: "2022-09-12T01:36:59Z",
|
|
31
|
+
amount: 724846,
|
|
32
|
+
sender: {
|
|
33
|
+
address: someSenderAddress,
|
|
34
|
+
},
|
|
35
|
+
counter: 65214462,
|
|
36
|
+
prevDelegate: {
|
|
37
|
+
address: someDestinationAddress,
|
|
38
|
+
},
|
|
39
|
+
newDelegate: null,
|
|
40
|
+
};
|
|
41
|
+
const undelegate = {
|
|
42
|
+
...delegate,
|
|
43
|
+
id: 222,
|
|
44
|
+
prevDelegate: null,
|
|
45
|
+
newDelegate: { address: someDestinationAddress },
|
|
46
|
+
};
|
|
47
|
+
const transfer = {
|
|
48
|
+
...delegate,
|
|
49
|
+
id: 333,
|
|
50
|
+
initiator: null,
|
|
51
|
+
type: "transaction",
|
|
52
|
+
target: { address: someDestinationAddress },
|
|
53
|
+
};
|
|
54
|
+
it.each([undelegate, delegate, transfer])("should return operation with proper recipient list", async (operation) => {
|
|
55
|
+
// Given
|
|
56
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
57
|
+
// When
|
|
58
|
+
const [results, token] = await listOperations("any address", {});
|
|
59
|
+
// Then
|
|
60
|
+
expect(results.length).toEqual(1);
|
|
61
|
+
expect(results[0].recipients).toEqual([someDestinationAddress]);
|
|
62
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
63
|
+
});
|
|
64
|
+
it.each([
|
|
65
|
+
{ ...undelegate, newDelegate: null, prevDelegate: null },
|
|
66
|
+
{ ...transfer, target: null },
|
|
67
|
+
])("should return empty recipient list when no target can be found", async (operation) => {
|
|
68
|
+
// Given
|
|
69
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
70
|
+
// When
|
|
71
|
+
const [results, token] = await listOperations("any address", {});
|
|
72
|
+
// Then
|
|
73
|
+
expect(results.length).toEqual(1);
|
|
74
|
+
expect(results[0].recipients).toEqual([]);
|
|
75
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
76
|
+
});
|
|
77
|
+
it("should return empty sender list when no sender can be found", async () => {
|
|
78
|
+
// Given
|
|
79
|
+
const operation = { ...undelegate, sender: null };
|
|
80
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
81
|
+
// When
|
|
82
|
+
const [results, token] = await listOperations("any address", {});
|
|
83
|
+
// Then
|
|
84
|
+
expect(results.length).toEqual(1);
|
|
85
|
+
expect(results[0].senders).toEqual([]);
|
|
86
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=listOperations.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listOperations.test.js","sourceRoot":"","sources":["../../src/logic/listOperations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bakers.d.ts","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"bakers.d.ts","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,KAAK,8DA6BjB,CAAC;AAIF,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,KAAK,EAAE,CAItD,CAAC;AAKF,eAAO,MAAM,qBAAqB,uBAAwB,MAAM,EAAE,KAAG,KAAK,EAEzE,CAAC;AAEF,eAAO,MAAM,UAAU,uBAA8B,MAAM,EAAE,KAAG,OAAO,CAAC,KAAK,EAAE,CAG9E,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE5D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,CA2B5F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEjE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAMxE;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,CAKxC;AAED,eAAO,MAAM,OAAO,SAAU,aAAa,KAAG,KAAK,GAAG,SAqBrD,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,KAAK,EAAE,KAAG,IAG/C,CAAC"}
|
package/lib-es/network/bakers.js
CHANGED
|
@@ -19,6 +19,7 @@ export const cache = makeLRUCache(async () => {
|
|
|
19
19
|
bakers.push(baker);
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
+
bakers.sort((a, b) => (a.name > b.name ? 1 : -1));
|
|
22
23
|
}
|
|
23
24
|
const ledgerBakerIndex = bakers.findIndex(baker => baker.address === ledgerValidatorAddress);
|
|
24
25
|
const [ledgerBaker] = bakers.splice(ledgerBakerIndex, 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bakers.js","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,OAAO,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,UAAU,MAAM,WAAW,CAAC;AAyBnC,MAAM,CAAC,MAAM,KAAK,GAAG,YAAY,CAC/B,KAAK,IAAsB,EAAE;IAC3B,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAkB;QAC9C,GAAG,EAAE,GAAG,kBAAkB,YAAY;KACvC,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACxD,IAAI;aACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC;aAC7C,OAAO,CAAC,GAAG,CAAC,EAAE;YACb,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAE3B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"bakers.js","sourceRoot":"","sources":["../../src/network/bakers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,OAAO,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,UAAU,MAAM,WAAW,CAAC;AAyBnC,MAAM,CAAC,MAAM,KAAK,GAAG,YAAY,CAC/B,KAAK,IAAsB,EAAE;IAC3B,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAkB;QAC9C,GAAG,EAAE,GAAG,kBAAkB,YAAY;KACvC,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACxD,IAAI;aACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC;aAC7C,OAAO,CAAC,GAAG,CAAC,EAAE;YACb,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAE3B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QACL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,sBAAsB,CAAC,CAAC;IAC7F,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAEzD,GAAG,CAAC,cAAc,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3D,OAAO,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;AAClC,CAAC,EACD,GAAG,EAAE,CAAC,EAAE,CACT,CAAC;AAEF,IAAI,WAAW,GAAY,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAsB,EAAE;IACzD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtC,WAAW,GAAG,SAAS,CAAC;IACxB,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,SAAS,SAAS,CAAC,GAAY,EAAE,SAAmB;IAClD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,kBAA4B,EAAW,EAAE;IAC7E,OAAO,SAAS,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,kBAA4B,EAAoB,EAAE;IACjF,WAAW,GAAG,MAAM,KAAK,EAAE,CAAC;IAC5B,OAAO,SAAS,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAoB;IAC3D,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAChC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,CAC5E,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB;SACxC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;SAC/D,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU;SACjC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;SACtC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrC,MAAM,wBAAwB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAC1E,MAAM,2BAA2B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5E,OAAO;QACL,SAAS;QACT,SAAS;QACT,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAChC,KAAK,EAAE,IAAI;QACX,wBAAwB;QACxB,2BAA2B;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAoB;IACtD,OAAO,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAoB;IAEpB,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAmB,EAAqB,EAAE;IAChE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9D,IACE,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,YAAY,KAAK,QAAQ;QAChC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3D,YAAY,IAAI,CAAC;QACjB,YAAY,IAAI,CAAC,EACjB,CAAC;QACD,OAAO;YACL,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,GAAG,IAAI;YAC3D,cAAc,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACnD,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAe,EAAQ,EAAE;IACrD,GAAG,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-tezos",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-next.0",
|
|
4
4
|
"description": "Tezos Coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -77,14 +77,14 @@
|
|
|
77
77
|
"invariant": "^2.2.4",
|
|
78
78
|
"lodash": "^4.17.21",
|
|
79
79
|
"rxjs": "^7.8.1",
|
|
80
|
-
"@ledgerhq/coin-framework": "^1.0
|
|
81
|
-
"@ledgerhq/cryptoassets": "^13.
|
|
80
|
+
"@ledgerhq/coin-framework": "^2.1.0-next.0",
|
|
81
|
+
"@ledgerhq/cryptoassets": "^13.12.0-next.0",
|
|
82
82
|
"@ledgerhq/devices": "8.4.4",
|
|
83
83
|
"@ledgerhq/errors": "^6.19.1",
|
|
84
84
|
"@ledgerhq/live-network": "^2.0.4",
|
|
85
85
|
"@ledgerhq/logs": "^6.12.0",
|
|
86
86
|
"@ledgerhq/types-cryptoassets": "^7.19.0",
|
|
87
|
-
"@ledgerhq/types-live": "^6.
|
|
87
|
+
"@ledgerhq/types-live": "^6.60.0-next.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@faker-js/faker": "^8.4.1",
|
|
@@ -113,6 +113,7 @@
|
|
|
113
113
|
"lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache",
|
|
114
114
|
"lint:fix": "pnpm lint --fix",
|
|
115
115
|
"test": "jest",
|
|
116
|
+
"test-watch": "jest --watch",
|
|
116
117
|
"test-integ": "jest --config=jest.integ.config.js",
|
|
117
118
|
"unimported": "unimported"
|
|
118
119
|
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { listOperations } from "./listOperations";
|
|
2
|
+
import { APIDelegationType, APITransactionType } from "../network/types";
|
|
3
|
+
|
|
4
|
+
const mockNetworkGetTransactions = jest.fn();
|
|
5
|
+
jest.mock("../network", () => ({
|
|
6
|
+
tzkt: {
|
|
7
|
+
getAccountOperations: async () => {
|
|
8
|
+
return mockNetworkGetTransactions();
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
describe("listOperations", () => {
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
mockNetworkGetTransactions.mockClear();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("should return no operations", async () => {
|
|
19
|
+
// Given
|
|
20
|
+
mockNetworkGetTransactions.mockResolvedValue([]);
|
|
21
|
+
// When
|
|
22
|
+
const [results, token] = await listOperations("any address", {});
|
|
23
|
+
// Then
|
|
24
|
+
expect(results).toEqual([]);
|
|
25
|
+
expect(token).toEqual("");
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const someDestinationAddress = "tz3Vq38qYD3GEbWcXHMLt5PaASZrkDtEiA8D";
|
|
29
|
+
const someSenderAddress = "tz2CVMDVA16dD9A7kpWym2ptGDhs5zUhwWXr";
|
|
30
|
+
const delegate: APIDelegationType = {
|
|
31
|
+
type: "delegation",
|
|
32
|
+
id: 111,
|
|
33
|
+
level: 2702551,
|
|
34
|
+
block: "BMJ1ZQ6",
|
|
35
|
+
timestamp: "2022-09-12T01:36:59Z",
|
|
36
|
+
amount: 724846,
|
|
37
|
+
sender: {
|
|
38
|
+
address: someSenderAddress,
|
|
39
|
+
},
|
|
40
|
+
counter: 65214462,
|
|
41
|
+
prevDelegate: {
|
|
42
|
+
address: someDestinationAddress,
|
|
43
|
+
},
|
|
44
|
+
newDelegate: null,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const undelegate: APIDelegationType = {
|
|
48
|
+
...delegate,
|
|
49
|
+
id: 222,
|
|
50
|
+
prevDelegate: null,
|
|
51
|
+
newDelegate: { address: someDestinationAddress },
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const transfer: APITransactionType = {
|
|
55
|
+
...delegate,
|
|
56
|
+
id: 333,
|
|
57
|
+
initiator: null,
|
|
58
|
+
type: "transaction",
|
|
59
|
+
target: { address: someDestinationAddress },
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
it.each([undelegate, delegate, transfer])(
|
|
63
|
+
"should return operation with proper recipient list",
|
|
64
|
+
async operation => {
|
|
65
|
+
// Given
|
|
66
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
67
|
+
// When
|
|
68
|
+
const [results, token] = await listOperations("any address", {});
|
|
69
|
+
// Then
|
|
70
|
+
expect(results.length).toEqual(1);
|
|
71
|
+
expect(results[0].recipients).toEqual([someDestinationAddress]);
|
|
72
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
73
|
+
},
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
it.each([
|
|
77
|
+
{ ...undelegate, newDelegate: null, prevDelegate: null },
|
|
78
|
+
{ ...transfer, target: null },
|
|
79
|
+
])("should return empty recipient list when no target can be found", async operation => {
|
|
80
|
+
// Given
|
|
81
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
82
|
+
// When
|
|
83
|
+
const [results, token] = await listOperations("any address", {});
|
|
84
|
+
// Then
|
|
85
|
+
expect(results.length).toEqual(1);
|
|
86
|
+
expect(results[0].recipients).toEqual([]);
|
|
87
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("should return empty sender list when no sender can be found", async () => {
|
|
91
|
+
// Given
|
|
92
|
+
const operation = { ...undelegate, sender: null };
|
|
93
|
+
mockNetworkGetTransactions.mockResolvedValue([operation]);
|
|
94
|
+
// When
|
|
95
|
+
const [results, token] = await listOperations("any address", {});
|
|
96
|
+
// Then
|
|
97
|
+
expect(results.length).toEqual(1);
|
|
98
|
+
expect(results[0].senders).toEqual([]);
|
|
99
|
+
expect(token).toEqual(JSON.stringify(operation.id));
|
|
100
|
+
});
|
|
101
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { tzkt } from "../network";
|
|
2
|
+
import { log } from "@ledgerhq/logs";
|
|
2
3
|
import {
|
|
3
4
|
type APIDelegationType,
|
|
4
5
|
type APITransactionType,
|
|
@@ -33,25 +34,41 @@ export async function listOperations(
|
|
|
33
34
|
}
|
|
34
35
|
const operations = await tzkt.getAccountOperations(address, options);
|
|
35
36
|
const lastOperation = operations.slice(-1)[0];
|
|
36
|
-
const
|
|
37
|
+
const nextToken = lastOperation ? JSON.stringify(lastOperation?.id) : "";
|
|
37
38
|
return [
|
|
38
39
|
operations
|
|
39
40
|
.filter(op => isAPITransactionType(op) || isAPIDelegationType(op))
|
|
40
41
|
.reduce((acc, op) => acc.concat(convertOperation(address, op)), [] as Operation[]),
|
|
41
|
-
|
|
42
|
+
nextToken,
|
|
42
43
|
];
|
|
43
44
|
}
|
|
44
45
|
|
|
46
|
+
// note that "initiator" of APITransactionType is never used in the conversion
|
|
45
47
|
function convertOperation(
|
|
46
48
|
address: string,
|
|
47
49
|
operation: APITransactionType | APIDelegationType,
|
|
48
50
|
): Operation {
|
|
49
51
|
const { amount, hash, storageFee, sender, timestamp, type, counter } = operation;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
let targetAddress = undefined;
|
|
54
|
+
if (isAPITransactionType(operation)) {
|
|
55
|
+
targetAddress = operation?.target?.address;
|
|
56
|
+
} else if (isAPIDelegationType(operation)) {
|
|
57
|
+
// delegate and undelegate has the type, but hold the address in different fields
|
|
58
|
+
targetAddress = operation?.newDelegate?.address || operation?.prevDelegate?.address;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const recipients = [];
|
|
62
|
+
if (!targetAddress) {
|
|
63
|
+
log("coin:tezos", "(logic/operations): No target address found for operation", operation);
|
|
64
|
+
} else {
|
|
65
|
+
recipients.push(targetAddress);
|
|
53
66
|
}
|
|
67
|
+
|
|
68
|
+
const senders = sender?.address ? [sender.address] : [];
|
|
69
|
+
|
|
54
70
|
return {
|
|
71
|
+
// hash id defined nullable in the tzkt API, but I wonder when it would be null ?
|
|
55
72
|
hash: hash ?? "",
|
|
56
73
|
address,
|
|
57
74
|
type: type,
|
|
@@ -63,8 +80,8 @@ function convertOperation(
|
|
|
63
80
|
height: operation.level,
|
|
64
81
|
time: new Date(operation.timestamp),
|
|
65
82
|
},
|
|
66
|
-
senders:
|
|
67
|
-
recipients:
|
|
83
|
+
senders: senders,
|
|
84
|
+
recipients: recipients,
|
|
68
85
|
date: new Date(timestamp),
|
|
69
86
|
transactionSequenceNumber: counter,
|
|
70
87
|
};
|
package/src/network/bakers.ts
CHANGED