@onekeyfe/hd-transport-web-device 1.2.8-alpha.106 → 1.2.8-alpha.107
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-cache.test.ts +60 -0
- package/dist/index.js +5 -1
- package/dist/webusb.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/webusb.ts +7 -1
|
@@ -64,6 +64,66 @@ describe('WebUsbTransport protocol probe cache', () => {
|
|
|
64
64
|
}
|
|
65
65
|
);
|
|
66
66
|
|
|
67
|
+
test.each([undefined, 2, 1])(
|
|
68
|
+
'configures a replacement V1 handle only when needed during packet recovery: %s',
|
|
69
|
+
async configurationValue => {
|
|
70
|
+
const webusb = new WebUsbTransport();
|
|
71
|
+
const path = 'replacement-v1-device';
|
|
72
|
+
const state = webusb as unknown as {
|
|
73
|
+
Log: { debug: jest.Mock };
|
|
74
|
+
deviceProtocol: Map<string, 'V1' | 'V2'>;
|
|
75
|
+
reconnectForPacketIoRetry: (
|
|
76
|
+
path: string,
|
|
77
|
+
direction: 'in' | 'out',
|
|
78
|
+
attempt: number,
|
|
79
|
+
error: unknown
|
|
80
|
+
) => Promise<void>;
|
|
81
|
+
};
|
|
82
|
+
state.Log = { debug: jest.fn() };
|
|
83
|
+
state.deviceProtocol.set(path, 'V1');
|
|
84
|
+
const replacement = {
|
|
85
|
+
opened: false,
|
|
86
|
+
configuration: configurationValue ? { configurationValue } : undefined,
|
|
87
|
+
configurations: [],
|
|
88
|
+
open: jest.fn().mockImplementation(() => {
|
|
89
|
+
replacement.opened = true;
|
|
90
|
+
return Promise.resolve();
|
|
91
|
+
}),
|
|
92
|
+
selectConfiguration: jest.fn().mockImplementation((value: number) => {
|
|
93
|
+
replacement.configuration = { configurationValue: value };
|
|
94
|
+
return Promise.resolve();
|
|
95
|
+
}),
|
|
96
|
+
reset: jest.fn(),
|
|
97
|
+
clearHalt: jest.fn(),
|
|
98
|
+
claimInterface: jest.fn().mockImplementation(() => {
|
|
99
|
+
if (replacement.configuration?.configurationValue !== 1) {
|
|
100
|
+
return Promise.reject(new Error('USB configuration is not selected'));
|
|
101
|
+
}
|
|
102
|
+
return Promise.resolve();
|
|
103
|
+
}),
|
|
104
|
+
};
|
|
105
|
+
let current = { opened: false } as USBDevice;
|
|
106
|
+
jest.spyOn(webusb, 'findDevice').mockImplementation(() => Promise.resolve(current));
|
|
107
|
+
jest.spyOn(webusb, 'getConnectedDevices').mockImplementation(() => {
|
|
108
|
+
current = replacement as unknown as USBDevice;
|
|
109
|
+
return Promise.resolve([]);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
await state.reconnectForPacketIoRetry(path, 'in', 0, new Error('transferIn failed'));
|
|
113
|
+
|
|
114
|
+
expect(replacement.selectConfiguration).toHaveBeenCalledTimes(
|
|
115
|
+
configurationValue === 1 ? 0 : 1
|
|
116
|
+
);
|
|
117
|
+
if (configurationValue !== 1) {
|
|
118
|
+
expect(replacement.selectConfiguration).toHaveBeenCalledWith(1);
|
|
119
|
+
}
|
|
120
|
+
expect(replacement.open).toHaveBeenCalledTimes(1);
|
|
121
|
+
expect(replacement.claimInterface).toHaveBeenCalledWith(0);
|
|
122
|
+
expect(replacement.reset).not.toHaveBeenCalled();
|
|
123
|
+
expect(replacement.clearHalt).not.toHaveBeenCalled();
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
|
|
67
127
|
test('uses the SDK 1.1.31 WebUSB sequence with descriptor endpoints for Protocol V1', async () => {
|
|
68
128
|
const webusb = new WebUsbTransport() as any;
|
|
69
129
|
const logger = { debug: jest.fn() };
|
package/dist/index.js
CHANGED
|
@@ -741,13 +741,17 @@ class WebUsbTransport extends transport.ProtocolV2UsbTransportBase {
|
|
|
741
741
|
}
|
|
742
742
|
}
|
|
743
743
|
if (this.shouldUseLegacyV1Connection(path, options)) {
|
|
744
|
-
if (first
|
|
744
|
+
if (first ||
|
|
745
|
+
!device.configuration ||
|
|
746
|
+
device.configuration.configurationValue !== this.configurationId) {
|
|
745
747
|
yield this.runLoggedHandleOperation({
|
|
746
748
|
operation: 'selectConfiguration',
|
|
747
749
|
device,
|
|
748
750
|
path,
|
|
749
751
|
task: () => device.selectConfiguration(this.configurationId),
|
|
750
752
|
});
|
|
753
|
+
}
|
|
754
|
+
if (first) {
|
|
751
755
|
try {
|
|
752
756
|
yield this.runLoggedHandleOperation({
|
|
753
757
|
operation: 'reset',
|
package/dist/webusb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webusb.d.ts","sourceRoot":"","sources":["../src/webusb.ts"],"names":[],"mappings":"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
|
|
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.8-alpha.
|
|
3
|
+
"version": "1.2.8-alpha.107",
|
|
4
4
|
"author": "OneKey",
|
|
5
5
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"lint:fix": "eslint . --fix"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@onekeyfe/hd-shared": "1.2.8-alpha.
|
|
25
|
-
"@onekeyfe/hd-transport": "1.2.8-alpha.
|
|
24
|
+
"@onekeyfe/hd-shared": "1.2.8-alpha.107",
|
|
25
|
+
"@onekeyfe/hd-transport": "1.2.8-alpha.107"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@onekeyfe/hd-transport-electron": "1.2.8-alpha.
|
|
28
|
+
"@onekeyfe/hd-transport-electron": "1.2.8-alpha.107",
|
|
29
29
|
"@types/w3c-web-usb": "^1.0.6",
|
|
30
30
|
"@types/web-bluetooth": "^0.0.17"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "727ca38ba11acbed3c08433ebd8958d9c43e9198"
|
|
33
33
|
}
|
package/src/webusb.ts
CHANGED
|
@@ -1036,13 +1036,19 @@ export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string>
|
|
|
1036
1036
|
if (this.shouldUseLegacyV1Connection(path, options)) {
|
|
1037
1037
|
// Match the last V1-only WebUSB lifecycle from SDK 1.1.31. Legacy devices
|
|
1038
1038
|
// configure before reset and keep the same USBDevice object afterwards.
|
|
1039
|
-
if (
|
|
1039
|
+
if (
|
|
1040
|
+
first ||
|
|
1041
|
+
!device.configuration ||
|
|
1042
|
+
device.configuration.configurationValue !== this.configurationId
|
|
1043
|
+
) {
|
|
1040
1044
|
await this.runLoggedHandleOperation({
|
|
1041
1045
|
operation: 'selectConfiguration',
|
|
1042
1046
|
device,
|
|
1043
1047
|
path,
|
|
1044
1048
|
task: () => device.selectConfiguration(this.configurationId),
|
|
1045
1049
|
});
|
|
1050
|
+
}
|
|
1051
|
+
if (first) {
|
|
1046
1052
|
try {
|
|
1047
1053
|
await this.runLoggedHandleOperation({
|
|
1048
1054
|
operation: 'reset',
|