@ledgerhq/coin-tezos 2.2.0-next.0 → 2.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 +16 -8
- package/lib/api/index.js +3 -0
- package/lib/api/index.js.map +1 -1
- package/lib/api/index.test.js +18 -4
- package/lib/api/index.test.js.map +1 -1
- package/lib/logic/tezosToolkit.d.ts.map +1 -1
- package/lib/logic/tezosToolkit.js +9 -4
- package/lib/logic/tezosToolkit.js.map +1 -1
- package/lib-es/api/index.js +3 -0
- package/lib-es/api/index.js.map +1 -1
- package/lib-es/api/index.test.js +18 -4
- package/lib-es/api/index.test.js.map +1 -1
- package/lib-es/logic/tezosToolkit.d.ts.map +1 -1
- package/lib-es/logic/tezosToolkit.js +9 -4
- package/lib-es/logic/tezosToolkit.js.map +1 -1
- package/package.json +5 -5
- package/src/api/index.test.ts +23 -6
- package/src/api/index.ts +5 -0
- package/src/logic/tezosToolkit.ts +9 -5
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/coin-tezos@2.1.0 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-tezos
|
|
2
|
+
> @ledgerhq/coin-tezos@2.1.1-nightly.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,20 +1,28 @@
|
|
|
1
1
|
# @ledgerhq/coin-tezos
|
|
2
2
|
|
|
3
|
-
## 2.2.0-
|
|
3
|
+
## 2.2.0-nightly.1
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
-
- [#
|
|
7
|
+
- [#9755](https://github.com/LedgerHQ/ledger-live/pull/9755) [`c3c847b`](https://github.com/LedgerHQ/ledger-live/commit/c3c847bab4d01ec7cc1078344b519218806340ed) Thanks [@jnicoulaud-ledger](https://github.com/jnicoulaud-ledger)! - Fix stellar and tezos using static global variables, preventing multiple instances with different settings
|
|
8
8
|
|
|
9
|
-
- [#
|
|
9
|
+
- [#9777](https://github.com/LedgerHQ/ledger-live/pull/9777) [`f3cae52`](https://github.com/LedgerHQ/ledger-live/commit/f3cae527ea376bee52a273a9566c69272701b7bb) Thanks [@jnicoulaud-ledger](https://github.com/jnicoulaud-ledger)! - fix tezos fee estimation silently catching errors
|
|
10
10
|
|
|
11
11
|
### Patch Changes
|
|
12
12
|
|
|
13
|
-
- Updated dependencies [[`
|
|
14
|
-
- @ledgerhq/
|
|
15
|
-
- @ledgerhq/
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
- Updated dependencies [[`1e56618`](https://github.com/LedgerHQ/ledger-live/commit/1e56618a3c31e7980074072e0aae9422c145f4b3)]:
|
|
14
|
+
- @ledgerhq/cryptoassets@13.15.0-nightly.1
|
|
15
|
+
- @ledgerhq/coin-framework@2.6.0-nightly.1
|
|
16
|
+
|
|
17
|
+
## 2.1.1-nightly.0
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [[`46a9620`](https://github.com/LedgerHQ/ledger-live/commit/46a9620b4ea6343efc28792d3b57bf84ee2a23e8)]:
|
|
22
|
+
- @ledgerhq/types-live@6.66.0-nightly.0
|
|
23
|
+
- @ledgerhq/coin-framework@2.6.0-nightly.0
|
|
24
|
+
- @ledgerhq/cryptoassets@13.14.1-nightly.0
|
|
25
|
+
- @ledgerhq/live-network@2.0.7-nightly.0
|
|
18
26
|
|
|
19
27
|
## 2.1.0
|
|
20
28
|
|
package/lib/api/index.js
CHANGED
|
@@ -54,6 +54,9 @@ async function estimate(transactionIntent) {
|
|
|
54
54
|
amount: transactionIntent.amount,
|
|
55
55
|
},
|
|
56
56
|
});
|
|
57
|
+
if (estimatedFees.taquitoError !== undefined) {
|
|
58
|
+
throw new Error(`Fees estimation failed: ${estimatedFees.taquitoError}`);
|
|
59
|
+
}
|
|
57
60
|
return estimatedFees.estimatedFees;
|
|
58
61
|
}
|
|
59
62
|
async function fetchNextPage(address, state) {
|
package/lib/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;AAsBA,8BAYC;AAlCD,8DAM4C;AAC5C,yCAAqC;AACrC,uDAAyD;AACzD,oCASkB;AAClB,2DAAkC;AAGlC,SAAgB,SAAS,CAAC,MAAmB;IAC3C,gBAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS,EAAT,iBAAS;QACT,OAAO,EAAP,eAAO;QACP,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAV,kBAAU;QACV,SAAS,EAAT,iBAAS;QACT,cAAc,EAAE,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,KAAK,CAClB,iBAA0C,EAC1C,UAAmB;IAEnB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,0BAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACtF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,wBAAgB,EACzC,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,EACrC;QACE,IAAI,EAAE,iBAAiB,CAAC,IAAI;QAC5B,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,iBAAiB,CAAC,MAAM;QAChC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE;KAC9B,CACF,CAAC;IACF,OAAO,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,iBAA0C;IAChE,MAAM,iBAAiB,GAAG,MAAM,cAAG,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClF,IAAI,iBAAiB,CAAC,IAAI,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAElF,MAAM,aAAa,GAAG,MAAM,IAAA,oBAAY,EAAC;QACvC,OAAO,EAAE;YACP,OAAO,EAAE,iBAAiB,CAAC,MAAM;YACjC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;YACpC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC1C,IAAI,EAAE,iBAAiB,CAAC,SAAS;SAClC;QACD,WAAW,EAAE;YACX,IAAI,EAAE,iBAAiB,CAAC,IAA0B;YAClD,SAAS,EAAE,iBAAiB,CAAC,SAAS;YACtC,MAAM,EAAE,iBAAiB,CAAC,MAAM;SACjC;KACF,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
package/lib/api/index.test.js
CHANGED
|
@@ -7,13 +7,13 @@ const tzkt_1 = __importDefault(require("../network/tzkt"));
|
|
|
7
7
|
const index_1 = require("./index");
|
|
8
8
|
const DEFAULT_ESTIMATED_FEES = 300n;
|
|
9
9
|
const logicGetTransactions = jest.fn();
|
|
10
|
-
const
|
|
10
|
+
const logicEstimateFees = jest.fn();
|
|
11
11
|
const logicCraftTransactionMock = jest.fn((_account, _transaction) => {
|
|
12
12
|
return { type: undefined, contents: undefined };
|
|
13
13
|
});
|
|
14
14
|
jest.mock("../logic", () => ({
|
|
15
15
|
listOperations: async () => logicGetTransactions(),
|
|
16
|
-
estimateFees: async () =>
|
|
16
|
+
estimateFees: async () => logicEstimateFees(),
|
|
17
17
|
craftTransaction: (account, transaction) => logicCraftTransactionMock(account, transaction),
|
|
18
18
|
rawEncode: () => Promise.resolve("tz1heMGVHQnx7ALDcDKqez8fan64Eyicw4DJ"),
|
|
19
19
|
}));
|
|
@@ -77,14 +77,28 @@ describe("get operations", () => {
|
|
|
77
77
|
describe("Testing craftTransaction function", () => {
|
|
78
78
|
beforeEach(() => jest.clearAllMocks());
|
|
79
79
|
it("should use estimated fees when user does not provide them for crafting a transaction ", async () => {
|
|
80
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
80
81
|
await api.craftTransaction({ type: "send" });
|
|
81
|
-
expect(
|
|
82
|
+
expect(logicEstimateFees).toHaveBeenCalledTimes(1);
|
|
82
83
|
expect(logicCraftTransactionMock).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({ fee: { fees: DEFAULT_ESTIMATED_FEES.toString() } }));
|
|
83
84
|
});
|
|
84
85
|
it.each([[1n], [50n], [99n]])("should use custom user fees when user provides it for crafting a transaction", async (customFees) => {
|
|
86
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
85
87
|
await api.craftTransaction({ type: "send" }, customFees);
|
|
86
|
-
expect(
|
|
88
|
+
expect(logicEstimateFees).toHaveBeenCalledTimes(0);
|
|
87
89
|
expect(logicCraftTransactionMock).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({ fee: { fees: customFees.toString() } }));
|
|
88
90
|
});
|
|
89
91
|
});
|
|
92
|
+
describe("Testing estimateFees function", () => {
|
|
93
|
+
beforeEach(() => jest.clearAllMocks());
|
|
94
|
+
it("should return estimation from logic module", async () => {
|
|
95
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
96
|
+
const result = await api.estimateFees({ type: "send" });
|
|
97
|
+
expect(result).toEqual(DEFAULT_ESTIMATED_FEES);
|
|
98
|
+
});
|
|
99
|
+
it("should throw taquito errors", async () => {
|
|
100
|
+
logicEstimateFees.mockResolvedValue({ taquitoError: "test" });
|
|
101
|
+
await expect(api.estimateFees({ type: "send" })).rejects.toThrow("Fees estimation failed: test");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
90
104
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/api/index.test.ts"],"names":[],"mappings":";;;;;AAEA,2DAAyC;AACzC,mCAAoC;AAEpC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACvC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/api/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tezosToolkit.d.ts","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tezosToolkit.d.ts","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,wBAAgB,eAAe,IAAI,YAAY,CAQ9C"}
|
|
@@ -6,11 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getTezosToolkit = getTezosToolkit;
|
|
7
7
|
const taquito_1 = require("@taquito/taquito");
|
|
8
8
|
const config_1 = __importDefault(require("../config"));
|
|
9
|
-
|
|
9
|
+
// Tezos client instance is cached to avoid costly rebuild at every request
|
|
10
|
+
// Watch out: cache key is the URL, coin module can be instantiated several times with different URLs
|
|
11
|
+
const servers = new Map();
|
|
10
12
|
function getTezosToolkit() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
const url = config_1.default.getCoinConfig().node.url;
|
|
14
|
+
let server = servers.get(url);
|
|
15
|
+
if (server === undefined) {
|
|
16
|
+
server = new taquito_1.TezosToolkit(url);
|
|
17
|
+
servers.set(url, server);
|
|
13
18
|
}
|
|
14
|
-
return
|
|
19
|
+
return server;
|
|
15
20
|
}
|
|
16
21
|
//# sourceMappingURL=tezosToolkit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tezosToolkit.js","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"tezosToolkit.js","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":";;;;;AAMA,0CAQC;AAdD,8CAAgD;AAChD,uDAAmC;AAEnC,2EAA2E;AAC3E,qGAAqG;AACrG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;AAChD,SAAgB,eAAe;IAC7B,MAAM,GAAG,GAAG,gBAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;IAChD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,IAAI,sBAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/lib-es/api/index.js
CHANGED
|
@@ -48,6 +48,9 @@ async function estimate(transactionIntent) {
|
|
|
48
48
|
amount: transactionIntent.amount,
|
|
49
49
|
},
|
|
50
50
|
});
|
|
51
|
+
if (estimatedFees.taquitoError !== undefined) {
|
|
52
|
+
throw new Error(`Fees estimation failed: ${estimatedFees.taquitoError}`);
|
|
53
|
+
}
|
|
51
54
|
return estimatedFees.estimatedFees;
|
|
52
55
|
}
|
|
53
56
|
async function fetchNextPage(address, state) {
|
package/lib-es/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAKnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,UAAgC,MAAM,WAAW,CAAC;AACzD,OAAO,EACL,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,cAAc,EACd,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAGlC,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS;QACT,OAAO;QACP,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,QAAQ;QACtB,UAAU;QACV,SAAS;QACT,cAAc,EAAE,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,KAAK,CAClB,iBAA0C,EAC1C,UAAmB;IAEnB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACtF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,CACzC,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,EACrC;QACE,IAAI,EAAE,iBAAiB,CAAC,IAAI;QAC5B,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,iBAAiB,CAAC,MAAM;QAChC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE;KAC9B,CACF,CAAC;IACF,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,iBAA0C;IAChE,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClF,IAAI,iBAAiB,CAAC,IAAI,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAElF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC;QACvC,OAAO,EAAE;YACP,OAAO,EAAE,iBAAiB,CAAC,MAAM;YACjC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;YACpC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC1C,IAAI,EAAE,iBAAiB,CAAC,SAAS;SAClC;QACD,WAAW,EAAE;YACX,IAAI,EAAE,iBAAiB,CAAC,IAA0B;YAClD,SAAS,EAAE,iBAAiB,CAAC,SAAS;YACtC,MAAM,EAAE,iBAAiB,CAAC,MAAM;SACjC;KACF,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
package/lib-es/api/index.test.js
CHANGED
|
@@ -2,13 +2,13 @@ import networkApi from "../network/tzkt";
|
|
|
2
2
|
import { createApi } from "./index";
|
|
3
3
|
const DEFAULT_ESTIMATED_FEES = 300n;
|
|
4
4
|
const logicGetTransactions = jest.fn();
|
|
5
|
-
const
|
|
5
|
+
const logicEstimateFees = jest.fn();
|
|
6
6
|
const logicCraftTransactionMock = jest.fn((_account, _transaction) => {
|
|
7
7
|
return { type: undefined, contents: undefined };
|
|
8
8
|
});
|
|
9
9
|
jest.mock("../logic", () => ({
|
|
10
10
|
listOperations: async () => logicGetTransactions(),
|
|
11
|
-
estimateFees: async () =>
|
|
11
|
+
estimateFees: async () => logicEstimateFees(),
|
|
12
12
|
craftTransaction: (account, transaction) => logicCraftTransactionMock(account, transaction),
|
|
13
13
|
rawEncode: () => Promise.resolve("tz1heMGVHQnx7ALDcDKqez8fan64Eyicw4DJ"),
|
|
14
14
|
}));
|
|
@@ -72,14 +72,28 @@ describe("get operations", () => {
|
|
|
72
72
|
describe("Testing craftTransaction function", () => {
|
|
73
73
|
beforeEach(() => jest.clearAllMocks());
|
|
74
74
|
it("should use estimated fees when user does not provide them for crafting a transaction ", async () => {
|
|
75
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
75
76
|
await api.craftTransaction({ type: "send" });
|
|
76
|
-
expect(
|
|
77
|
+
expect(logicEstimateFees).toHaveBeenCalledTimes(1);
|
|
77
78
|
expect(logicCraftTransactionMock).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({ fee: { fees: DEFAULT_ESTIMATED_FEES.toString() } }));
|
|
78
79
|
});
|
|
79
80
|
it.each([[1n], [50n], [99n]])("should use custom user fees when user provides it for crafting a transaction", async (customFees) => {
|
|
81
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
80
82
|
await api.craftTransaction({ type: "send" }, customFees);
|
|
81
|
-
expect(
|
|
83
|
+
expect(logicEstimateFees).toHaveBeenCalledTimes(0);
|
|
82
84
|
expect(logicCraftTransactionMock).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({ fee: { fees: customFees.toString() } }));
|
|
83
85
|
});
|
|
84
86
|
});
|
|
87
|
+
describe("Testing estimateFees function", () => {
|
|
88
|
+
beforeEach(() => jest.clearAllMocks());
|
|
89
|
+
it("should return estimation from logic module", async () => {
|
|
90
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
91
|
+
const result = await api.estimateFees({ type: "send" });
|
|
92
|
+
expect(result).toEqual(DEFAULT_ESTIMATED_FEES);
|
|
93
|
+
});
|
|
94
|
+
it("should throw taquito errors", async () => {
|
|
95
|
+
logicEstimateFees.mockResolvedValue({ taquitoError: "test" });
|
|
96
|
+
await expect(api.estimateFees({ type: "send" })).rejects.toThrow("Fees estimation failed: test");
|
|
97
|
+
});
|
|
98
|
+
});
|
|
85
99
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/api/index.test.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACvC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/api/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tezosToolkit.d.ts","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tezosToolkit.d.ts","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,wBAAgB,eAAe,IAAI,YAAY,CAQ9C"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { TezosToolkit } from "@taquito/taquito";
|
|
2
2
|
import coinConfig from "../config";
|
|
3
|
-
|
|
3
|
+
// Tezos client instance is cached to avoid costly rebuild at every request
|
|
4
|
+
// Watch out: cache key is the URL, coin module can be instantiated several times with different URLs
|
|
5
|
+
const servers = new Map();
|
|
4
6
|
export function getTezosToolkit() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
const url = coinConfig.getCoinConfig().node.url;
|
|
8
|
+
let server = servers.get(url);
|
|
9
|
+
if (server === undefined) {
|
|
10
|
+
server = new TezosToolkit(url);
|
|
11
|
+
servers.set(url, server);
|
|
7
12
|
}
|
|
8
|
-
return
|
|
13
|
+
return server;
|
|
9
14
|
}
|
|
10
15
|
//# sourceMappingURL=tezosToolkit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tezosToolkit.js","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,UAAU,MAAM,WAAW,CAAC;AAEnC,
|
|
1
|
+
{"version":3,"file":"tezosToolkit.js","sourceRoot":"","sources":["../../src/logic/tezosToolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,UAAU,MAAM,WAAW,CAAC;AAEnC,2EAA2E;AAC3E,qGAAqG;AACrG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;AAChD,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;IAChD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-tezos",
|
|
3
|
-
"version": "2.2.0-
|
|
3
|
+
"version": "2.2.0-nightly.1",
|
|
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": "^2.6.0-
|
|
81
|
-
"@ledgerhq/cryptoassets": "^13.
|
|
80
|
+
"@ledgerhq/coin-framework": "^2.6.0-nightly.1",
|
|
81
|
+
"@ledgerhq/cryptoassets": "^13.15.0-nightly.1",
|
|
82
82
|
"@ledgerhq/devices": "8.4.4",
|
|
83
83
|
"@ledgerhq/errors": "^6.19.1",
|
|
84
|
-
"@ledgerhq/live-network": "^2.0.7-
|
|
84
|
+
"@ledgerhq/live-network": "^2.0.7-nightly.0",
|
|
85
85
|
"@ledgerhq/logs": "^6.12.0",
|
|
86
86
|
"@ledgerhq/types-cryptoassets": "^7.21.0",
|
|
87
|
-
"@ledgerhq/types-live": "^6.66.0-
|
|
87
|
+
"@ledgerhq/types-live": "^6.66.0-nightly.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@faker-js/faker": "^8.4.1",
|
package/src/api/index.test.ts
CHANGED
|
@@ -6,16 +6,14 @@ import { createApi } from "./index";
|
|
|
6
6
|
const DEFAULT_ESTIMATED_FEES = 300n;
|
|
7
7
|
|
|
8
8
|
const logicGetTransactions = jest.fn();
|
|
9
|
-
const
|
|
10
|
-
Promise.resolve({ estimatedFees: DEFAULT_ESTIMATED_FEES }),
|
|
11
|
-
);
|
|
9
|
+
const logicEstimateFees = jest.fn();
|
|
12
10
|
const logicCraftTransactionMock = jest.fn((_account: unknown, _transaction: { fee: bigint }) => {
|
|
13
11
|
return { type: undefined, contents: undefined };
|
|
14
12
|
});
|
|
15
13
|
|
|
16
14
|
jest.mock("../logic", () => ({
|
|
17
15
|
listOperations: async () => logicGetTransactions(),
|
|
18
|
-
estimateFees: async () =>
|
|
16
|
+
estimateFees: async () => logicEstimateFees(),
|
|
19
17
|
craftTransaction: (account: unknown, transaction: { fee: bigint }) =>
|
|
20
18
|
logicCraftTransactionMock(account, transaction),
|
|
21
19
|
rawEncode: () => Promise.resolve("tz1heMGVHQnx7ALDcDKqez8fan64Eyicw4DJ"),
|
|
@@ -90,8 +88,9 @@ describe("Testing craftTransaction function", () => {
|
|
|
90
88
|
beforeEach(() => jest.clearAllMocks());
|
|
91
89
|
|
|
92
90
|
it("should use estimated fees when user does not provide them for crafting a transaction ", async () => {
|
|
91
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
93
92
|
await api.craftTransaction({ type: "send" } as TransactionIntent<void>);
|
|
94
|
-
expect(
|
|
93
|
+
expect(logicEstimateFees).toHaveBeenCalledTimes(1);
|
|
95
94
|
expect(logicCraftTransactionMock).toHaveBeenCalledWith(
|
|
96
95
|
expect.any(Object),
|
|
97
96
|
expect.objectContaining({ fee: { fees: DEFAULT_ESTIMATED_FEES.toString() } }),
|
|
@@ -101,8 +100,9 @@ describe("Testing craftTransaction function", () => {
|
|
|
101
100
|
it.each([[1n], [50n], [99n]])(
|
|
102
101
|
"should use custom user fees when user provides it for crafting a transaction",
|
|
103
102
|
async (customFees: bigint) => {
|
|
103
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
104
104
|
await api.craftTransaction({ type: "send" } as TransactionIntent<void>, customFees);
|
|
105
|
-
expect(
|
|
105
|
+
expect(logicEstimateFees).toHaveBeenCalledTimes(0);
|
|
106
106
|
expect(logicCraftTransactionMock).toHaveBeenCalledWith(
|
|
107
107
|
expect.any(Object),
|
|
108
108
|
expect.objectContaining({ fee: { fees: customFees.toString() } }),
|
|
@@ -110,3 +110,20 @@ describe("Testing craftTransaction function", () => {
|
|
|
110
110
|
},
|
|
111
111
|
);
|
|
112
112
|
});
|
|
113
|
+
|
|
114
|
+
describe("Testing estimateFees function", () => {
|
|
115
|
+
beforeEach(() => jest.clearAllMocks());
|
|
116
|
+
|
|
117
|
+
it("should return estimation from logic module", async () => {
|
|
118
|
+
logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
|
|
119
|
+
const result = await api.estimateFees({ type: "send" } as TransactionIntent<void>);
|
|
120
|
+
expect(result).toEqual(DEFAULT_ESTIMATED_FEES);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it("should throw taquito errors", async () => {
|
|
124
|
+
logicEstimateFees.mockResolvedValue({ taquitoError: "test" });
|
|
125
|
+
await expect(api.estimateFees({ type: "send" } as TransactionIntent<void>)).rejects.toThrow(
|
|
126
|
+
"Fees estimation failed: test",
|
|
127
|
+
);
|
|
128
|
+
});
|
|
129
|
+
});
|
package/src/api/index.ts
CHANGED
|
@@ -75,6 +75,11 @@ async function estimate(transactionIntent: TransactionIntent<void>): Promise<big
|
|
|
75
75
|
amount: transactionIntent.amount,
|
|
76
76
|
},
|
|
77
77
|
});
|
|
78
|
+
|
|
79
|
+
if (estimatedFees.taquitoError !== undefined) {
|
|
80
|
+
throw new Error(`Fees estimation failed: ${estimatedFees.taquitoError}`);
|
|
81
|
+
}
|
|
82
|
+
|
|
78
83
|
return estimatedFees.estimatedFees;
|
|
79
84
|
}
|
|
80
85
|
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { TezosToolkit } from "@taquito/taquito";
|
|
2
2
|
import coinConfig from "../config";
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
// Tezos client instance is cached to avoid costly rebuild at every request
|
|
5
|
+
// Watch out: cache key is the URL, coin module can be instantiated several times with different URLs
|
|
6
|
+
const servers = new Map<string, TezosToolkit>();
|
|
6
7
|
export function getTezosToolkit(): TezosToolkit {
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
const url = coinConfig.getCoinConfig().node.url;
|
|
9
|
+
let server = servers.get(url);
|
|
10
|
+
if (server === undefined) {
|
|
11
|
+
server = new TezosToolkit(url);
|
|
12
|
+
servers.set(url, server);
|
|
9
13
|
}
|
|
10
|
-
return
|
|
14
|
+
return server;
|
|
11
15
|
}
|