@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.
@@ -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
- eventEmitter.removeAllListeners();
615
- (_a = _core === null || _core === void 0 ? void 0 : _core.dispose) === null || _a === void 0 ? void 0 : _a.call(_core);
616
- _settings = HardwareSdk.parseConnectSettings();
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 ([HardwareSdk.DEVICE.CONNECT, HardwareSdk.DEVICE.DISCONNECT, HardwareSdk.DEVICE.FEATURES, HardwareSdk.DEVICE.SUPPORT_FEATURES].includes(message.type)) {
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.2",
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.2",
24
- "@onekeyfe/hd-shared": "1.2.0-alpha.2",
25
- "@onekeyfe/hd-transport-emulator": "1.2.0-alpha.2",
26
- "@onekeyfe/hd-transport-http": "1.2.0-alpha.2",
27
- "@onekeyfe/hd-transport-lowlevel": "1.2.0-alpha.2",
28
- "@onekeyfe/hd-transport-usb": "1.2.0-alpha.2",
29
- "@onekeyfe/hd-transport-web-device": "1.2.0-alpha.2"
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": "6c183b7f7027f4b4d3db4f427f6360351a6c6680"
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
- _core?.dispose?.();
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
- [DEVICE.CONNECT, DEVICE.DISCONNECT, DEVICE.FEATURES, DEVICE.SUPPORT_FEATURES] as string[]
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,