@ledgerhq/live-common 21.4.1-btcjs.5 → 21.4.1-btcjs.6
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/lib/__tests__/families/bitcoin/logic.d.ts +2 -0
- package/lib/__tests__/families/bitcoin/logic.d.ts.map +1 -0
- package/lib/__tests__/families/bitcoin/logic.js +39 -0
- package/lib/__tests__/families/bitcoin/logic.js.map +1 -0
- package/lib/families/bitcoin/logic.d.ts.map +1 -1
- package/lib/families/bitcoin/logic.js +8 -1
- package/lib/families/bitcoin/logic.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/families/bitcoin/logic.ts +40 -0
- package/src/families/bitcoin/logic.ts +15 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/families/bitcoin/logic.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
var currencies_1 = require("../../../currencies");
|
|
4
|
+
var logic_1 = require("../../../families/bitcoin/logic");
|
|
5
|
+
var errors_1 = require("@ledgerhq/errors");
|
|
6
|
+
describe("Test isValidRecipient", function () {
|
|
7
|
+
function t(address, currencyId, expectValid) {
|
|
8
|
+
var currency = (0, currencies_1.getCryptoCurrencyById)(currencyId);
|
|
9
|
+
if (expectValid) {
|
|
10
|
+
return expect((0, logic_1.isValidRecipient)({ currency: currency, recipient: address })).resolves.toBeNull();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return expect((0, logic_1.isValidRecipient)({ currency: currency, recipient: address })).rejects.toBeInstanceOf(errors_1.InvalidAddress);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
test("Fail on non-existing currency", function () {
|
|
17
|
+
t("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", "ontology", false);
|
|
18
|
+
});
|
|
19
|
+
test("Fail on mainnet addr on bitcoin_testnet", function () {
|
|
20
|
+
t("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", "bitcoin_testnet", false);
|
|
21
|
+
});
|
|
22
|
+
test("Success on valid address", function () {
|
|
23
|
+
t("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", "bitcoin", true);
|
|
24
|
+
});
|
|
25
|
+
test("Success on valid qtum address", function () {
|
|
26
|
+
t("xCREYTgvdk3XzFNpdXkj35fZX4hJK2Ckpd", "qtum", true);
|
|
27
|
+
});
|
|
28
|
+
test("Fail on invalid qtum address", function () {
|
|
29
|
+
t("xCREYTgvdk3XzFNpdXkj35fZX4hJK2Ckpe", "qtum", false);
|
|
30
|
+
});
|
|
31
|
+
test("Fail on invalid bch address", function () {
|
|
32
|
+
t("qr6m7j9njldwwzlg9v7v53unlr4jkmx6eylep8ekg3", "bitcoin_cash", false);
|
|
33
|
+
});
|
|
34
|
+
// TODO Enable once fixed in wallet-btc
|
|
35
|
+
test.skip("Success on valid bch address", function () {
|
|
36
|
+
t("qr6m7j9njldwwzlg9v7v53unlr4jkmx6eylep8ekg2", "bitcoin_cash", true);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../../../../src/__tests__/families/bitcoin/logic.ts"],"names":[],"mappings":";;AAAA,kDAA4D;AAC5D,yDAAmE;AACnE,2CAAkD;AAElD,QAAQ,CAAC,uBAAuB,EAAE;IAChC,SAAS,CAAC,CAAC,OAAe,EAAE,UAAkB,EAAE,WAAoB;QAClE,IAAM,QAAQ,GAAG,IAAA,kCAAqB,EAAC,UAAU,CAAC,CAAC;QACnD,IAAI,WAAW,EAAE;YACf,OAAO,MAAM,CACX,IAAA,wBAAgB,EAAC,EAAE,QAAQ,UAAA,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CACnD,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SACvB;aAAM;YACL,OAAO,MAAM,CACX,IAAA,wBAAgB,EAAC,EAAE,QAAQ,UAAA,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CACnD,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAc,CAAC,CAAC;SAC1C;IACH,CAAC;IACD,IAAI,CAAC,+BAA+B,EAAE;QACpC,CAAC,CAAC,4CAA4C,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,yCAAyC,EAAE;QAC9C,CAAC,CAAC,4CAA4C,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,0BAA0B,EAAE;QAC/B,CAAC,CAAC,4CAA4C,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,+BAA+B,EAAE;QACpC,CAAC,CAAC,oCAAoC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,8BAA8B,EAAE;QACnC,CAAC,CAAC,oCAAoC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6BAA6B,EAAE;QAClC,CAAC,CAAC,4CAA4C,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IACH,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;QACxC,CAAC,CAAC,4CAA4C,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../src/families/bitcoin/logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../src/families/bitcoin/logic.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACb,MAAM,SAAS,CAAC;AAgBjB,eAAO,MAAM,cAAc,aAAc,cAAc,KAAG,MAC/B,CAAC;AAC5B,eAAO,MAAM,eAAe,MAAO,WAAW,eAAe,WAAW,mCAcvE,CAAC;AACF,eAAO,MAAM,gBAAgB,WAAkB;IAC7C,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,QAAQ,KAAK,GAAG,IAAI,GAAG,SAAS,CAmBnC,CAAC;AACF,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAI7D;AAED,aAAK,UAAU,GACX;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAC;CAChD,GACD;IACE,QAAQ,EAAE,KAAK,CAAC;CACjB,CAAC;AACN,eAAO,MAAM,aAAa,SAClB,aAAa,gBACL,YAAY,KACzB,UAsBF,CAAC;AAeF,aAAK,SAAS,GAAG;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE,KAAK,MAAM,EAAE,CAAC;IAClE,8BAA8B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,yBAAyB,CAAC,EAAE,CAC1B,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE,gBAAgB,KACpB,gBAAgB,CAAC;IACtB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,GAAG,CAAC;CACjD,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,MAAM,CAC/B,iBAAiB,EACjB,SAAS,GAAG,IAAI,GAAG,SAAS,CA2C7B,CAAC;AAIF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAkCxB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAIxB"}
|
|
@@ -79,7 +79,14 @@ var isValidRecipient = function (params) { return __awaiter(void 0, void 0, void
|
|
|
79
79
|
if (!params.recipient) {
|
|
80
80
|
return [2 /*return*/, Promise.reject(new errors_1.RecipientRequired(""))];
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
try {
|
|
83
|
+
// Optimistically assume params.currency.id is an actual Currency
|
|
84
|
+
valid = (0, wallet_btc_1.isValidAddress)(params.recipient, params.currency.id);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
// isValidAddress() will throw Error if c is not an actual Currency
|
|
88
|
+
return [2 /*return*/, Promise.reject(new errors_1.InvalidAddress(e.message))];
|
|
89
|
+
}
|
|
83
90
|
if (!valid) {
|
|
84
91
|
return [2 /*return*/, Promise.reject(new errors_1.InvalidAddress("Invalid address for currency " + params.currency.name))];
|
|
85
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../../../src/families/bitcoin/logic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,wDAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../../../src/families/bitcoin/logic.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/LedgerHQ/ledger-live-common"
|
|
10
10
|
},
|
|
11
|
-
"version": "21.4.1-btcjs.
|
|
11
|
+
"version": "21.4.1-btcjs.6",
|
|
12
12
|
"main": "lib/index.js",
|
|
13
13
|
"types": "lib/index.d.ts",
|
|
14
14
|
"license": "Apache-2.0",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@ledgerhq/hw-transport-node-speculos": "6.3.0",
|
|
58
58
|
"@ledgerhq/live-app-sdk": "^0.2.0",
|
|
59
59
|
"@ledgerhq/logs": "6.2.0",
|
|
60
|
-
"@ledgerhq/wallet-btc": "1.1.
|
|
60
|
+
"@ledgerhq/wallet-btc": "1.1.6",
|
|
61
61
|
"@polkadot/types": "5.8.3",
|
|
62
62
|
"@polkadot/types-known": "5.8.3",
|
|
63
63
|
"@taquito/ledger-signer": "^10.1.1",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getCryptoCurrencyById } from "../../../currencies";
|
|
2
|
+
import { isValidRecipient } from "../../../families/bitcoin/logic";
|
|
3
|
+
import { InvalidAddress } from "@ledgerhq/errors";
|
|
4
|
+
|
|
5
|
+
describe("Test isValidRecipient", () => {
|
|
6
|
+
function t(address: string, currencyId: string, expectValid: boolean) {
|
|
7
|
+
const currency = getCryptoCurrencyById(currencyId);
|
|
8
|
+
if (expectValid) {
|
|
9
|
+
return expect(
|
|
10
|
+
isValidRecipient({ currency, recipient: address })
|
|
11
|
+
).resolves.toBeNull();
|
|
12
|
+
} else {
|
|
13
|
+
return expect(
|
|
14
|
+
isValidRecipient({ currency, recipient: address })
|
|
15
|
+
).rejects.toBeInstanceOf(InvalidAddress);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
test("Fail on non-existing currency", () => {
|
|
19
|
+
t("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", "ontology", false);
|
|
20
|
+
});
|
|
21
|
+
test("Fail on mainnet addr on bitcoin_testnet", () => {
|
|
22
|
+
t("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", "bitcoin_testnet", false);
|
|
23
|
+
});
|
|
24
|
+
test("Success on valid address", () => {
|
|
25
|
+
t("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", "bitcoin", true);
|
|
26
|
+
});
|
|
27
|
+
test("Success on valid qtum address", () => {
|
|
28
|
+
t("xCREYTgvdk3XzFNpdXkj35fZX4hJK2Ckpd", "qtum", true);
|
|
29
|
+
});
|
|
30
|
+
test("Fail on invalid qtum address", () => {
|
|
31
|
+
t("xCREYTgvdk3XzFNpdXkj35fZX4hJK2Ckpe", "qtum", false);
|
|
32
|
+
});
|
|
33
|
+
test("Fail on invalid bch address", () => {
|
|
34
|
+
t("qr6m7j9njldwwzlg9v7v53unlr4jkmx6eylep8ekg3", "bitcoin_cash", false);
|
|
35
|
+
});
|
|
36
|
+
// TODO Enable once fixed in wallet-btc
|
|
37
|
+
test.skip("Success on valid bch address", () => {
|
|
38
|
+
t("qr6m7j9njldwwzlg9v7v53unlr4jkmx6eylep8ekg2", "bitcoin_cash", true);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import cashaddr from "cashaddrjs";
|
|
2
2
|
import bchaddr from "bchaddrjs";
|
|
3
|
-
import { isValidAddress } from "@ledgerhq/wallet-btc";
|
|
4
|
-
import {
|
|
3
|
+
import { Currency, isValidAddress } from "@ledgerhq/wallet-btc";
|
|
4
|
+
import {
|
|
5
|
+
RecipientRequired,
|
|
6
|
+
InvalidAddress,
|
|
7
|
+
CurrencyNotSupported,
|
|
8
|
+
} from "@ledgerhq/errors";
|
|
5
9
|
import type { Account, CryptoCurrency, CryptoCurrencyIds } from "./../../types";
|
|
6
10
|
import type {
|
|
7
11
|
BitcoinOutput,
|
|
@@ -52,7 +56,15 @@ export const isValidRecipient = async (params: {
|
|
|
52
56
|
if (!params.recipient) {
|
|
53
57
|
return Promise.reject(new RecipientRequired(""));
|
|
54
58
|
}
|
|
55
|
-
|
|
59
|
+
|
|
60
|
+
let valid: boolean;
|
|
61
|
+
try {
|
|
62
|
+
// Optimistically assume params.currency.id is an actual Currency
|
|
63
|
+
valid = isValidAddress(params.recipient, <Currency>params.currency.id);
|
|
64
|
+
} catch (e: any) {
|
|
65
|
+
// isValidAddress() will throw Error if c is not an actual Currency
|
|
66
|
+
return Promise.reject(new InvalidAddress(e.message));
|
|
67
|
+
}
|
|
56
68
|
if (!valid) {
|
|
57
69
|
return Promise.reject(
|
|
58
70
|
new InvalidAddress("Invalid address for currency " + params.currency.name)
|