@onekeyfe/hd-common-connect-sdk 1.2.0-alpha.16 → 1.2.0-alpha.161
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 -15
- package/package.json +9 -9
- package/src/index.ts +15 -13
|
@@ -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,18 +641,11 @@ var cancel = function (connectId) {
|
|
|
627
641
|
return;
|
|
628
642
|
_core.handleMessage({ event: HardwareSdk.IFRAME.CANCEL, type: HardwareSdk.IFRAME.CANCEL, payload: { connectId: connectId } });
|
|
629
643
|
};
|
|
630
|
-
var cancelOperation = function (operationId) {
|
|
631
|
-
_core === null || _core === void 0 ? void 0 : _core.cancelOperation(operationId);
|
|
632
|
-
};
|
|
633
644
|
function handleMessage(message) {
|
|
634
645
|
var event = message.event;
|
|
635
646
|
if (!_core) {
|
|
636
647
|
return;
|
|
637
648
|
}
|
|
638
|
-
var blockLog = HardwareSdk.getLogBlockLabel(message);
|
|
639
|
-
if (event !== HardwareSdk.LOG_EVENT) {
|
|
640
|
-
Log.debug('hd-common-connect-sdk handleMessage', blockLog !== null && blockLog !== void 0 ? blockLog : message);
|
|
641
|
-
}
|
|
642
649
|
switch (event) {
|
|
643
650
|
case HardwareSdk.UI_EVENT:
|
|
644
651
|
// pass UI event up
|
|
@@ -650,7 +657,13 @@ function handleMessage(message) {
|
|
|
650
657
|
eventEmitter.emit(message.event, message);
|
|
651
658
|
break;
|
|
652
659
|
case HardwareSdk.DEVICE_EVENT:
|
|
653
|
-
if ([
|
|
660
|
+
if ([
|
|
661
|
+
HardwareSdk.DEVICE.CONNECT,
|
|
662
|
+
HardwareSdk.DEVICE.DISCONNECT,
|
|
663
|
+
HardwareSdk.DEVICE.FEATURES,
|
|
664
|
+
HardwareSdk.DEVICE.STATE,
|
|
665
|
+
HardwareSdk.DEVICE.SUPPORT_FEATURES,
|
|
666
|
+
].includes(message.type)) {
|
|
654
667
|
eventEmitter.emit(message.type, message.payload);
|
|
655
668
|
}
|
|
656
669
|
break;
|
|
@@ -732,7 +745,7 @@ var call = function (params) { return __awaiter(void 0, void 0, void 0, function
|
|
|
732
745
|
case 2:
|
|
733
746
|
response = _d.sent();
|
|
734
747
|
if (response) {
|
|
735
|
-
Log.debug('response: ', response);
|
|
748
|
+
Log.debug('response: ', blockLog ? '[REDACTED]' : response);
|
|
736
749
|
if (!response.success) {
|
|
737
750
|
if (((_a = response.payload) === null || _a === void 0 ? void 0 : _a.code) === hdShared.HardwareErrorCode.BleUnsupported) {
|
|
738
751
|
postMessage(HardwareSdk.createUiMessage(HardwareSdk.UI_REQUEST.BLUETOOTH_UNSUPPORTED), false);
|
|
@@ -762,7 +775,6 @@ var HardwareCommonConnectSdk = HardwareSdk__default["default"]({
|
|
|
762
775
|
init: init,
|
|
763
776
|
call: call,
|
|
764
777
|
cancel: cancel,
|
|
765
|
-
cancelOperation: cancelOperation,
|
|
766
778
|
dispose: dispose,
|
|
767
779
|
uiResponse: uiResponse,
|
|
768
780
|
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.161",
|
|
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.161",
|
|
24
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.161",
|
|
25
|
+
"@onekeyfe/hd-transport-emulator": "1.2.0-alpha.161",
|
|
26
|
+
"@onekeyfe/hd-transport-http": "1.2.0-alpha.161",
|
|
27
|
+
"@onekeyfe/hd-transport-lowlevel": "1.2.0-alpha.161",
|
|
28
|
+
"@onekeyfe/hd-transport-usb": "1.2.0-alpha.161",
|
|
29
|
+
"@onekeyfe/hd-transport-web-device": "1.2.0-alpha.161"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "06316117fc9a7ebaecea1ca583b2d105709361bf"
|
|
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,20 +84,12 @@ const cancel = (connectId?: string) => {
|
|
|
79
84
|
_core.handleMessage({ event: IFRAME.CANCEL, type: IFRAME.CANCEL, payload: { connectId } });
|
|
80
85
|
};
|
|
81
86
|
|
|
82
|
-
const cancelOperation = (operationId: string) => {
|
|
83
|
-
_core?.cancelOperation(operationId);
|
|
84
|
-
};
|
|
85
|
-
|
|
86
87
|
function handleMessage(message: CoreMessage) {
|
|
87
88
|
const { event } = message;
|
|
88
89
|
if (!_core) {
|
|
89
90
|
return;
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
const blockLog = getLogBlockLabel(message);
|
|
93
|
-
if (event !== LOG_EVENT) {
|
|
94
|
-
Log.debug('hd-common-connect-sdk handleMessage', blockLog ?? message);
|
|
95
|
-
}
|
|
96
93
|
switch (event) {
|
|
97
94
|
case UI_EVENT:
|
|
98
95
|
// pass UI event up
|
|
@@ -106,7 +103,13 @@ function handleMessage(message: CoreMessage) {
|
|
|
106
103
|
case DEVICE_EVENT:
|
|
107
104
|
if (
|
|
108
105
|
(
|
|
109
|
-
[
|
|
106
|
+
[
|
|
107
|
+
DEVICE.CONNECT,
|
|
108
|
+
DEVICE.DISCONNECT,
|
|
109
|
+
DEVICE.FEATURES,
|
|
110
|
+
DEVICE.STATE,
|
|
111
|
+
DEVICE.SUPPORT_FEATURES,
|
|
112
|
+
] as string[]
|
|
110
113
|
).includes(message.type)
|
|
111
114
|
) {
|
|
112
115
|
eventEmitter.emit(message.type, message.payload);
|
|
@@ -171,7 +174,7 @@ const call = async (params: any) => {
|
|
|
171
174
|
try {
|
|
172
175
|
const response = await postMessage({ event: IFRAME.CALL, type: IFRAME.CALL, payload: params });
|
|
173
176
|
if (response) {
|
|
174
|
-
Log.debug('response: ', response);
|
|
177
|
+
Log.debug('response: ', blockLog ? '[REDACTED]' : response);
|
|
175
178
|
|
|
176
179
|
if (!response.success) {
|
|
177
180
|
if (response.payload?.code === HardwareErrorCode.BleUnsupported) {
|
|
@@ -203,7 +206,6 @@ const HardwareCommonConnectSdk = HardwareSdk({
|
|
|
203
206
|
init,
|
|
204
207
|
call,
|
|
205
208
|
cancel,
|
|
206
|
-
cancelOperation,
|
|
207
209
|
dispose,
|
|
208
210
|
uiResponse,
|
|
209
211
|
updateSettings,
|