@onekeyfe/hd-common-connect-sdk 1.2.0-alpha.2 → 1.2.0-alpha.20
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__/device-state-event.test.js +97 -0
- package/__tests__/device-state-events.test.ts +11 -0
- package/dist/index.js +30 -6
- package/package.json +9 -9
- package/src/index.ts +19 -3
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { CORE_EVENT, DEVICE, DEVICE_EVENT, initCore } from '@onekeyfe/hd-core';
|
|
2
|
+
|
|
3
|
+
import HardwareCommonConnectSdk from '../src';
|
|
4
|
+
|
|
5
|
+
jest.mock('@onekeyfe/hd-core', () => {
|
|
6
|
+
const actual = jest.requireActual('@onekeyfe/hd-core');
|
|
7
|
+
return {
|
|
8
|
+
__esModule: true,
|
|
9
|
+
...actual,
|
|
10
|
+
default: ({ eventEmitter, init, dispose }) => ({
|
|
11
|
+
init,
|
|
12
|
+
dispose,
|
|
13
|
+
on: (type, listener) => eventEmitter.on(type, listener),
|
|
14
|
+
off: (type, listener) => eventEmitter.off(type, listener),
|
|
15
|
+
removeAllListeners: type => eventEmitter.removeAllListeners(type),
|
|
16
|
+
}),
|
|
17
|
+
initCore: jest.fn(),
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
describe('hd-common-connect-sdk device state events', () => {
|
|
22
|
+
test('forwards KnownDevice connect and disconnect payload wrappers to SDK consumers', async () => {
|
|
23
|
+
let handleCoreMessage;
|
|
24
|
+
const core = {
|
|
25
|
+
on: jest.fn((event, listener) => {
|
|
26
|
+
if (event === CORE_EVENT) {
|
|
27
|
+
handleCoreMessage = listener;
|
|
28
|
+
}
|
|
29
|
+
}),
|
|
30
|
+
dispose: jest.fn(),
|
|
31
|
+
};
|
|
32
|
+
initCore.mockResolvedValue(core);
|
|
33
|
+
const onConnect = jest.fn();
|
|
34
|
+
const onDisconnect = jest.fn();
|
|
35
|
+
HardwareCommonConnectSdk.on(DEVICE.CONNECT, onConnect);
|
|
36
|
+
HardwareCommonConnectSdk.on(DEVICE.DISCONNECT, onDisconnect);
|
|
37
|
+
|
|
38
|
+
await HardwareCommonConnectSdk.init({ env: 'lowlevel' });
|
|
39
|
+
const device = {
|
|
40
|
+
connectId: 'ble-connect-id',
|
|
41
|
+
serialNo: 'SERIAL-001',
|
|
42
|
+
uuid: 'SERIAL-001',
|
|
43
|
+
label: 'OneKey Test',
|
|
44
|
+
};
|
|
45
|
+
const payload = { device };
|
|
46
|
+
|
|
47
|
+
handleCoreMessage({
|
|
48
|
+
event: DEVICE_EVENT,
|
|
49
|
+
type: DEVICE.CONNECT,
|
|
50
|
+
payload,
|
|
51
|
+
});
|
|
52
|
+
handleCoreMessage({
|
|
53
|
+
event: DEVICE_EVENT,
|
|
54
|
+
type: DEVICE.DISCONNECT,
|
|
55
|
+
payload,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
expect(onConnect).toHaveBeenCalledWith(payload);
|
|
59
|
+
expect(onDisconnect).toHaveBeenCalledWith(payload);
|
|
60
|
+
HardwareCommonConnectSdk.removeAllListeners(DEVICE.CONNECT);
|
|
61
|
+
HardwareCommonConnectSdk.removeAllListeners(DEVICE.DISCONNECT);
|
|
62
|
+
await HardwareCommonConnectSdk.dispose();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test('forwards Protocol V2 DEVICE.STATE payloads to SDK consumers', async () => {
|
|
66
|
+
let handleCoreMessage;
|
|
67
|
+
const core = {
|
|
68
|
+
on: jest.fn((event, listener) => {
|
|
69
|
+
if (event === CORE_EVENT) {
|
|
70
|
+
handleCoreMessage = listener;
|
|
71
|
+
}
|
|
72
|
+
}),
|
|
73
|
+
dispose: jest.fn(),
|
|
74
|
+
};
|
|
75
|
+
initCore.mockResolvedValue(core);
|
|
76
|
+
const listener = jest.fn();
|
|
77
|
+
HardwareCommonConnectSdk.on(DEVICE.STATE, listener);
|
|
78
|
+
|
|
79
|
+
await HardwareCommonConnectSdk.init({ env: 'webusb' });
|
|
80
|
+
const payload = {
|
|
81
|
+
connectId: 'connect-id',
|
|
82
|
+
revision: 1,
|
|
83
|
+
source: 'device-info',
|
|
84
|
+
changedKeys: ['protocolVersion'],
|
|
85
|
+
state: { protocol: 'V2', protocolVersion: 2 },
|
|
86
|
+
};
|
|
87
|
+
handleCoreMessage({
|
|
88
|
+
event: DEVICE_EVENT,
|
|
89
|
+
type: DEVICE.STATE,
|
|
90
|
+
payload,
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
expect(listener).toHaveBeenCalledWith(payload);
|
|
94
|
+
HardwareCommonConnectSdk.removeAllListeners(DEVICE.STATE);
|
|
95
|
+
await HardwareCommonConnectSdk.dispose();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { resolve } from 'path';
|
|
3
|
+
|
|
4
|
+
describe('hd-common-connect-sdk device state events', () => {
|
|
5
|
+
test('forwards the canonical DEVICE.STATE event to SDK consumers', () => {
|
|
6
|
+
const source = readFileSync(resolve(__dirname, '../src/index.ts'), 'utf8');
|
|
7
|
+
|
|
8
|
+
expect(source).toContain('DEVICE.STATE');
|
|
9
|
+
expect(source).toContain('eventEmitter.emit(message.type, message.payload)');
|
|
10
|
+
});
|
|
11
|
+
});
|
package/dist/index.js
CHANGED
|
@@ -609,12 +609,26 @@ var _core;
|
|
|
609
609
|
var _settings = HardwareSdk.parseConnectSettings();
|
|
610
610
|
var _messageID = 0;
|
|
611
611
|
var messagePromises = {};
|
|
612
|
-
var dispose = function () {
|
|
612
|
+
var dispose = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
613
|
+
var core;
|
|
613
614
|
var _a;
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
615
|
+
return __generator(this, function (_b) {
|
|
616
|
+
switch (_b.label) {
|
|
617
|
+
case 0:
|
|
618
|
+
core = _core;
|
|
619
|
+
_core = undefined;
|
|
620
|
+
eventEmitter.removeAllListeners();
|
|
621
|
+
Object.keys(messagePromises).forEach(function (key) {
|
|
622
|
+
delete messagePromises[Number(key)];
|
|
623
|
+
});
|
|
624
|
+
_settings = HardwareSdk.parseConnectSettings();
|
|
625
|
+
return [4 /*yield*/, ((_a = core === null || core === void 0 ? void 0 : core.dispose) === null || _a === void 0 ? void 0 : _a.call(core))];
|
|
626
|
+
case 1:
|
|
627
|
+
_b.sent();
|
|
628
|
+
return [2 /*return*/];
|
|
629
|
+
}
|
|
630
|
+
});
|
|
631
|
+
}); };
|
|
618
632
|
var uiResponse = function (response) {
|
|
619
633
|
if (!_core) {
|
|
620
634
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.NotInitialized);
|
|
@@ -627,6 +641,9 @@ var cancel = function (connectId) {
|
|
|
627
641
|
return;
|
|
628
642
|
_core.handleMessage({ event: HardwareSdk.IFRAME.CANCEL, type: HardwareSdk.IFRAME.CANCEL, payload: { connectId: connectId } });
|
|
629
643
|
};
|
|
644
|
+
var cancelOperation = function (operationId) {
|
|
645
|
+
_core === null || _core === void 0 ? void 0 : _core.cancelOperation(operationId);
|
|
646
|
+
};
|
|
630
647
|
function handleMessage(message) {
|
|
631
648
|
var event = message.event;
|
|
632
649
|
if (!_core) {
|
|
@@ -647,7 +664,13 @@ function handleMessage(message) {
|
|
|
647
664
|
eventEmitter.emit(message.event, message);
|
|
648
665
|
break;
|
|
649
666
|
case HardwareSdk.DEVICE_EVENT:
|
|
650
|
-
if ([
|
|
667
|
+
if ([
|
|
668
|
+
HardwareSdk.DEVICE.CONNECT,
|
|
669
|
+
HardwareSdk.DEVICE.DISCONNECT,
|
|
670
|
+
HardwareSdk.DEVICE.FEATURES,
|
|
671
|
+
HardwareSdk.DEVICE.STATE,
|
|
672
|
+
HardwareSdk.DEVICE.SUPPORT_FEATURES,
|
|
673
|
+
].includes(message.type)) {
|
|
651
674
|
eventEmitter.emit(message.type, message.payload);
|
|
652
675
|
}
|
|
653
676
|
break;
|
|
@@ -759,6 +782,7 @@ var HardwareCommonConnectSdk = HardwareSdk__default["default"]({
|
|
|
759
782
|
init: init,
|
|
760
783
|
call: call,
|
|
761
784
|
cancel: cancel,
|
|
785
|
+
cancelOperation: cancelOperation,
|
|
762
786
|
dispose: dispose,
|
|
763
787
|
uiResponse: uiResponse,
|
|
764
788
|
updateSettings: updateSettings,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-common-connect-sdk",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.20",
|
|
4
4
|
"author": "OneKey",
|
|
5
5
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
6
6
|
"license": "ISC",
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
"lint:fix": "eslint . --fix"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@onekeyfe/hd-core": "1.2.0-alpha.
|
|
24
|
-
"@onekeyfe/hd-shared": "1.2.0-alpha.
|
|
25
|
-
"@onekeyfe/hd-transport-emulator": "1.2.0-alpha.
|
|
26
|
-
"@onekeyfe/hd-transport-http": "1.2.0-alpha.
|
|
27
|
-
"@onekeyfe/hd-transport-lowlevel": "1.2.0-alpha.
|
|
28
|
-
"@onekeyfe/hd-transport-usb": "1.2.0-alpha.
|
|
29
|
-
"@onekeyfe/hd-transport-web-device": "1.2.0-alpha.
|
|
23
|
+
"@onekeyfe/hd-core": "1.2.0-alpha.20",
|
|
24
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.20",
|
|
25
|
+
"@onekeyfe/hd-transport-emulator": "1.2.0-alpha.20",
|
|
26
|
+
"@onekeyfe/hd-transport-http": "1.2.0-alpha.20",
|
|
27
|
+
"@onekeyfe/hd-transport-lowlevel": "1.2.0-alpha.20",
|
|
28
|
+
"@onekeyfe/hd-transport-usb": "1.2.0-alpha.20",
|
|
29
|
+
"@onekeyfe/hd-transport-web-device": "1.2.0-alpha.20"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "5fbc1ada90fd3cfda7e5ef08be368cb452018733"
|
|
32
32
|
}
|
package/src/index.ts
CHANGED
|
@@ -60,10 +60,15 @@ let _settings = parseConnectSettings();
|
|
|
60
60
|
let _messageID = 0;
|
|
61
61
|
export const messagePromises: { [key: number]: Deferred<any> } = {};
|
|
62
62
|
|
|
63
|
-
const dispose = () => {
|
|
63
|
+
const dispose = async () => {
|
|
64
|
+
const core = _core;
|
|
65
|
+
_core = undefined;
|
|
64
66
|
eventEmitter.removeAllListeners();
|
|
65
|
-
|
|
67
|
+
Object.keys(messagePromises).forEach(key => {
|
|
68
|
+
delete messagePromises[Number(key)];
|
|
69
|
+
});
|
|
66
70
|
_settings = parseConnectSettings();
|
|
71
|
+
await core?.dispose?.();
|
|
67
72
|
};
|
|
68
73
|
|
|
69
74
|
const uiResponse = (response: UiResponseEvent) => {
|
|
@@ -79,6 +84,10 @@ const cancel = (connectId?: string) => {
|
|
|
79
84
|
_core.handleMessage({ event: IFRAME.CANCEL, type: IFRAME.CANCEL, payload: { connectId } });
|
|
80
85
|
};
|
|
81
86
|
|
|
87
|
+
const cancelOperation = (operationId: string) => {
|
|
88
|
+
_core?.cancelOperation(operationId);
|
|
89
|
+
};
|
|
90
|
+
|
|
82
91
|
function handleMessage(message: CoreMessage) {
|
|
83
92
|
const { event } = message;
|
|
84
93
|
if (!_core) {
|
|
@@ -102,7 +111,13 @@ function handleMessage(message: CoreMessage) {
|
|
|
102
111
|
case DEVICE_EVENT:
|
|
103
112
|
if (
|
|
104
113
|
(
|
|
105
|
-
[
|
|
114
|
+
[
|
|
115
|
+
DEVICE.CONNECT,
|
|
116
|
+
DEVICE.DISCONNECT,
|
|
117
|
+
DEVICE.FEATURES,
|
|
118
|
+
DEVICE.STATE,
|
|
119
|
+
DEVICE.SUPPORT_FEATURES,
|
|
120
|
+
] as string[]
|
|
106
121
|
).includes(message.type)
|
|
107
122
|
) {
|
|
108
123
|
eventEmitter.emit(message.type, message.payload);
|
|
@@ -199,6 +214,7 @@ const HardwareCommonConnectSdk = HardwareSdk({
|
|
|
199
214
|
init,
|
|
200
215
|
call,
|
|
201
216
|
cancel,
|
|
217
|
+
cancelOperation,
|
|
202
218
|
dispose,
|
|
203
219
|
uiResponse,
|
|
204
220
|
updateSettings,
|