@ledgerhq/live-common 34.32.0 → 34.33.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.
Files changed (83) hide show
  1. package/lib/exchange/swap/completeExchange.d.ts.map +1 -1
  2. package/lib/exchange/swap/completeExchange.js +7 -0
  3. package/lib/exchange/swap/completeExchange.js.map +1 -1
  4. package/lib/families/cosmos/datasets/babylon.d.ts.map +1 -1
  5. package/lib/families/cosmos/datasets/babylon.js +24 -20
  6. package/lib/families/cosmos/datasets/babylon.js.map +1 -1
  7. package/lib/families/solana/bridge/mock.d.ts.map +1 -1
  8. package/lib/families/solana/bridge/mock.js +7 -0
  9. package/lib/families/solana/bridge/mock.js.map +1 -1
  10. package/lib/families/solana/config.d.ts.map +1 -1
  11. package/lib/families/solana/config.js +1 -0
  12. package/lib/families/solana/config.js.map +1 -1
  13. package/lib/families/solana/setup.js +3 -3
  14. package/lib/families/solana/setup.js.map +1 -1
  15. package/lib/families/solana/setup.test.js +22 -7
  16. package/lib/families/solana/setup.test.js.map +1 -1
  17. package/lib/hw/actions/transaction.d.ts +1 -0
  18. package/lib/hw/actions/transaction.d.ts.map +1 -1
  19. package/lib/hw/actions/transaction.js +5 -0
  20. package/lib/hw/actions/transaction.js.map +1 -1
  21. package/lib/wallet-api/react.d.ts +1 -0
  22. package/lib/wallet-api/react.d.ts.map +1 -1
  23. package/lib/wallet-api/react.js +5 -2
  24. package/lib/wallet-api/react.js.map +1 -1
  25. package/lib/wallet-api/useDappLogic.d.ts.map +1 -1
  26. package/lib/wallet-api/useDappLogic.js +4 -0
  27. package/lib/wallet-api/useDappLogic.js.map +1 -1
  28. package/lib-es/exchange/swap/completeExchange.d.ts.map +1 -1
  29. package/lib-es/exchange/swap/completeExchange.js +7 -0
  30. package/lib-es/exchange/swap/completeExchange.js.map +1 -1
  31. package/lib-es/families/cosmos/datasets/babylon.d.ts.map +1 -1
  32. package/lib-es/families/cosmos/datasets/babylon.js +24 -20
  33. package/lib-es/families/cosmos/datasets/babylon.js.map +1 -1
  34. package/lib-es/families/solana/bridge/mock.d.ts.map +1 -1
  35. package/lib-es/families/solana/bridge/mock.js +7 -0
  36. package/lib-es/families/solana/bridge/mock.js.map +1 -1
  37. package/lib-es/families/solana/config.d.ts.map +1 -1
  38. package/lib-es/families/solana/config.js +1 -0
  39. package/lib-es/families/solana/config.js.map +1 -1
  40. package/lib-es/families/solana/setup.js +3 -3
  41. package/lib-es/families/solana/setup.js.map +1 -1
  42. package/lib-es/families/solana/setup.test.js +22 -7
  43. package/lib-es/families/solana/setup.test.js.map +1 -1
  44. package/lib-es/hw/actions/transaction.d.ts +1 -0
  45. package/lib-es/hw/actions/transaction.d.ts.map +1 -1
  46. package/lib-es/hw/actions/transaction.js +5 -0
  47. package/lib-es/hw/actions/transaction.js.map +1 -1
  48. package/lib-es/wallet-api/react.d.ts +1 -0
  49. package/lib-es/wallet-api/react.d.ts.map +1 -1
  50. package/lib-es/wallet-api/react.js +5 -2
  51. package/lib-es/wallet-api/react.js.map +1 -1
  52. package/lib-es/wallet-api/useDappLogic.d.ts.map +1 -1
  53. package/lib-es/wallet-api/useDappLogic.js +4 -0
  54. package/lib-es/wallet-api/useDappLogic.js.map +1 -1
  55. package/package.json +52 -52
  56. package/src/exchange/swap/completeExchange.ts +9 -0
  57. package/src/families/cosmos/datasets/__snapshots__/babylon.integration.test.ts.snap +17 -98
  58. package/src/families/cosmos/datasets/babylon.ts +24 -20
  59. package/src/families/solana/bridge/mock.ts +8 -1
  60. package/src/families/solana/config.ts +2 -1
  61. package/src/families/solana/setup.test.ts +26 -8
  62. package/src/families/solana/setup.ts +4 -4
  63. package/src/hw/actions/transaction.ts +8 -0
  64. package/src/wallet-api/react.ts +8 -2
  65. package/src/wallet-api/useDappLogic.ts +4 -0
  66. package/lib/families/solana/offchainMessage/format.d.ts +0 -9
  67. package/lib/families/solana/offchainMessage/format.d.ts.map +0 -1
  68. package/lib/families/solana/offchainMessage/format.js +0 -72
  69. package/lib/families/solana/offchainMessage/format.js.map +0 -1
  70. package/lib/families/solana/offchainMessage/format.test.d.ts +0 -2
  71. package/lib/families/solana/offchainMessage/format.test.d.ts.map +0 -1
  72. package/lib/families/solana/offchainMessage/format.test.js +0 -54
  73. package/lib/families/solana/offchainMessage/format.test.js.map +0 -1
  74. package/lib-es/families/solana/offchainMessage/format.d.ts +0 -9
  75. package/lib-es/families/solana/offchainMessage/format.d.ts.map +0 -1
  76. package/lib-es/families/solana/offchainMessage/format.js +0 -68
  77. package/lib-es/families/solana/offchainMessage/format.js.map +0 -1
  78. package/lib-es/families/solana/offchainMessage/format.test.d.ts +0 -2
  79. package/lib-es/families/solana/offchainMessage/format.test.d.ts.map +0 -1
  80. package/lib-es/families/solana/offchainMessage/format.test.js +0 -52
  81. package/lib-es/families/solana/offchainMessage/format.test.js.map +0 -1
  82. package/src/families/solana/offchainMessage/format.test.ts +0 -71
  83. package/src/families/solana/offchainMessage/format.ts +0 -76
@@ -1,71 +0,0 @@
1
- import { toOffChainMessage } from "./format";
2
-
3
- type MessageCase = {
4
- value: string;
5
- hexadecimal: string;
6
- messageFormat: "00" | "01";
7
- messageLength: string;
8
- };
9
-
10
- // hexadecimal of \xffsolana offchain
11
- const SOLANA_HEADER = "ff736f6c616e61206f6666636861696e";
12
-
13
- describe("test", () => {
14
- const cases: MessageCase[] = [
15
- {
16
- value: "hello",
17
- hexadecimal: "68656c6c6f",
18
- messageFormat: "01",
19
- messageLength: "05",
20
- },
21
- {
22
- value: "bonjour",
23
- hexadecimal: "626f6e6a6f7572",
24
- messageFormat: "01",
25
- messageLength: "07",
26
- },
27
- {
28
- value: "salam",
29
- hexadecimal: "73616c616d",
30
- messageFormat: "01",
31
- messageLength: "05",
32
- },
33
- {
34
- value: "Long Off-Chain Test Message.",
35
- hexadecimal: "4c6f6e67204f66662d436861696e2054657374204d6573736167652e",
36
- messageFormat: "01",
37
- messageLength: "1c",
38
- },
39
- {
40
- value: "Тестовое сообщение в формате UTF-8",
41
- hexadecimal:
42
- "d0a2d0b5d181d182d0bed0b2d0bed0b520d181d0bed0bed0b1d189d0b5d0bdd0b8d0b520d0b220d184d0bed180d0bcd0b0d182d0b5205554462d38",
43
- messageFormat: "01",
44
- messageLength: "3b",
45
- },
46
- ];
47
-
48
- it.each(cases)(
49
- 'should format message "$value" correctly for off-chain signing on Solana',
50
- ({ value, hexadecimal, messageFormat, messageLength }) => {
51
- const result = toOffChainMessage(value).toString("hex");
52
-
53
- expect(result.startsWith(SOLANA_HEADER)).toBe(true);
54
-
55
- const version = result.substring(SOLANA_HEADER.length, SOLANA_HEADER.length + 2);
56
- expect(version).toEqual("00");
57
-
58
- const format = result.substring(SOLANA_HEADER.length + 2, SOLANA_HEADER.length + 4);
59
- expect(format).toEqual(messageFormat);
60
-
61
- const length = result.substring(SOLANA_HEADER.length + 4, SOLANA_HEADER.length + 6);
62
- expect(length).toEqual(messageLength);
63
-
64
- const remaining = result.substring(SOLANA_HEADER.length + 6, SOLANA_HEADER.length + 8);
65
- expect(remaining).toEqual("00");
66
-
67
- // message should end with message parameter
68
- expect(result.substring(SOLANA_HEADER.length + 8)).toEqual(hexadecimal);
69
- },
70
- );
71
- });
@@ -1,76 +0,0 @@
1
- /**
2
- * Major functions of this file have been taken from https://github.com/LedgerHQ/app-solana/blob/develop/examples/example-sign.js
3
- * Thus, have not been fully tested (unit tests + manual tests)
4
- * We should add more tests in the future
5
- */
6
-
7
- // Max off-chain message length supported by Ledger
8
- const OFFCM_MAX_LEDGER_LEN = 1212;
9
- // Max length of version 0 off-chain message
10
- const OFFCM_MAX_V0_LEN = 65515;
11
-
12
- const SOLANA_HEADER_BUFFER = Buffer.concat([Buffer.from([255]), Buffer.from("solana offchain")]);
13
-
14
- function isPrintableASCII(buffer) {
15
- return (
16
- buffer &&
17
- buffer.every(element => {
18
- return element >= 0x20 && element <= 0x7e;
19
- })
20
- );
21
- }
22
-
23
- function isUTF8(buffer: string) {
24
- try {
25
- new TextDecoder("utf8", { fatal: true }).decode(Buffer.from(buffer));
26
- return true;
27
- } catch {
28
- return false;
29
- }
30
- }
31
-
32
- function findMessageFormat(message: string): number | undefined {
33
- if (Object.prototype.toString.call(message) !== "[object Uint8Array]") {
34
- if (isUTF8(message)) {
35
- return 1;
36
- }
37
- return undefined;
38
- }
39
- if (message.length <= OFFCM_MAX_LEDGER_LEN) {
40
- if (isPrintableASCII(message)) {
41
- return 0;
42
- } else if (isUTF8(message)) {
43
- return 1;
44
- }
45
- } else if (message.length <= OFFCM_MAX_V0_LEN) {
46
- if (isUTF8(message)) {
47
- return 2;
48
- }
49
- }
50
- return undefined;
51
- }
52
-
53
- function writeMessageLength(buffer: Buffer, length: number, offset: number): void {
54
- buffer.writeUInt16LE(length, offset);
55
- }
56
-
57
- function writeMessageFormat(message: string, buffer: Buffer, offset: number): number {
58
- const messageFormat = findMessageFormat(message) ?? 0;
59
- return buffer.writeUInt8(messageFormat, offset);
60
- }
61
-
62
- function writeVersion(buffer: Buffer): number {
63
- return buffer.writeUInt8(0);
64
- }
65
-
66
- function toMessageInformation(message: string): Buffer {
67
- const buffer = Buffer.alloc(4);
68
- let offset = writeVersion(buffer);
69
- offset = writeMessageFormat(message, buffer, offset);
70
- writeMessageLength(buffer, Buffer.from(message).length, offset);
71
- return buffer;
72
- }
73
-
74
- export function toOffChainMessage(message: string): Buffer {
75
- return Buffer.concat([SOLANA_HEADER_BUFFER, toMessageInformation(message), Buffer.from(message)]);
76
- }