@onekeyfe/hd-transport-web-device 1.2.8-alpha.12 → 1.2.8-alpha.121
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 +38 -7
- package/__tests__/webusb-identity-probe.test.ts +935 -0
- package/__tests__/webusb-protocol-cache.test.ts +301 -1
- package/__tests__/webusb-protocol-v2-timeout.test.ts +18 -5
- package/dist/electron-ble-transport.d.ts +1 -0
- package/dist/electron-ble-transport.d.ts.map +1 -1
- package/dist/index.d.ts +38 -3
- package/dist/index.js +643 -59
- package/dist/webusb.d.ts +38 -3
- package/dist/webusb.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/electron-ble-transport.ts +6 -9
- package/src/webusb.ts +758 -52
package/dist/webusb.d.ts
CHANGED
|
@@ -8,7 +8,16 @@ export interface DeviceInfo extends OneKeyDeviceInfoBase {
|
|
|
8
8
|
device: USBDevice;
|
|
9
9
|
protocolType?: ProtocolType;
|
|
10
10
|
}
|
|
11
|
+
interface WebUsbConnectOptions {
|
|
12
|
+
expectedProtocol?: ProtocolType;
|
|
13
|
+
forceProtocolDetection?: boolean;
|
|
14
|
+
}
|
|
11
15
|
export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string> {
|
|
16
|
+
private readonly identityProbe;
|
|
17
|
+
private readonly transportInstanceId;
|
|
18
|
+
private handleOperationSequence;
|
|
19
|
+
private deviceLogSequence;
|
|
20
|
+
private deviceLogIds;
|
|
12
21
|
messages: ReturnType<typeof transport.parseConfigure> | undefined;
|
|
13
22
|
messagesV2: ReturnType<typeof transport.parseConfigure> | undefined;
|
|
14
23
|
private protocolV2SchemaSource;
|
|
@@ -17,6 +26,11 @@ export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string>
|
|
|
17
26
|
private deviceProtocolHints;
|
|
18
27
|
private staleProtocolPaths;
|
|
19
28
|
private acquiredPaths;
|
|
29
|
+
private identityProbeDevices;
|
|
30
|
+
private normalDevices;
|
|
31
|
+
private pendingHandleOperations;
|
|
32
|
+
private stopPromise?;
|
|
33
|
+
private identityProbeCleanupPaths;
|
|
20
34
|
private probedDeviceObjects;
|
|
21
35
|
private deviceEndpoints;
|
|
22
36
|
name: string;
|
|
@@ -29,8 +43,19 @@ export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string>
|
|
|
29
43
|
configurationId: number;
|
|
30
44
|
endpointId: number;
|
|
31
45
|
interfaceId: number;
|
|
32
|
-
constructor();
|
|
46
|
+
constructor(identityProbe?: boolean);
|
|
33
47
|
init(logger: any, emitter?: EventEmitter): void;
|
|
48
|
+
stop(): Promise<void>;
|
|
49
|
+
private stopResources;
|
|
50
|
+
private assertRunning;
|
|
51
|
+
private runHandleOperation;
|
|
52
|
+
private getInterfaceClaimed;
|
|
53
|
+
private getDeviceLogId;
|
|
54
|
+
private getHandleLogState;
|
|
55
|
+
private getDiagnosticError;
|
|
56
|
+
private logLifecycle;
|
|
57
|
+
private logSkippedHandleOperation;
|
|
58
|
+
private runLoggedHandleOperation;
|
|
34
59
|
emitDeviceDisconnect(path: string, device?: USBDevice): void;
|
|
35
60
|
markProtocolStale(path: string): void;
|
|
36
61
|
configure(signedData: any): void;
|
|
@@ -44,10 +69,19 @@ export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string>
|
|
|
44
69
|
private createProtocolDetectionError;
|
|
45
70
|
private detectProtocol;
|
|
46
71
|
findDevice(path: string): Promise<USBDevice>;
|
|
47
|
-
connect(path: string, first: boolean): Promise<undefined>;
|
|
72
|
+
connect(path: string, first: boolean, options?: WebUsbConnectOptions): Promise<undefined>;
|
|
73
|
+
private shouldUseLegacyV1Connection;
|
|
48
74
|
private discoverEndpoints;
|
|
49
|
-
connectToDevice(path: string, first: boolean): Promise<undefined>;
|
|
75
|
+
connectToDevice(path: string, first: boolean, options?: WebUsbConnectOptions): Promise<undefined>;
|
|
76
|
+
private claimDeviceInterface;
|
|
77
|
+
private assertHandleAvailable;
|
|
78
|
+
private claimNormalHandle;
|
|
79
|
+
private releaseNormalHandles;
|
|
80
|
+
private isHandleOwnershipError;
|
|
81
|
+
private claimIdentityProbeHandle;
|
|
82
|
+
private releaseIdentityProbeHandle;
|
|
50
83
|
private closeOpenDevice;
|
|
84
|
+
private closeDeviceHandle;
|
|
51
85
|
private clearEndpointHalt;
|
|
52
86
|
private assertAcquired;
|
|
53
87
|
post(session: string, name: string, data: Record<string, unknown>): Promise<void>;
|
|
@@ -84,4 +118,5 @@ export default class WebUsbTransport extends ProtocolV2UsbTransportBase<string>
|
|
|
84
118
|
protected createProtocolV2UsbTimeoutError(name: string, timeoutMs: number): Error;
|
|
85
119
|
getProtocolType(path: string): ProtocolType | undefined;
|
|
86
120
|
}
|
|
121
|
+
export {};
|
|
87
122
|
//# sourceMappingURL=webusb.d.ts.map
|
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,EAG3B,MAAM,wBAAwB,CAAC;AAahC,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"webusb.d.ts","sourceRoot":"","sources":["../src/webusb.ts"],"names":[],"mappings":";;AACA,OAAO,SAAS,EAAE,EAQhB,0BAA0B,EAG3B,MAAM,wBAAwB,CAAC;AAahC,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AA0BhC,MAAM,WAAW,UAAW,SAAQ,oBAAoB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AA2BD,UAAU,oBAAoB;IAC5B,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAmCD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,0BAA0B,CAAC,MAAM,CAAC;IA+EjE,OAAO,CAAC,QAAQ,CAAC,aAAa;IA9E1C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmC;IAEvE,OAAO,CAAC,uBAAuB,CAAK;IAEpC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,YAAY,CAAoC;IAExD,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;IAEpE,OAAO,CAAC,sBAAsB,CAAqB;IAGnD,OAAO,CAAC,cAAc,CAAwC;IAG9D,OAAO,CAAC,wBAAwB,CAAwC;IAExE,OAAO,CAAC,mBAAmB,CAAwC;IAMnE,OAAO,CAAC,kBAAkB,CAA0B;IAGpD,OAAO,CAAC,aAAa,CAA0B;IAE/C,OAAO,CAAC,oBAAoB,CAAgC;IAE5D,OAAO,CAAC,aAAa,CAAgC;IAErD,OAAO,CAAC,uBAAuB,CAA+B;IAE9D,OAAO,CAAC,WAAW,CAAC,CAAgB;IAEpC,OAAO,CAAC,yBAAyB,CAAqB;IAStD,OAAO,CAAC,mBAAmB,CAAqC;IAGhE,OAAO,CAAC,eAAe,CAA2C;IAElE,IAAI,SAAqB;IAEzB,OAAO,UAAS;IAEhB,UAAU,UAAS;IAEnB,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,EAAE,YAAY,CAAC;IAMvB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAM;IAEnC,eAAe,SAAoB;IAEnC,UAAU,SAAe;IAEzB,WAAW,SAAgB;gBAEE,aAAa,UAAQ;IAWlD,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAexC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA6BP,aAAa;IA+E3B,OAAO,CAAC,aAAa;YAMP,kBAAkB;IAahC,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,yBAAyB;YAgBnB,wBAAwB;IAsDtC,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS;IAkBrD,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAQ9B,SAAS,CAAC,UAAU,EAAE,GAAG;IASzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAsB7B,kBAAkB;IA+BlB,SAAS;IAmCT,mBAAmB;IAgEnB,OAAO,CAAC,KAAK,EAAE,YAAY;IAwIjC,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,+BAA+B;IAOvC,OAAO,CAAC,4BAA4B;YAItB,cAAc;IAmEtB,UAAU,CAAC,IAAI,EAAE,MAAM;IAwBvB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB;IAwD9E,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,iBAAiB;IAiCnB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB;YA4HxE,oBAAoB;IAclC,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,0BAA0B;YAapB,eAAe;YAwBf,iBAAiB;YAwCjB,iBAAiB;IA+B/B,OAAO,CAAC,cAAc;IAOhB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASvE,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,uBAAuB;YASjB,uBAAuB;YAWvB,kBAAkB;IAyChC,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,wBAAwB;YAgBlB,yBAAyB;IA+DvC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;YASP,oBAAoB;YA6BpB,eAAe;YAsBf,mBAAmB;YA+CnB,cAAc;YAad,yBAAyB;YAKzB,yBAAyB;YAMzB,uBAAuB;YA0CvB,eAAe;YAqBf,eAAe;IAiBvB,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;YAkCd,cAAc;IAkBtB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAgD5C,OAAO,CAAC,IAAI,EAAE,MAAM;IA8B1B,SAAS,CAAC,uBAAuB,IAAI,iBAAiB;IAUtD,SAAS,CAAC,sBAAsB;cAIhB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC;cAIA,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,UAAU,CAAC;cASN,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,SAAS,CAAC,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKrE,SAAS,CAAC,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK;IAWjF,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
|
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.121",
|
|
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.121",
|
|
25
|
+
"@onekeyfe/hd-transport": "1.2.8-alpha.121"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@onekeyfe/hd-transport-electron": "1.2.8-alpha.
|
|
28
|
+
"@onekeyfe/hd-transport-electron": "1.2.8-alpha.121",
|
|
29
29
|
"@types/w3c-web-usb": "^1.0.6",
|
|
30
30
|
"@types/web-bluetooth": "^0.0.17"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "ce1078610eca281844be4caa5444d8dd2023fed4"
|
|
33
33
|
}
|
|
@@ -55,7 +55,7 @@ interface PacketProcessResult {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
const toBleDescriptor = (
|
|
58
|
-
device: { id: string; name: string | null },
|
|
58
|
+
device: { id: string; name: string | null; bleColorCode?: string },
|
|
59
59
|
protocolType?: ProtocolType
|
|
60
60
|
): OneKeyDeviceInfo =>
|
|
61
61
|
({
|
|
@@ -64,6 +64,7 @@ const toBleDescriptor = (
|
|
|
64
64
|
path: device.id,
|
|
65
65
|
debug: false,
|
|
66
66
|
commType: 'electron-ble',
|
|
67
|
+
...(device.bleColorCode ? { bleColorCode: device.bleColorCode } : {}),
|
|
67
68
|
...(protocolType ? { protocolType } : {}),
|
|
68
69
|
} as OneKeyDeviceInfo);
|
|
69
70
|
|
|
@@ -526,17 +527,13 @@ export default class ElectronBleTransport {
|
|
|
526
527
|
}
|
|
527
528
|
|
|
528
529
|
private createProtocolMismatchError(expected: ProtocolType) {
|
|
529
|
-
return ERRORS.TypedError(
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
);
|
|
530
|
+
return ERRORS.TypedError(HardwareErrorCode.TransportProtocolProbeFailed, undefined, {
|
|
531
|
+
expectedProtocol: expected,
|
|
532
|
+
});
|
|
533
533
|
}
|
|
534
534
|
|
|
535
535
|
private createProtocolDetectionError() {
|
|
536
|
-
return ERRORS.TypedError(
|
|
537
|
-
HardwareErrorCode.BleTimeoutError,
|
|
538
|
-
'Unable to detect BLE protocol: device did not respond to Protocol V1 GetFeatures or Protocol V2 Ping'
|
|
539
|
-
);
|
|
536
|
+
return ERRORS.TypedError(HardwareErrorCode.TransportProtocolProbeFailed);
|
|
540
537
|
}
|
|
541
538
|
|
|
542
539
|
private clearProbeProtocol(uuid: string, protocol: ProtocolType) {
|