@onekeyfe/hd-common-connect-sdk 1.2.0-alpha.57 → 1.2.0-alpha.59
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/README.md +1 -7
- package/__tests__/device-state-event.test.js +2 -38
- package/dist/index.d.ts +3 -12
- package/dist/index.js +169 -208
- package/package.json +9 -9
- package/src/index.ts +140 -192
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# `@onekeyfe/hd-common-connect-sdk`
|
|
2
2
|
|
|
3
|
-
`@onekeyfe/hd-common-connect-sdk`
|
|
4
|
-
Electron BLE, low-level, and emulator environments. It does not use an iframe.
|
|
3
|
+
`@onekeyfe/hd-common-connect-sdk` is a libarary that runs in the node enviroment. And communicates with transport in the normal way.
|
|
5
4
|
|
|
6
5
|
## Installation
|
|
7
6
|
|
|
@@ -25,18 +24,13 @@ import HardwareSDK from '@onekeyfe/hd-common-connect-sdk';
|
|
|
25
24
|
function init() {
|
|
26
25
|
HardwareSDK.init({
|
|
27
26
|
debug: false,
|
|
28
|
-
env: 'webusb',
|
|
29
27
|
});
|
|
30
28
|
}
|
|
31
29
|
```
|
|
32
30
|
|
|
33
|
-
Test and factory-only methods are intentionally absent from the default SDK. Use
|
|
34
|
-
`@onekeyfe/hd-test-api` when those methods are required.
|
|
35
|
-
|
|
36
31
|
## Docs
|
|
37
32
|
|
|
38
33
|
Documentation is available [hardware-js-sdk](https://developer.onekey.so/connect-to-hardware/hardware-sdk/start)
|
|
39
34
|
|
|
40
35
|
## Examples
|
|
41
|
-
|
|
42
36
|
// TODO: add example url
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { CORE_EVENT, DEVICE, DEVICE_EVENT, initCore } from '@onekeyfe/hd-core';
|
|
2
|
-
import { WebUsbTransport } from '@onekeyfe/hd-transport-web-device';
|
|
3
2
|
|
|
4
|
-
import HardwareCommonConnectSdk
|
|
3
|
+
import HardwareCommonConnectSdk from '../src';
|
|
5
4
|
|
|
6
5
|
jest.mock('@onekeyfe/hd-core', () => {
|
|
7
6
|
const actual = jest.requireActual('@onekeyfe/hd-core');
|
|
8
7
|
return {
|
|
9
8
|
__esModule: true,
|
|
10
9
|
...actual,
|
|
11
|
-
default: ({ eventEmitter, init, dispose
|
|
10
|
+
default: ({ eventEmitter, init, dispose }) => ({
|
|
12
11
|
init,
|
|
13
12
|
dispose,
|
|
14
|
-
call,
|
|
15
13
|
on: (type, listener) => eventEmitter.on(type, listener),
|
|
16
14
|
off: (type, listener) => eventEmitter.off(type, listener),
|
|
17
15
|
removeAllListeners: type => eventEmitter.removeAllListeners(type),
|
|
@@ -79,11 +77,6 @@ describe('hd-common-connect-sdk device state events', () => {
|
|
|
79
77
|
HardwareCommonConnectSdk.on(DEVICE.STATE, listener);
|
|
80
78
|
|
|
81
79
|
await HardwareCommonConnectSdk.init({ env: 'webusb' });
|
|
82
|
-
expect(initCore).toHaveBeenLastCalledWith(
|
|
83
|
-
expect.objectContaining({ env: 'webusb' }),
|
|
84
|
-
WebUsbTransport,
|
|
85
|
-
undefined
|
|
86
|
-
);
|
|
87
80
|
const payload = {
|
|
88
81
|
connectId: 'connect-id',
|
|
89
82
|
revision: 1,
|
|
@@ -101,33 +94,4 @@ describe('hd-common-connect-sdk device state events', () => {
|
|
|
101
94
|
HardwareCommonConnectSdk.removeAllListeners(DEVICE.STATE);
|
|
102
95
|
await HardwareCommonConnectSdk.dispose();
|
|
103
96
|
});
|
|
104
|
-
|
|
105
|
-
test('keeps method extensions scoped to the created SDK instance', async () => {
|
|
106
|
-
const methodExtension = {
|
|
107
|
-
name: 'test-extension',
|
|
108
|
-
methods: {},
|
|
109
|
-
};
|
|
110
|
-
const extendedSdk = createHardwareCommonConnectSdk({
|
|
111
|
-
extension: {
|
|
112
|
-
methodExtensions: [methodExtension],
|
|
113
|
-
createApi: () => ({ extensionMarker: () => 'enabled' }),
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
expect(extendedSdk.extensionMarker()).toBe('enabled');
|
|
118
|
-
expect(HardwareCommonConnectSdk).not.toHaveProperty('extensionMarker');
|
|
119
|
-
|
|
120
|
-
initCore.mockResolvedValue({ on: jest.fn(), dispose: jest.fn() });
|
|
121
|
-
await extendedSdk.init({ env: 'webusb' });
|
|
122
|
-
expect(initCore).toHaveBeenLastCalledWith(
|
|
123
|
-
expect.objectContaining({ env: 'webusb' }),
|
|
124
|
-
WebUsbTransport,
|
|
125
|
-
undefined,
|
|
126
|
-
{
|
|
127
|
-
methodExtensions: [methodExtension],
|
|
128
|
-
allowDestructiveOperations: false,
|
|
129
|
-
}
|
|
130
|
-
);
|
|
131
|
-
await extendedSdk.dispose();
|
|
132
|
-
});
|
|
133
97
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as _onekeyfe_hd_core from '@onekeyfe/hd-core';
|
|
2
2
|
import { Deferred } from '@onekeyfe/hd-shared';
|
|
3
3
|
|
|
4
|
-
type HardwareCommonConnectSdkExtension<TExtensionApi extends object> = {
|
|
5
|
-
methodExtensions: readonly CoreMethodExtension[];
|
|
6
|
-
createApi: (call: CoreApi['call']) => TExtensionApi;
|
|
7
|
-
};
|
|
8
|
-
type HardwareCommonConnectSdkOptions<TExtensionApi extends object> = {
|
|
9
|
-
extension?: HardwareCommonConnectSdkExtension<TExtensionApi>;
|
|
10
|
-
allowDestructiveOperations?: boolean;
|
|
11
|
-
};
|
|
12
|
-
declare const createHardwareCommonConnectSdk: <TExtensionApi extends object = Record<never, never>>(options?: HardwareCommonConnectSdkOptions<TExtensionApi>) => CoreApi & TExtensionApi;
|
|
13
|
-
declare const HardwareCommonConnectSdk: CoreApi & object;
|
|
14
4
|
declare const messagePromises: {
|
|
15
5
|
[key: number]: Deferred<any>;
|
|
16
6
|
};
|
|
7
|
+
declare const HardwareCommonConnectSdk: _onekeyfe_hd_core.CoreApi;
|
|
17
8
|
|
|
18
|
-
export {
|
|
9
|
+
export { HardwareCommonConnectSdk as default, messagePromises };
|
package/dist/index.js
CHANGED
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var HardwareSdk = require('@onekeyfe/hd-core');
|
|
6
6
|
var hdShared = require('@onekeyfe/hd-shared');
|
|
7
|
-
var EmulatorTransport = require('@onekeyfe/hd-transport-emulator');
|
|
8
7
|
var HttpTransport = require('@onekeyfe/hd-transport-http');
|
|
9
|
-
var LowlevelTransport = require('@onekeyfe/hd-transport-lowlevel');
|
|
10
8
|
var hdTransportWebDevice = require('@onekeyfe/hd-transport-web-device');
|
|
9
|
+
var LowlevelTransport = require('@onekeyfe/hd-transport-lowlevel');
|
|
10
|
+
var EmulatorTransport = require('@onekeyfe/hd-transport-emulator');
|
|
11
11
|
|
|
12
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
13
|
|
|
@@ -30,9 +30,9 @@ function _interopNamespace(e) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
var HardwareSdk__default = /*#__PURE__*/_interopDefaultLegacy(HardwareSdk);
|
|
33
|
-
var EmulatorTransport__default = /*#__PURE__*/_interopDefaultLegacy(EmulatorTransport);
|
|
34
33
|
var HttpTransport__default = /*#__PURE__*/_interopDefaultLegacy(HttpTransport);
|
|
35
34
|
var LowlevelTransport__default = /*#__PURE__*/_interopDefaultLegacy(LowlevelTransport);
|
|
35
|
+
var EmulatorTransport__default = /*#__PURE__*/_interopDefaultLegacy(EmulatorTransport);
|
|
36
36
|
|
|
37
37
|
/******************************************************************************
|
|
38
38
|
Copyright (c) Microsoft Corporation.
|
|
@@ -579,6 +579,7 @@ function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
|
|
|
579
579
|
}
|
|
580
580
|
}
|
|
581
581
|
|
|
582
|
+
var eventEmitter = new events.exports();
|
|
582
583
|
var Log = HardwareSdk.getLogger(HardwareSdk.LoggerNames.HdCommonConnectSdk);
|
|
583
584
|
var getTransport = function (env) { return __awaiter(void 0, void 0, void 0, function () {
|
|
584
585
|
var NodeUsbTransport;
|
|
@@ -604,225 +605,185 @@ var getTransport = function (env) { return __awaiter(void 0, void 0, void 0, fun
|
|
|
604
605
|
}
|
|
605
606
|
});
|
|
606
607
|
}); };
|
|
607
|
-
var
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
608
|
+
var _core;
|
|
609
|
+
var _settings = HardwareSdk.parseConnectSettings();
|
|
610
|
+
var _messageID = 0;
|
|
611
|
+
var messagePromises = {};
|
|
612
|
+
var dispose = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
611
613
|
var core;
|
|
612
|
-
var
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
settings = HardwareSdk.parseConnectSettings();
|
|
628
|
-
return [4 /*yield*/, ((_a = currentCore === null || currentCore === void 0 ? void 0 : currentCore.dispose) === null || _a === void 0 ? void 0 : _a.call(currentCore))];
|
|
629
|
-
case 1:
|
|
630
|
-
_b.sent();
|
|
631
|
-
return [2 /*return*/];
|
|
632
|
-
}
|
|
633
|
-
});
|
|
634
|
-
}); };
|
|
635
|
-
var uiResponse = function (response) {
|
|
636
|
-
if (!core) {
|
|
637
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.NotInitialized);
|
|
638
|
-
}
|
|
639
|
-
var type = response.type, payload = response.payload;
|
|
640
|
-
core
|
|
641
|
-
.handleMessage({ event: HardwareSdk.UI_EVENT, type: type, payload: payload })
|
|
642
|
-
.catch(function (error) { return Log.error(HardwareSdk.createErrorMessage(error)); });
|
|
643
|
-
};
|
|
644
|
-
var cancel = function (connectId) {
|
|
645
|
-
if (!core)
|
|
646
|
-
return;
|
|
647
|
-
core
|
|
648
|
-
.handleMessage({
|
|
649
|
-
event: HardwareSdk.IFRAME.CANCEL,
|
|
650
|
-
type: HardwareSdk.IFRAME.CANCEL,
|
|
651
|
-
payload: { connectId: connectId },
|
|
652
|
-
})
|
|
653
|
-
.catch(function (error) { return Log.error(HardwareSdk.createErrorMessage(error)); });
|
|
654
|
-
};
|
|
655
|
-
function handleMessage(message) {
|
|
656
|
-
var event = message.event;
|
|
657
|
-
if (!core) {
|
|
658
|
-
return;
|
|
659
|
-
}
|
|
660
|
-
var blockLog = HardwareSdk.getLogBlockLabel(message);
|
|
661
|
-
if (event !== HardwareSdk.LOG_EVENT) {
|
|
662
|
-
Log.debug('hd-common-connect-sdk handleMessage', blockLog !== null && blockLog !== void 0 ? blockLog : message);
|
|
614
|
+
var _a;
|
|
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*/];
|
|
663
629
|
}
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
630
|
+
});
|
|
631
|
+
}); };
|
|
632
|
+
var uiResponse = function (response) {
|
|
633
|
+
if (!_core) {
|
|
634
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.NotInitialized);
|
|
635
|
+
}
|
|
636
|
+
var type = response.type, payload = response.payload;
|
|
637
|
+
_core.handleMessage({ event: HardwareSdk.UI_EVENT, type: type, payload: payload });
|
|
638
|
+
};
|
|
639
|
+
var cancel = function (connectId) {
|
|
640
|
+
if (_core === undefined)
|
|
641
|
+
return;
|
|
642
|
+
_core.handleMessage({ event: HardwareSdk.IFRAME.CANCEL, type: HardwareSdk.IFRAME.CANCEL, payload: { connectId: connectId } });
|
|
643
|
+
};
|
|
644
|
+
function handleMessage(message) {
|
|
645
|
+
var event = message.event;
|
|
646
|
+
if (!_core) {
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
var blockLog = HardwareSdk.getLogBlockLabel(message);
|
|
650
|
+
if (event !== HardwareSdk.LOG_EVENT) {
|
|
651
|
+
Log.debug('hd-common-connect-sdk handleMessage', blockLog !== null && blockLog !== void 0 ? blockLog : message);
|
|
652
|
+
}
|
|
653
|
+
switch (event) {
|
|
654
|
+
case HardwareSdk.UI_EVENT:
|
|
655
|
+
// pass UI event up
|
|
656
|
+
eventEmitter.emit(message.event, message);
|
|
657
|
+
eventEmitter.emit(message.type, message.payload);
|
|
658
|
+
break;
|
|
659
|
+
case HardwareSdk.LOG_EVENT:
|
|
660
|
+
case HardwareSdk.FIRMWARE_EVENT:
|
|
661
|
+
eventEmitter.emit(message.event, message);
|
|
662
|
+
break;
|
|
663
|
+
case HardwareSdk.DEVICE_EVENT:
|
|
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)) {
|
|
667
671
|
eventEmitter.emit(message.type, message.payload);
|
|
668
|
-
break;
|
|
669
|
-
case HardwareSdk.LOG_EVENT:
|
|
670
|
-
case HardwareSdk.FIRMWARE_EVENT:
|
|
671
|
-
eventEmitter.emit(message.event, message);
|
|
672
|
-
break;
|
|
673
|
-
case HardwareSdk.DEVICE_EVENT:
|
|
674
|
-
if ([
|
|
675
|
-
HardwareSdk.DEVICE.CONNECT,
|
|
676
|
-
HardwareSdk.DEVICE.DISCONNECT,
|
|
677
|
-
HardwareSdk.DEVICE.FEATURES,
|
|
678
|
-
HardwareSdk.DEVICE.STATE,
|
|
679
|
-
HardwareSdk.DEVICE.SUPPORT_FEATURES,
|
|
680
|
-
].includes(message.type)) {
|
|
681
|
-
eventEmitter.emit(message.type, message.payload);
|
|
682
|
-
}
|
|
683
|
-
break;
|
|
684
|
-
case HardwareSdk.IFRAME.CALLBACK: {
|
|
685
|
-
var _a = message.payload, callbackId = _a.callbackId, data = _a.data, error = _a.error;
|
|
686
|
-
HardwareSdk.executeCallback(callbackId, data, error);
|
|
687
|
-
break;
|
|
688
672
|
}
|
|
689
|
-
|
|
690
|
-
|
|
673
|
+
break;
|
|
674
|
+
case HardwareSdk.IFRAME.CALLBACK: {
|
|
675
|
+
var _a = message.payload, callbackId = _a.callbackId, data = _a.data, error = _a.error;
|
|
676
|
+
HardwareSdk.executeCallback(callbackId, data, error);
|
|
677
|
+
break;
|
|
691
678
|
}
|
|
679
|
+
default:
|
|
680
|
+
Log.log('No need to be captured message', message.event);
|
|
692
681
|
}
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
throw hdShared.ERRORS.TypedError('postMessage: _core not found');
|
|
701
|
-
}
|
|
702
|
-
if (usePromise) {
|
|
703
|
-
messageID += 1;
|
|
704
|
-
instanceMessagePromises[messageID] = hdShared.createDeferred();
|
|
705
|
-
return [2 /*return*/, core.handleMessage(__assign(__assign({}, message), { id: "".concat(messageID) }))];
|
|
706
|
-
}
|
|
707
|
-
return [4 /*yield*/, core.handleMessage(message)];
|
|
708
|
-
case 1:
|
|
709
|
-
_a.sent();
|
|
710
|
-
return [2 /*return*/];
|
|
711
|
-
}
|
|
712
|
-
});
|
|
713
|
-
});
|
|
714
|
-
}
|
|
715
|
-
var init = function (partialSettings, _, plugin) { return __awaiter(void 0, void 0, void 0, function () {
|
|
716
|
-
var Transport, error_1;
|
|
717
|
-
var _a;
|
|
718
|
-
return __generator(this, function (_b) {
|
|
719
|
-
switch (_b.label) {
|
|
682
|
+
}
|
|
683
|
+
function postMessage(message, usePromise) {
|
|
684
|
+
if (usePromise === void 0) { usePromise = true; }
|
|
685
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
686
|
+
var response;
|
|
687
|
+
return __generator(this, function (_a) {
|
|
688
|
+
switch (_a.label) {
|
|
720
689
|
case 0:
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
690
|
+
if (!_core) {
|
|
691
|
+
throw hdShared.ERRORS.TypedError('postMessage: _core not found');
|
|
692
|
+
}
|
|
693
|
+
if (!usePromise) return [3 /*break*/, 2];
|
|
694
|
+
_messageID++;
|
|
695
|
+
messagePromises[_messageID] = hdShared.createDeferred();
|
|
696
|
+
return [4 /*yield*/, _core.handleMessage(__assign(__assign({}, message), { id: "".concat(_messageID) }))];
|
|
725
697
|
case 1:
|
|
726
|
-
|
|
727
|
-
return
|
|
698
|
+
response = _a.sent();
|
|
699
|
+
// return promise;
|
|
700
|
+
return [2 /*return*/, response];
|
|
728
701
|
case 2:
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
return [4 /*yield*/, HardwareSdk.initCore(settings, Transport, plugin, {
|
|
732
|
-
methodExtensions: options.extension.methodExtensions,
|
|
733
|
-
allowDestructiveOperations: options.allowDestructiveOperations === true,
|
|
734
|
-
})];
|
|
735
|
-
case 3:
|
|
736
|
-
core = _b.sent();
|
|
737
|
-
return [3 /*break*/, 6];
|
|
738
|
-
case 4: return [4 /*yield*/, HardwareSdk.initCore(settings, Transport, plugin)];
|
|
739
|
-
case 5:
|
|
740
|
-
core = _b.sent();
|
|
741
|
-
_b.label = 6;
|
|
742
|
-
case 6:
|
|
743
|
-
core === null || core === void 0 ? void 0 : core.on(HardwareSdk.CORE_EVENT, handleMessage);
|
|
744
|
-
HardwareSdk.setLoggerPostMessage(handleMessage);
|
|
745
|
-
return [2 /*return*/, true];
|
|
746
|
-
case 7:
|
|
747
|
-
error_1 = _b.sent();
|
|
748
|
-
Log.error(HardwareSdk.createErrorMessage(error_1));
|
|
749
|
-
return [2 /*return*/, false];
|
|
750
|
-
case 8: return [2 /*return*/];
|
|
702
|
+
_core.handleMessage(message);
|
|
703
|
+
return [2 /*return*/];
|
|
751
704
|
}
|
|
752
705
|
});
|
|
753
|
-
});
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
706
|
+
});
|
|
707
|
+
}
|
|
708
|
+
var init = function (settings, _, plugin) { return __awaiter(void 0, void 0, void 0, function () {
|
|
709
|
+
var Transport, error_1;
|
|
710
|
+
var _a;
|
|
711
|
+
return __generator(this, function (_b) {
|
|
712
|
+
switch (_b.label) {
|
|
713
|
+
case 0:
|
|
714
|
+
_settings = __assign(__assign(__assign({}, _settings), settings), { env: (_a = settings.env) !== null && _a !== void 0 ? _a : 'node' });
|
|
715
|
+
HardwareSdk.enableLog(!!settings.debug);
|
|
716
|
+
Log.debug('init');
|
|
717
|
+
_b.label = 1;
|
|
718
|
+
case 1:
|
|
719
|
+
_b.trys.push([1, 4, , 5]);
|
|
720
|
+
return [4 /*yield*/, getTransport(_settings.env)];
|
|
721
|
+
case 2:
|
|
722
|
+
Transport = _b.sent();
|
|
723
|
+
return [4 /*yield*/, HardwareSdk.initCore(_settings, Transport, plugin)];
|
|
724
|
+
case 3:
|
|
725
|
+
_core = _b.sent();
|
|
726
|
+
_core === null || _core === void 0 ? void 0 : _core.on(HardwareSdk.CORE_EVENT, handleMessage);
|
|
727
|
+
HardwareSdk.setLoggerPostMessage(handleMessage);
|
|
728
|
+
return [2 /*return*/, true];
|
|
729
|
+
case 4:
|
|
730
|
+
error_1 = _b.sent();
|
|
731
|
+
Log.error(HardwareSdk.createErrorMessage(error_1));
|
|
732
|
+
return [2 /*return*/, false];
|
|
733
|
+
case 5: return [2 /*return*/];
|
|
734
|
+
}
|
|
735
|
+
});
|
|
736
|
+
}); };
|
|
737
|
+
var call = function (params) { return __awaiter(void 0, void 0, void 0, function () {
|
|
738
|
+
var blockLog, response, error_2;
|
|
739
|
+
var _a, _b, _c;
|
|
740
|
+
return __generator(this, function (_d) {
|
|
741
|
+
switch (_d.label) {
|
|
742
|
+
case 0:
|
|
743
|
+
blockLog = HardwareSdk.getLogBlockLabel(params);
|
|
744
|
+
Log.debug('call: ', blockLog !== null && blockLog !== void 0 ? blockLog : params);
|
|
745
|
+
_d.label = 1;
|
|
746
|
+
case 1:
|
|
747
|
+
_d.trys.push([1, 3, , 4]);
|
|
748
|
+
return [4 /*yield*/, postMessage({ event: HardwareSdk.IFRAME.CALL, type: HardwareSdk.IFRAME.CALL, payload: params })];
|
|
749
|
+
case 2:
|
|
750
|
+
response = _d.sent();
|
|
751
|
+
if (response) {
|
|
752
|
+
Log.debug('response: ', blockLog ? '[REDACTED]' : response);
|
|
753
|
+
if (!response.success) {
|
|
754
|
+
if (((_a = response.payload) === null || _a === void 0 ? void 0 : _a.code) === hdShared.HardwareErrorCode.BleUnsupported) {
|
|
755
|
+
postMessage(HardwareSdk.createUiMessage(HardwareSdk.UI_REQUEST.BLUETOOTH_UNSUPPORTED), false);
|
|
756
|
+
}
|
|
757
|
+
if (((_b = response.payload) === null || _b === void 0 ? void 0 : _b.code) === hdShared.HardwareErrorCode.BlePoweredOff) {
|
|
758
|
+
postMessage(HardwareSdk.createUiMessage(HardwareSdk.UI_REQUEST.BLUETOOTH_POWERED_OFF), false);
|
|
759
|
+
}
|
|
760
|
+
if (((_c = response.payload) === null || _c === void 0 ? void 0 : _c.code) === hdShared.HardwareErrorCode.BlePermissionError) {
|
|
761
|
+
postMessage(HardwareSdk.createUiMessage(HardwareSdk.UI_REQUEST.BLUETOOTH_PERMISSION), false);
|
|
790
762
|
}
|
|
791
|
-
return [2 /*return*/, response];
|
|
792
763
|
}
|
|
793
|
-
return [2 /*return*/,
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
var updateSettings = function () { return Promise.resolve(true); };
|
|
803
|
-
var switchTransport = function () { return Promise.resolve({ success: true }); };
|
|
804
|
-
var sdk = HardwareSdk__default["default"]({
|
|
805
|
-
eventEmitter: eventEmitter,
|
|
806
|
-
init: init,
|
|
807
|
-
call: call,
|
|
808
|
-
cancel: cancel,
|
|
809
|
-
dispose: dispose,
|
|
810
|
-
uiResponse: uiResponse,
|
|
811
|
-
updateSettings: updateSettings,
|
|
812
|
-
switchTransport: switchTransport,
|
|
764
|
+
return [2 /*return*/, response];
|
|
765
|
+
}
|
|
766
|
+
return [2 /*return*/, HardwareSdk.createErrorMessage(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodNotResponse))];
|
|
767
|
+
case 3:
|
|
768
|
+
error_2 = _d.sent();
|
|
769
|
+
Log.error('__call error: ', error_2);
|
|
770
|
+
return [2 /*return*/, HardwareSdk.createErrorMessage(error_2)];
|
|
771
|
+
case 4: return [2 /*return*/];
|
|
772
|
+
}
|
|
813
773
|
});
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
774
|
+
}); };
|
|
775
|
+
var updateSettings = function () { return Promise.resolve(true); };
|
|
776
|
+
var switchTransport = function () { return Promise.resolve({ success: true }); };
|
|
777
|
+
var HardwareCommonConnectSdk = HardwareSdk__default["default"]({
|
|
778
|
+
eventEmitter: eventEmitter,
|
|
779
|
+
init: init,
|
|
780
|
+
call: call,
|
|
781
|
+
cancel: cancel,
|
|
782
|
+
dispose: dispose,
|
|
783
|
+
uiResponse: uiResponse,
|
|
784
|
+
updateSettings: updateSettings,
|
|
785
|
+
switchTransport: switchTransport,
|
|
786
|
+
});
|
|
825
787
|
|
|
826
|
-
exports.createHardwareCommonConnectSdk = createHardwareCommonConnectSdk;
|
|
827
788
|
exports["default"] = HardwareCommonConnectSdk;
|
|
828
789
|
exports.messagePromises = messagePromises;
|
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.59",
|
|
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.59",
|
|
24
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.59",
|
|
25
|
+
"@onekeyfe/hd-transport-emulator": "1.2.0-alpha.59",
|
|
26
|
+
"@onekeyfe/hd-transport-http": "1.2.0-alpha.59",
|
|
27
|
+
"@onekeyfe/hd-transport-lowlevel": "1.2.0-alpha.59",
|
|
28
|
+
"@onekeyfe/hd-transport-usb": "1.2.0-alpha.59",
|
|
29
|
+
"@onekeyfe/hd-transport-web-device": "1.2.0-alpha.59"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "98794c3032aab55e13fb2afedc645d8281141d5f"
|
|
32
32
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
2
|
import HardwareSdk, {
|
|
3
3
|
CORE_EVENT,
|
|
4
4
|
DEVICE,
|
|
@@ -20,23 +20,22 @@ import HardwareSdk, {
|
|
|
20
20
|
setLoggerPostMessage,
|
|
21
21
|
} from '@onekeyfe/hd-core';
|
|
22
22
|
import { ERRORS, HardwareErrorCode, createDeferred } from '@onekeyfe/hd-shared';
|
|
23
|
-
import EmulatorTransport from '@onekeyfe/hd-transport-emulator';
|
|
24
23
|
import HttpTransport from '@onekeyfe/hd-transport-http';
|
|
25
|
-
import LowlevelTransport from '@onekeyfe/hd-transport-lowlevel';
|
|
26
24
|
import { ElectronBleTransport, WebUsbTransport } from '@onekeyfe/hd-transport-web-device';
|
|
25
|
+
import LowlevelTransport from '@onekeyfe/hd-transport-lowlevel';
|
|
26
|
+
import EmulatorTransport from '@onekeyfe/hd-transport-emulator';
|
|
27
27
|
|
|
28
|
+
import type { Deferred } from '@onekeyfe/hd-shared';
|
|
28
29
|
import type {
|
|
29
30
|
ConnectSettings,
|
|
30
31
|
Core,
|
|
31
|
-
CoreApi,
|
|
32
32
|
CoreMessage,
|
|
33
|
-
CoreMethodExtension,
|
|
34
33
|
LowLevelCoreApi,
|
|
35
34
|
UiResponseEvent,
|
|
36
35
|
} from '@onekeyfe/hd-core';
|
|
37
|
-
import type { Deferred } from '@onekeyfe/hd-shared';
|
|
38
36
|
import type { LowlevelTransportSharedPlugin } from '@onekeyfe/hd-transport';
|
|
39
37
|
|
|
38
|
+
const eventEmitter = new EventEmitter();
|
|
40
39
|
const Log = getLogger(LoggerNames.HdCommonConnectSdk);
|
|
41
40
|
|
|
42
41
|
const getTransport = async (env: ConnectSettings['env']) => {
|
|
@@ -46,7 +45,8 @@ const getTransport = async (env: ConnectSettings['env']) => {
|
|
|
46
45
|
if (env === 'webusb' || env === 'desktop-webusb') return WebUsbTransport;
|
|
47
46
|
if (env === 'lowlevel') return LowlevelTransport;
|
|
48
47
|
if (env === 'node-usb') {
|
|
49
|
-
//
|
|
48
|
+
// Dynamic import — usb is a native Node.js module (libusb C++ bindings)
|
|
49
|
+
// that cannot be resolved by browser/React Native bundlers
|
|
50
50
|
const { default: NodeUsbTransport } = await import('@onekeyfe/hd-transport-usb');
|
|
51
51
|
return NodeUsbTransport;
|
|
52
52
|
}
|
|
@@ -54,218 +54,166 @@ const getTransport = async (env: ConnectSettings['env']) => {
|
|
|
54
54
|
return HttpTransport;
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
createApi: (call: CoreApi['call']) => TExtensionApi;
|
|
60
|
-
};
|
|
57
|
+
let _core: Core | undefined;
|
|
58
|
+
let _settings = parseConnectSettings();
|
|
61
59
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
allowDestructiveOperations?: boolean;
|
|
65
|
-
};
|
|
60
|
+
let _messageID = 0;
|
|
61
|
+
export const messagePromises: { [key: number]: Deferred<any> } = {};
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
const dispose = async () => {
|
|
64
|
+
const core = _core;
|
|
65
|
+
_core = undefined;
|
|
66
|
+
eventEmitter.removeAllListeners();
|
|
67
|
+
Object.keys(messagePromises).forEach(key => {
|
|
68
|
+
delete messagePromises[Number(key)];
|
|
69
|
+
});
|
|
70
|
+
_settings = parseConnectSettings();
|
|
71
|
+
await core?.dispose?.();
|
|
70
72
|
};
|
|
71
73
|
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const instanceMessagePromises: { [key: number]: Deferred<any> } = {};
|
|
80
|
-
|
|
81
|
-
const dispose = async () => {
|
|
82
|
-
const currentCore = core;
|
|
83
|
-
core = undefined;
|
|
84
|
-
eventEmitter.removeAllListeners();
|
|
85
|
-
Object.keys(instanceMessagePromises).forEach(key => {
|
|
86
|
-
delete instanceMessagePromises[Number(key)];
|
|
87
|
-
});
|
|
88
|
-
settings = parseConnectSettings();
|
|
89
|
-
await currentCore?.dispose?.();
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
const uiResponse = (response: UiResponseEvent) => {
|
|
93
|
-
if (!core) {
|
|
94
|
-
throw ERRORS.TypedError(HardwareErrorCode.NotInitialized);
|
|
95
|
-
}
|
|
96
|
-
const { type, payload } = response;
|
|
97
|
-
core
|
|
98
|
-
.handleMessage({ event: UI_EVENT, type, payload } as CoreMessage)
|
|
99
|
-
.catch(error => Log.error(createErrorMessage(error)));
|
|
100
|
-
};
|
|
74
|
+
const uiResponse = (response: UiResponseEvent) => {
|
|
75
|
+
if (!_core) {
|
|
76
|
+
throw ERRORS.TypedError(HardwareErrorCode.NotInitialized);
|
|
77
|
+
}
|
|
78
|
+
const { type, payload } = response;
|
|
79
|
+
_core.handleMessage({ event: UI_EVENT, type, payload } as CoreMessage);
|
|
80
|
+
};
|
|
101
81
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
event: IFRAME.CANCEL,
|
|
107
|
-
type: IFRAME.CANCEL,
|
|
108
|
-
payload: { connectId },
|
|
109
|
-
})
|
|
110
|
-
.catch(error => Log.error(createErrorMessage(error)));
|
|
111
|
-
};
|
|
82
|
+
const cancel = (connectId?: string) => {
|
|
83
|
+
if (_core === undefined) return;
|
|
84
|
+
_core.handleMessage({ event: IFRAME.CANCEL, type: IFRAME.CANCEL, payload: { connectId } });
|
|
85
|
+
};
|
|
112
86
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
87
|
+
function handleMessage(message: CoreMessage) {
|
|
88
|
+
const { event } = message;
|
|
89
|
+
if (!_core) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
118
92
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
93
|
+
const blockLog = getLogBlockLabel(message);
|
|
94
|
+
if (event !== LOG_EVENT) {
|
|
95
|
+
Log.debug('hd-common-connect-sdk handleMessage', blockLog ?? message);
|
|
96
|
+
}
|
|
97
|
+
switch (event) {
|
|
98
|
+
case UI_EVENT:
|
|
99
|
+
// pass UI event up
|
|
100
|
+
eventEmitter.emit(message.event, message);
|
|
101
|
+
eventEmitter.emit(message.type, message.payload);
|
|
102
|
+
break;
|
|
103
|
+
case LOG_EVENT:
|
|
104
|
+
case FIRMWARE_EVENT:
|
|
105
|
+
eventEmitter.emit(message.event, message);
|
|
106
|
+
break;
|
|
107
|
+
case DEVICE_EVENT:
|
|
108
|
+
if (
|
|
109
|
+
(
|
|
110
|
+
[
|
|
111
|
+
DEVICE.CONNECT,
|
|
112
|
+
DEVICE.DISCONNECT,
|
|
113
|
+
DEVICE.FEATURES,
|
|
114
|
+
DEVICE.STATE,
|
|
115
|
+
DEVICE.SUPPORT_FEATURES,
|
|
116
|
+
] as string[]
|
|
117
|
+
).includes(message.type)
|
|
118
|
+
) {
|
|
126
119
|
eventEmitter.emit(message.type, message.payload);
|
|
127
|
-
break;
|
|
128
|
-
case LOG_EVENT:
|
|
129
|
-
case FIRMWARE_EVENT:
|
|
130
|
-
eventEmitter.emit(message.event, message);
|
|
131
|
-
break;
|
|
132
|
-
case DEVICE_EVENT:
|
|
133
|
-
if (
|
|
134
|
-
(
|
|
135
|
-
[
|
|
136
|
-
DEVICE.CONNECT,
|
|
137
|
-
DEVICE.DISCONNECT,
|
|
138
|
-
DEVICE.FEATURES,
|
|
139
|
-
DEVICE.STATE,
|
|
140
|
-
DEVICE.SUPPORT_FEATURES,
|
|
141
|
-
] as string[]
|
|
142
|
-
).includes(message.type)
|
|
143
|
-
) {
|
|
144
|
-
eventEmitter.emit(message.type, message.payload);
|
|
145
|
-
}
|
|
146
|
-
break;
|
|
147
|
-
case IFRAME.CALLBACK: {
|
|
148
|
-
const { callbackId, data, error } = message.payload;
|
|
149
|
-
executeCallback(callbackId, data, error);
|
|
150
|
-
break;
|
|
151
120
|
}
|
|
152
|
-
|
|
153
|
-
|
|
121
|
+
break;
|
|
122
|
+
case IFRAME.CALLBACK: {
|
|
123
|
+
const { callbackId, data, error } = message.payload;
|
|
124
|
+
executeCallback(callbackId, data, error);
|
|
125
|
+
break;
|
|
154
126
|
}
|
|
127
|
+
default:
|
|
128
|
+
Log.log('No need to be captured message', message.event);
|
|
155
129
|
}
|
|
130
|
+
}
|
|
156
131
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if (usePromise) {
|
|
163
|
-
messageID += 1;
|
|
164
|
-
instanceMessagePromises[messageID] = createDeferred();
|
|
165
|
-
return core.handleMessage({ ...message, id: `${messageID}` });
|
|
166
|
-
}
|
|
132
|
+
async function postMessage(message: CoreMessage, usePromise = true) {
|
|
133
|
+
if (!_core) {
|
|
134
|
+
throw ERRORS.TypedError('postMessage: _core not found');
|
|
135
|
+
}
|
|
167
136
|
|
|
168
|
-
|
|
137
|
+
if (usePromise) {
|
|
138
|
+
_messageID++;
|
|
139
|
+
messagePromises[_messageID] = createDeferred();
|
|
140
|
+
// const { promise } = messagePromises[_messageID];
|
|
141
|
+
const response = await _core.handleMessage({ ...message, id: `${_messageID}` });
|
|
142
|
+
// return promise;
|
|
143
|
+
return response;
|
|
169
144
|
}
|
|
170
145
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
_?: LowLevelCoreApi,
|
|
174
|
-
plugin?: LowlevelTransportSharedPlugin
|
|
175
|
-
) => {
|
|
176
|
-
settings = { ...settings, ...partialSettings, env: partialSettings.env ?? 'node' };
|
|
146
|
+
_core.handleMessage(message);
|
|
147
|
+
}
|
|
177
148
|
|
|
178
|
-
|
|
179
|
-
|
|
149
|
+
const init = async (
|
|
150
|
+
settings: Partial<ConnectSettings>,
|
|
151
|
+
_?: LowLevelCoreApi,
|
|
152
|
+
plugin?: LowlevelTransportSharedPlugin
|
|
153
|
+
) => {
|
|
154
|
+
_settings = { ..._settings, ...settings, env: settings.env ?? 'node' };
|
|
180
155
|
|
|
181
|
-
|
|
182
|
-
const Transport = await getTransport(settings.env);
|
|
183
|
-
if (options.extension) {
|
|
184
|
-
core = await initCore(settings, Transport, plugin, {
|
|
185
|
-
methodExtensions: options.extension.methodExtensions,
|
|
186
|
-
allowDestructiveOperations: options.allowDestructiveOperations === true,
|
|
187
|
-
});
|
|
188
|
-
} else {
|
|
189
|
-
core = await initCore(settings, Transport, plugin);
|
|
190
|
-
}
|
|
191
|
-
core?.on(CORE_EVENT, handleMessage);
|
|
192
|
-
setLoggerPostMessage(handleMessage);
|
|
156
|
+
enableLog(!!settings.debug);
|
|
193
157
|
|
|
194
|
-
|
|
195
|
-
} catch (error) {
|
|
196
|
-
Log.error(createErrorMessage(error));
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
199
|
-
};
|
|
158
|
+
Log.debug('init');
|
|
200
159
|
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
|
|
160
|
+
try {
|
|
161
|
+
const Transport = await getTransport(_settings.env);
|
|
162
|
+
_core = await initCore(_settings, Transport, plugin);
|
|
163
|
+
_core?.on(CORE_EVENT, handleMessage);
|
|
164
|
+
setLoggerPostMessage(handleMessage);
|
|
204
165
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
type: IFRAME.CALL,
|
|
209
|
-
payload: params,
|
|
210
|
-
});
|
|
211
|
-
if (response) {
|
|
212
|
-
Log.debug('response: ', blockLog ? '[REDACTED]' : response);
|
|
166
|
+
return true;
|
|
167
|
+
} catch (error) {
|
|
168
|
+
Log.error(createErrorMessage(error));
|
|
213
169
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
Log.error(createErrorMessage(error))
|
|
218
|
-
);
|
|
219
|
-
}
|
|
220
|
-
if (response.payload?.code === HardwareErrorCode.BlePoweredOff) {
|
|
221
|
-
postMessage(createUiMessage(UI_REQUEST.BLUETOOTH_POWERED_OFF), false).catch(error =>
|
|
222
|
-
Log.error(createErrorMessage(error))
|
|
223
|
-
);
|
|
224
|
-
}
|
|
225
|
-
if (response.payload?.code === HardwareErrorCode.BlePermissionError) {
|
|
226
|
-
postMessage(createUiMessage(UI_REQUEST.BLUETOOTH_PERMISSION), false).catch(error =>
|
|
227
|
-
Log.error(createErrorMessage(error))
|
|
228
|
-
);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
231
173
|
|
|
232
|
-
|
|
233
|
-
|
|
174
|
+
const call = async (params: any) => {
|
|
175
|
+
const blockLog = getLogBlockLabel(params);
|
|
176
|
+
Log.debug('call: ', blockLog ?? params);
|
|
234
177
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}
|
|
240
|
-
};
|
|
178
|
+
try {
|
|
179
|
+
const response = await postMessage({ event: IFRAME.CALL, type: IFRAME.CALL, payload: params });
|
|
180
|
+
if (response) {
|
|
181
|
+
Log.debug('response: ', blockLog ? '[REDACTED]' : response);
|
|
241
182
|
|
|
242
|
-
|
|
243
|
-
|
|
183
|
+
if (!response.success) {
|
|
184
|
+
if (response.payload?.code === HardwareErrorCode.BleUnsupported) {
|
|
185
|
+
postMessage(createUiMessage(UI_REQUEST.BLUETOOTH_UNSUPPORTED), false);
|
|
186
|
+
}
|
|
187
|
+
if (response.payload?.code === HardwareErrorCode.BlePoweredOff) {
|
|
188
|
+
postMessage(createUiMessage(UI_REQUEST.BLUETOOTH_POWERED_OFF), false);
|
|
189
|
+
}
|
|
190
|
+
if (response.payload?.code === HardwareErrorCode.BlePermissionError) {
|
|
191
|
+
postMessage(createUiMessage(UI_REQUEST.BLUETOOTH_PERMISSION), false);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
244
194
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
init,
|
|
248
|
-
call,
|
|
249
|
-
cancel,
|
|
250
|
-
dispose,
|
|
251
|
-
uiResponse,
|
|
252
|
-
updateSettings,
|
|
253
|
-
switchTransport,
|
|
254
|
-
});
|
|
255
|
-
const extensionApi = options.extension?.createApi(sdk.call) ?? ({} as TExtensionApi);
|
|
195
|
+
return response;
|
|
196
|
+
}
|
|
256
197
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
198
|
+
return createErrorMessage(ERRORS.TypedError(HardwareErrorCode.CallMethodNotResponse));
|
|
199
|
+
} catch (error) {
|
|
200
|
+
Log.error('__call error: ', error);
|
|
201
|
+
return createErrorMessage(error);
|
|
202
|
+
}
|
|
261
203
|
};
|
|
262
204
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
205
|
+
const updateSettings = () => Promise.resolve(true);
|
|
206
|
+
const switchTransport = () => Promise.resolve({ success: true });
|
|
207
|
+
|
|
208
|
+
const HardwareCommonConnectSdk = HardwareSdk({
|
|
209
|
+
eventEmitter,
|
|
210
|
+
init,
|
|
211
|
+
call,
|
|
212
|
+
cancel,
|
|
213
|
+
dispose,
|
|
214
|
+
uiResponse,
|
|
215
|
+
updateSettings,
|
|
216
|
+
switchTransport,
|
|
217
|
+
});
|
|
270
218
|
|
|
271
219
|
export default HardwareCommonConnectSdk;
|