@onekeyfe/hd-transport-web-device 1.2.0-alpha.25 → 1.2.0-alpha.27
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/__tests__/electron-ble-transport.test.ts +33 -0
- package/__tests__/webusb-protocol-v2-timeout.test.ts +24 -0
- package/dist/electron-ble-transport.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +11 -0
- package/dist/webusb.d.ts +1 -0
- package/dist/webusb.d.ts.map +1 -1
- package/jest.config.js +5 -0
- package/package.json +6 -5
- package/src/electron-ble-transport.ts +2 -0
- package/src/webusb.ts +12 -0
|
@@ -441,4 +441,37 @@ describe('ElectronBleTransport protocol detection', () => {
|
|
|
441
441
|
await bleTransport.release(device.id);
|
|
442
442
|
}
|
|
443
443
|
});
|
|
444
|
+
|
|
445
|
+
test('rejects oversized Protocol V2 requests before writing to Electron BLE', async () => {
|
|
446
|
+
const device = { id: 'oversized-frame-pro2-id', name: 'OneKey Pro 2' };
|
|
447
|
+
const nobleBle = createNobleBle(device);
|
|
448
|
+
let notificationHandler: ((deviceId: string, data: string) => void) | undefined;
|
|
449
|
+
const probeResponse = ProtocolV2.encodeFrame(
|
|
450
|
+
schemas,
|
|
451
|
+
'Success',
|
|
452
|
+
{ message: 'ok' },
|
|
453
|
+
{ router: PROTOCOL_V2_CHANNEL_BLE_UART }
|
|
454
|
+
);
|
|
455
|
+
nobleBle.onNotification.mockImplementation(handler => {
|
|
456
|
+
notificationHandler = handler;
|
|
457
|
+
return jest.fn();
|
|
458
|
+
});
|
|
459
|
+
nobleBle.write.mockImplementation(() => {
|
|
460
|
+
setTimeout(() => notificationHandler?.(device.id, bytesToHex(probeResponse)), 0);
|
|
461
|
+
return Promise.resolve();
|
|
462
|
+
});
|
|
463
|
+
const bleTransport = configureTransport(nobleBle);
|
|
464
|
+
|
|
465
|
+
try {
|
|
466
|
+
await bleTransport.acquire({ uuid: device.id, expectedProtocol: 'V2' });
|
|
467
|
+
expect(nobleBle.write).toHaveBeenCalledTimes(1);
|
|
468
|
+
|
|
469
|
+
await expect(
|
|
470
|
+
bleTransport.call(device.id, 'Ping', { message: 'x'.repeat(2048) })
|
|
471
|
+
).rejects.toThrow(/Protocol V2 frame too large for transport/);
|
|
472
|
+
expect(nobleBle.write).toHaveBeenCalledTimes(1);
|
|
473
|
+
} finally {
|
|
474
|
+
await bleTransport.release(device.id);
|
|
475
|
+
}
|
|
476
|
+
});
|
|
444
477
|
});
|
|
@@ -20,6 +20,30 @@ const schema = {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
describe('WebUsbTransport Protocol V2 timeout recovery', () => {
|
|
23
|
+
test('keeps active links when the Protocol V2 schema is configured repeatedly', () => {
|
|
24
|
+
const webusb = new WebUsbTransport() as any;
|
|
25
|
+
webusb.invalidateAllProtocolV2UsbLinks = jest.fn().mockResolvedValue(undefined);
|
|
26
|
+
const schemaSource = JSON.stringify(schema);
|
|
27
|
+
|
|
28
|
+
webusb.configureProtocolV2(schemaSource);
|
|
29
|
+
webusb.configureProtocolV2(schemaSource);
|
|
30
|
+
|
|
31
|
+
expect(webusb.invalidateAllProtocolV2UsbLinks).not.toHaveBeenCalled();
|
|
32
|
+
|
|
33
|
+
webusb.configureProtocolV2(
|
|
34
|
+
JSON.stringify({
|
|
35
|
+
...schema,
|
|
36
|
+
nested: {
|
|
37
|
+
...schema.nested,
|
|
38
|
+
Failure: { fields: { message: { type: 'string', id: 1 } } },
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
);
|
|
42
|
+
expect(webusb.invalidateAllProtocolV2UsbLinks).toHaveBeenCalledWith(
|
|
43
|
+
'Protocol V2 schema reconfigured'
|
|
44
|
+
);
|
|
45
|
+
});
|
|
46
|
+
|
|
23
47
|
test('resets the connection between a failed V1 probe and the V2 probe', async () => {
|
|
24
48
|
const webusb = new WebUsbTransport() as any;
|
|
25
49
|
const path = 'pro2-webusb';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electron-ble-transport.d.ts","sourceRoot":"","sources":["../src/electron-ble-transport.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"electron-ble-transport.d.ts","sourceRoot":"","sources":["../src/electron-ble-transport.ts"],"names":[],"mappings":";AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAIvC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;CACF;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,YAAY,CAAC;CACjC,CAAC;AAoCF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,SAAS,CAA0D;IAE3E,OAAO,CAAC,WAAW,CAA0D;IAE7E,OAAO,CAAC,6BAA6B,CAAqB;IAE1D,IAAI,SAA0B;IAE9B,UAAU,UAAS;IAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAQ;IAExD,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,OAAO,CAAC,SAAS,CAAsE;IAEvF,OAAO,CAAC,YAAY,CAAoD;IAExE,OAAO,CAAC,aAAa,CAAwC;IAE7D,OAAO,CAAC,eAAe,CAAgD;IAEvE,OAAO,CAAC,eAAe,CAmBpB;IAEH,OAAO,CAAC,oBAAoB,CAAsC;IAElE,OAAO,CAAC,kBAAkB,CAAsC;IAEhE,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,kBAAkB;IA0B1B,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAcxC,SAAS,CAAC,UAAU,EAAE,GAAG;IAKzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAgB7B,MAAM;IAIN,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqBxC,OAAO,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;IAoF9B,OAAO,CAAC,EAAE,EAAE,MAAM;IAgBxB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,kBAAkB;YAMZ,cAAc;IA+C5B,OAAO,CAAC,8BAA8B;YAgBxB,iCAAiC;YAqCjC,eAAe;YAgBf,eAAe;YAuBf,iBAAiB;YAsBjB,SAAS;IASvB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,4BAA4B;IAkBpC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,sBAAsB;YAShB,mBAAmB;IAiBjC,OAAO,CAAC,4BAA4B;IAgB9B,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,oBAAoB;YA2BlB,cAAc;YAuEd,cAAc;IA0B5B,OAAO,CAAC,uBAAuB;IA2C/B,OAAO,CAAC,6BAA6B;IAsCrC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ declare class WebUsbTransport extends ProtocolV2UsbTransportBase<string> {
|
|
|
16
16
|
messages: ReturnType<typeof _onekeyfe_hd_transport__default.parseConfigure> | undefined;
|
|
17
17
|
/** Protobuf schema for Protocol V2 transports. */
|
|
18
18
|
messagesV2: ReturnType<typeof _onekeyfe_hd_transport__default.parseConfigure> | undefined;
|
|
19
|
+
private protocolV2SchemaSource;
|
|
19
20
|
/** Per-path protocol type detected by active wire-level probe. */
|
|
20
21
|
private deviceProtocol;
|
|
21
22
|
private deviceProtocolHints;
|
package/dist/index.js
CHANGED
|
@@ -98,7 +98,17 @@ class WebUsbTransport extends transport.ProtocolV2UsbTransportBase {
|
|
|
98
98
|
this.messages = messages;
|
|
99
99
|
}
|
|
100
100
|
configureProtocolV2(signedData) {
|
|
101
|
+
var _a;
|
|
102
|
+
const schemaSource = typeof signedData === 'string'
|
|
103
|
+
? signedData
|
|
104
|
+
: (_a = JSON.stringify(signedData)) !== null && _a !== void 0 ? _a : String(signedData);
|
|
105
|
+
if (schemaSource === this.protocolV2SchemaSource)
|
|
106
|
+
return;
|
|
107
|
+
const hadProtocolV2Schema = this.protocolV2SchemaSource !== undefined;
|
|
101
108
|
this.messagesV2 = parseConfigure$1(signedData);
|
|
109
|
+
this.protocolV2SchemaSource = schemaSource;
|
|
110
|
+
if (!hadProtocolV2Schema)
|
|
111
|
+
return;
|
|
102
112
|
this.invalidateAllProtocolV2UsbLinks('Protocol V2 schema reconfigured').catch(error => { var _a; return (_a = this.Log) === null || _a === void 0 ? void 0 : _a.debug('[WebUsbTransport] schema link cleanup failed:', error); });
|
|
103
113
|
}
|
|
104
114
|
promptDeviceAccess() {
|
|
@@ -1372,6 +1382,7 @@ class ElectronBleTransport {
|
|
|
1372
1382
|
};
|
|
1373
1383
|
return {
|
|
1374
1384
|
router: transport.PROTOCOL_V2_CHANNEL_BLE_UART,
|
|
1385
|
+
maxFrameBytes: transport.PROTOCOL_V2_BLE_FRAME_MAX_BYTES,
|
|
1375
1386
|
generation,
|
|
1376
1387
|
prepareCall: () => {
|
|
1377
1388
|
var _a;
|
package/dist/webusb.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export interface DeviceInfo extends OneKeyDeviceInfoBase {
|
|
|
9
9
|
export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string> {
|
|
10
10
|
messages: ReturnType<typeof transport.parseConfigure> | undefined;
|
|
11
11
|
messagesV2: ReturnType<typeof transport.parseConfigure> | undefined;
|
|
12
|
+
private protocolV2SchemaSource;
|
|
12
13
|
private deviceProtocol;
|
|
13
14
|
private deviceProtocolHints;
|
|
14
15
|
private deviceEndpoints;
|
package/dist/webusb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webusb.d.ts","sourceRoot":"","sources":["../src/webusb.ts"],"names":[],"mappings":";AACA,OAAO,SAAS,EAAE,EAQhB,0BAA0B,EAE3B,MAAM,wBAAwB,CAAC;AAYhC,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAsBhC,MAAM,WAAW,UAAW,SAAQ,oBAAoB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAaD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,0BAA0B,CAAC,MAAM,CAAC;IAC7E,QAAQ,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAGlE,UAAU,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"webusb.d.ts","sourceRoot":"","sources":["../src/webusb.ts"],"names":[],"mappings":"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"}
|
package/jest.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-transport-web-device",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.27",
|
|
4
4
|
"author": "OneKey",
|
|
5
5
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,17 +16,18 @@
|
|
|
16
16
|
"scripts": {
|
|
17
17
|
"dev": "rimraf dist && rollup -c ../../build/rollup.config.js -w",
|
|
18
18
|
"build": "rimraf dist && rollup -c ../../build/rollup.config.js",
|
|
19
|
+
"test": "jest",
|
|
19
20
|
"lint": "eslint .",
|
|
20
21
|
"lint:fix": "eslint . --fix"
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
23
|
-
"@onekeyfe/hd-shared": "1.2.0-alpha.
|
|
24
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
24
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.27",
|
|
25
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.27"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
|
-
"@onekeyfe/hd-transport-electron": "1.2.0-alpha.
|
|
28
|
+
"@onekeyfe/hd-transport-electron": "1.2.0-alpha.27",
|
|
28
29
|
"@types/w3c-web-usb": "^1.0.6",
|
|
29
30
|
"@types/web-bluetooth": "^0.0.17"
|
|
30
31
|
},
|
|
31
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "ea3c188364a6fb968875484805085e4466d3ef99"
|
|
32
33
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import transport, {
|
|
2
2
|
PROTOCOL_V1_MESSAGE_HEADER_SIZE,
|
|
3
|
+
PROTOCOL_V2_BLE_FRAME_MAX_BYTES,
|
|
3
4
|
PROTOCOL_V2_CHANNEL_BLE_UART,
|
|
4
5
|
ProtocolV2FrameAssembler,
|
|
5
6
|
ProtocolV2LinkManager,
|
|
@@ -793,6 +794,7 @@ export default class ElectronBleTransport {
|
|
|
793
794
|
|
|
794
795
|
return {
|
|
795
796
|
router: PROTOCOL_V2_CHANNEL_BLE_UART,
|
|
797
|
+
maxFrameBytes: PROTOCOL_V2_BLE_FRAME_MAX_BYTES,
|
|
796
798
|
generation,
|
|
797
799
|
prepareCall: () => {
|
|
798
800
|
assertCurrentGeneration();
|
package/src/webusb.ts
CHANGED
|
@@ -73,6 +73,8 @@ export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string>
|
|
|
73
73
|
/** Protobuf schema for Protocol V2 transports. */
|
|
74
74
|
messagesV2: ReturnType<typeof transport.parseConfigure> | undefined;
|
|
75
75
|
|
|
76
|
+
private protocolV2SchemaSource: string | undefined;
|
|
77
|
+
|
|
76
78
|
/** Per-path protocol type detected by active wire-level probe. */
|
|
77
79
|
private deviceProtocol: Map<string, ProtocolType> = new Map();
|
|
78
80
|
|
|
@@ -148,7 +150,17 @@ export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string>
|
|
|
148
150
|
* Cache the Protocol V2 protobuf schema.
|
|
149
151
|
*/
|
|
150
152
|
configureProtocolV2(signedData: any) {
|
|
153
|
+
const schemaSource =
|
|
154
|
+
typeof signedData === 'string'
|
|
155
|
+
? signedData
|
|
156
|
+
: JSON.stringify(signedData) ?? String(signedData);
|
|
157
|
+
if (schemaSource === this.protocolV2SchemaSource) return;
|
|
158
|
+
|
|
159
|
+
const hadProtocolV2Schema = this.protocolV2SchemaSource !== undefined;
|
|
151
160
|
this.messagesV2 = parseConfigure(signedData);
|
|
161
|
+
this.protocolV2SchemaSource = schemaSource;
|
|
162
|
+
if (!hadProtocolV2Schema) return;
|
|
163
|
+
|
|
152
164
|
this.invalidateAllProtocolV2UsbLinks('Protocol V2 schema reconfigured').catch(error =>
|
|
153
165
|
this.Log?.debug('[WebUsbTransport] schema link cleanup failed:', error)
|
|
154
166
|
);
|