@onekeyfe/hd-transport-web-device 1.2.0-alpha.25 → 1.2.0-alpha.26
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__/webusb-protocol-v2-timeout.test.ts +24 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +10 -0
- package/dist/webusb.d.ts +1 -0
- package/dist/webusb.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/webusb.ts +12 -0
|
@@ -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';
|
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() {
|
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/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.26",
|
|
4
4
|
"author": "OneKey",
|
|
5
5
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
"lint:fix": "eslint . --fix"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@onekeyfe/hd-shared": "1.2.0-alpha.
|
|
24
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
23
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.26",
|
|
24
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.26"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@onekeyfe/hd-transport-electron": "1.2.0-alpha.
|
|
27
|
+
"@onekeyfe/hd-transport-electron": "1.2.0-alpha.26",
|
|
28
28
|
"@types/w3c-web-usb": "^1.0.6",
|
|
29
29
|
"@types/web-bluetooth": "^0.0.17"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "1401fef3eb93f5a83ed5e8375b99181b7aaa6054"
|
|
32
32
|
}
|
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
|
);
|