@onekeyfe/hd-transport 1.1.27 → 1.2.0-alpha.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 (87) hide show
  1. package/README.md +2 -4
  2. package/__tests__/build-receive.test.js +6 -8
  3. package/__tests__/decode-features.test.js +3 -2
  4. package/__tests__/messages.test.js +8 -0
  5. package/__tests__/protocol-v2.test.js +754 -0
  6. package/dist/constants.d.ts +14 -5
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/index.d.ts +934 -41
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +827 -84
  11. package/dist/protocols/index.d.ts +45 -0
  12. package/dist/protocols/index.d.ts.map +1 -0
  13. package/dist/protocols/v1/decode.d.ts +11 -0
  14. package/dist/protocols/v1/decode.d.ts.map +1 -0
  15. package/dist/protocols/v1/encode.d.ts +11 -0
  16. package/dist/protocols/v1/encode.d.ts.map +1 -0
  17. package/dist/protocols/v1/index.d.ts +5 -0
  18. package/dist/protocols/v1/index.d.ts.map +1 -0
  19. package/dist/protocols/v1/packets.d.ts +7 -0
  20. package/dist/protocols/v1/packets.d.ts.map +1 -0
  21. package/dist/{serialization → protocols/v1}/receive.d.ts +1 -1
  22. package/dist/protocols/v1/receive.d.ts.map +1 -0
  23. package/dist/protocols/v2/constants.d.ts +7 -0
  24. package/dist/protocols/v2/constants.d.ts.map +1 -0
  25. package/dist/protocols/v2/crc8.d.ts +3 -0
  26. package/dist/protocols/v2/crc8.d.ts.map +1 -0
  27. package/dist/protocols/v2/debug.d.ts +13 -0
  28. package/dist/protocols/v2/debug.d.ts.map +1 -0
  29. package/dist/protocols/v2/decode.d.ts +8 -0
  30. package/dist/protocols/v2/decode.d.ts.map +1 -0
  31. package/dist/protocols/v2/encode.d.ts +5 -0
  32. package/dist/protocols/v2/encode.d.ts.map +1 -0
  33. package/dist/protocols/v2/frame-assembler.d.ts +12 -0
  34. package/dist/protocols/v2/frame-assembler.d.ts.map +1 -0
  35. package/dist/protocols/v2/index.d.ts +7 -0
  36. package/dist/protocols/v2/index.d.ts.map +1 -0
  37. package/dist/protocols/v2/session.d.ts +50 -0
  38. package/dist/protocols/v2/session.d.ts.map +1 -0
  39. package/dist/serialization/index.d.ts +6 -3
  40. package/dist/serialization/index.d.ts.map +1 -1
  41. package/dist/serialization/protobuf/decode.d.ts.map +1 -1
  42. package/dist/serialization/protobuf/messages.d.ts +1 -1
  43. package/dist/serialization/protobuf/messages.d.ts.map +1 -1
  44. package/dist/types/messages.d.ts +461 -11
  45. package/dist/types/messages.d.ts.map +1 -1
  46. package/dist/types/transport.d.ts +14 -2
  47. package/dist/types/transport.d.ts.map +1 -1
  48. package/dist/utils/logBlockCommand.d.ts.map +1 -1
  49. package/messages-protocol-v2.json +13369 -0
  50. package/package.json +3 -3
  51. package/scripts/protobuf-build.sh +314 -20
  52. package/scripts/protobuf-patches/TxInputType.js +1 -0
  53. package/scripts/protobuf-patches/index.js +2 -0
  54. package/scripts/protobuf-types.js +224 -18
  55. package/src/constants.ts +42 -6
  56. package/src/index.ts +39 -11
  57. package/src/protocols/index.ts +144 -0
  58. package/src/{serialization/protocol → protocols/v1}/decode.ts +4 -4
  59. package/src/{serialization/protocol → protocols/v1}/encode.ts +18 -13
  60. package/src/protocols/v1/index.ts +4 -0
  61. package/src/protocols/v1/packets.ts +53 -0
  62. package/src/{serialization → protocols/v1}/receive.ts +5 -5
  63. package/src/protocols/v2/constants.ts +6 -0
  64. package/src/protocols/v2/crc8.ts +34 -0
  65. package/src/protocols/v2/debug.ts +26 -0
  66. package/src/protocols/v2/decode.ts +92 -0
  67. package/src/protocols/v2/encode.ts +116 -0
  68. package/src/protocols/v2/frame-assembler.ts +98 -0
  69. package/src/protocols/v2/index.ts +6 -0
  70. package/src/protocols/v2/session.ts +429 -0
  71. package/src/serialization/index.ts +6 -5
  72. package/src/serialization/protobuf/decode.ts +7 -0
  73. package/src/serialization/protobuf/messages.ts +8 -4
  74. package/src/types/messages.ts +606 -13
  75. package/src/types/transport.ts +26 -2
  76. package/src/utils/logBlockCommand.ts +9 -1
  77. package/dist/serialization/protocol/decode.d.ts +0 -11
  78. package/dist/serialization/protocol/decode.d.ts.map +0 -1
  79. package/dist/serialization/protocol/encode.d.ts +0 -11
  80. package/dist/serialization/protocol/encode.d.ts.map +0 -1
  81. package/dist/serialization/protocol/index.d.ts +0 -3
  82. package/dist/serialization/protocol/index.d.ts.map +0 -1
  83. package/dist/serialization/receive.d.ts.map +0 -1
  84. package/dist/serialization/send.d.ts +0 -7
  85. package/dist/serialization/send.d.ts.map +0 -1
  86. package/src/serialization/protocol/index.ts +0 -2
  87. package/src/serialization/send.ts +0 -58
package/README.md CHANGED
@@ -18,11 +18,9 @@ In order to be able to use new features of onekey-firmware you need to update pr
18
18
 
19
19
  1. `git submodule update --init --recursive` to initialize git submodules.
20
20
  1. `yarn update-submodules` to update firmware submodule
21
- 1. `yarn update:protobuf` to generate new `./messages.json` and `./src/types/messages.ts`
21
+ 1. `yarn update-protobuf` to generate new `./messages.json`, `./messages-protocol-v2.json` and `./src/types/messages.ts`
22
22
 
23
- git submodule update --init --recursive to initialize firmware submodule
24
- yarn update-submodules to update firmware submodule
25
- yarn update:protobuf to generate new ./messages.json and ./src/types/messages.ts
23
+ The same task can be run from the repository root with `yarn update-protobuf`. The Protocol V2 schema requires the `firmware-pro2` submodule checked out on branch `dev_romloader_split`.
26
24
 
27
25
  ## Docs
28
26
 
@@ -1,7 +1,5 @@
1
1
  const { parseConfigure } = require('../src/serialization/protobuf/messages');
2
- const { buildOne } = require('../src/serialization/send');
3
- const { receiveOne } = require('../src/serialization/receive');
4
- const { buildEncodeBuffers } = require('../src/serialization/send');
2
+ const { ProtocolV1 } = require('../src/protocols');
5
3
 
6
4
  const messages = {
7
5
  StellarPaymentOp: {
@@ -96,17 +94,17 @@ const parsedMessages = parseConfigure({
96
94
  describe('encoding json -> protobuf -> json', () => {
97
95
  fixtures.forEach(f => {
98
96
  describe(f.name, () => {
99
- test('buildOne - receiveOne', () => {
97
+ test('encodeEnvelope - decodeMessage', () => {
100
98
  // encoded message
101
- const encodedMessage = buildOne(parsedMessages, f.name, f.in);
99
+ const encodedMessage = ProtocolV1.encodeEnvelope(parsedMessages, f.name, f.in);
102
100
  // then decode message and check, whether decoded message matches original json
103
- const decodedMessage = receiveOne(parsedMessages, encodedMessage);
101
+ const decodedMessage = ProtocolV1.decodeMessage(parsedMessages, encodedMessage);
104
102
  expect(decodedMessage.type).toEqual(f.name);
105
103
  expect(decodedMessage.message).toEqual(f.in);
106
104
  });
107
105
 
108
- test('buildBuffers - receiveAndParse', () => {
109
- const result = buildEncodeBuffers(parsedMessages, f.name, f.in);
106
+ test('encodeMessageChunks - receiveAndParse', () => {
107
+ const result = ProtocolV1.encodeMessageChunks(parsedMessages, f.name, f.in);
110
108
  result.forEach(r => {
111
109
  expect(r.byteLength).toBeLessThanOrEqual(63);
112
110
  });
@@ -1,8 +1,9 @@
1
+ /* eslint-disable import/order */
1
2
  const ProtoBuf = require('protobufjs/light');
2
3
  const ByteBuffer = require('bytebuffer');
3
4
 
4
5
  const { decode } = require('../src/serialization/protobuf/decode');
5
- const { decode: decodeProtocol } = require('../src/serialization/protocol/decode');
6
+ const { decodeEnvelope } = require('../src/protocols/v1/decode');
6
7
 
7
8
  // Reuse the messages.json already committed alongside @onekeyfe/hd-core
8
9
  // (runtime data for DataManager). hd-transport's own messages.json is
@@ -61,7 +62,7 @@ describe('Fix messages decode', () => {
61
62
  test('decode', () => {
62
63
  // deserialize
63
64
  const encoded = ByteBuffer.fromHex(f.encodeMessage);
64
- const { buffer } = decodeProtocol(encoded);
65
+ const { buffer } = decodeEnvelope(encoded);
65
66
  const decoded = decode(Message, buffer);
66
67
 
67
68
  // filter null values
@@ -83,4 +83,12 @@ describe('messages', () => {
83
83
 
84
84
  expect(() => createMessageFromName(messages, name)).not.toThrow();
85
85
  });
86
+
87
+ test('createMessageFromName throws when message type id is missing', () => {
88
+ const messages = parseConfigure(json);
89
+
90
+ expect(() => createMessageFromName(messages, 'TxAckInputWrapper')).toThrow(
91
+ 'MessageType for "TxAckInputWrapper" is not defined in protobuf schema'
92
+ );
93
+ });
86
94
  });