@onekeyfe/hd-common-connect-sdk 1.2.0-alpha.3 → 1.2.0-alpha.31
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 +27 -7
- package/package.json +9 -9
- package/src/index.ts +15 -4
|
@@ -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);
|
|
@@ -647,7 +661,13 @@ function handleMessage(message) {
|
|
|
647
661
|
eventEmitter.emit(message.event, message);
|
|
648
662
|
break;
|
|
649
663
|
case HardwareSdk.DEVICE_EVENT:
|
|
650
|
-
if ([
|
|
664
|
+
if ([
|
|
665
|
+
HardwareSdk.DEVICE.CONNECT,
|
|
666
|
+
HardwareSdk.DEVICE.DISCONNECT,
|
|
667
|
+
HardwareSdk.DEVICE.FEATURES,
|
|
668
|
+
HardwareSdk.DEVICE.STATE,
|
|
669
|
+
HardwareSdk.DEVICE.SUPPORT_FEATURES,
|
|
670
|
+
].includes(message.type)) {
|
|
651
671
|
eventEmitter.emit(message.type, message.payload);
|
|
652
672
|
}
|
|
653
673
|
break;
|
|
@@ -729,7 +749,7 @@ var call = function (params) { return __awaiter(void 0, void 0, void 0, function
|
|
|
729
749
|
case 2:
|
|
730
750
|
response = _d.sent();
|
|
731
751
|
if (response) {
|
|
732
|
-
Log.debug('response: ', response);
|
|
752
|
+
Log.debug('response: ', blockLog ? '[REDACTED]' : response);
|
|
733
753
|
if (!response.success) {
|
|
734
754
|
if (((_a = response.payload) === null || _a === void 0 ? void 0 : _a.code) === hdShared.HardwareErrorCode.BleUnsupported) {
|
|
735
755
|
postMessage(HardwareSdk.createUiMessage(HardwareSdk.UI_REQUEST.BLUETOOTH_UNSUPPORTED), false);
|
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.31",
|
|
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.31",
|
|
24
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.31",
|
|
25
|
+
"@onekeyfe/hd-transport-emulator": "1.2.0-alpha.31",
|
|
26
|
+
"@onekeyfe/hd-transport-http": "1.2.0-alpha.31",
|
|
27
|
+
"@onekeyfe/hd-transport-lowlevel": "1.2.0-alpha.31",
|
|
28
|
+
"@onekeyfe/hd-transport-usb": "1.2.0-alpha.31",
|
|
29
|
+
"@onekeyfe/hd-transport-web-device": "1.2.0-alpha.31"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "01354bd66a7ef042a47f45c9ba80c49ba5b241de"
|
|
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) => {
|
|
@@ -102,7 +107,13 @@ function handleMessage(message: CoreMessage) {
|
|
|
102
107
|
case DEVICE_EVENT:
|
|
103
108
|
if (
|
|
104
109
|
(
|
|
105
|
-
[
|
|
110
|
+
[
|
|
111
|
+
DEVICE.CONNECT,
|
|
112
|
+
DEVICE.DISCONNECT,
|
|
113
|
+
DEVICE.FEATURES,
|
|
114
|
+
DEVICE.STATE,
|
|
115
|
+
DEVICE.SUPPORT_FEATURES,
|
|
116
|
+
] as string[]
|
|
106
117
|
).includes(message.type)
|
|
107
118
|
) {
|
|
108
119
|
eventEmitter.emit(message.type, message.payload);
|
|
@@ -167,7 +178,7 @@ const call = async (params: any) => {
|
|
|
167
178
|
try {
|
|
168
179
|
const response = await postMessage({ event: IFRAME.CALL, type: IFRAME.CALL, payload: params });
|
|
169
180
|
if (response) {
|
|
170
|
-
Log.debug('response: ', response);
|
|
181
|
+
Log.debug('response: ', blockLog ? '[REDACTED]' : response);
|
|
171
182
|
|
|
172
183
|
if (!response.success) {
|
|
173
184
|
if (response.payload?.code === HardwareErrorCode.BleUnsupported) {
|