@onekeyfe/hd-core 0.0.5 → 0.0.8

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.
@@ -5,7 +5,7 @@ export default class SearchDevices extends BaseMethod {
5
5
  init(): void;
6
6
  run(): Promise<{
7
7
  connectId: string;
8
- deviceType: string;
8
+ deviceType: import("..").IDeviceType | null;
9
9
  path: string;
10
10
  session?: string | null | undefined;
11
11
  debugSession?: string | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchDevices.d.ts","sourceRoot":"","sources":["../../src/api/SearchDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAKxD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,IAAI;IAIE,GAAG;;;;;;;;;;CA+BV"}
1
+ {"version":3,"file":"SearchDevices.d.ts","sourceRoot":"","sources":["../../src/api/SearchDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAMxD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,IAAI;IAIE,GAAG;;;;;;;;;;CA8BV"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AASlC,OAAO,EACL,WAAW,EAYZ,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,UAAU,CAAC;AAE7D,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAWxD,eAAO,MAAM,OAAO,YAAmB,WAAW,iBAuHjD,CAAC;AAoHF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,YAAY;IACtC,aAAa,CAAC,OAAO,EAAE,WAAW;IAqBxC,OAAO;CAGR;AAED,eAAO,MAAM,QAAQ,YAGpB,CAAC;AAEF,eAAO,MAAM,aAAa,uBAGzB,CAAC;AAMF,eAAO,MAAM,IAAI,aAAoB,eAAe,aAAa,GAAG,8BAgBnE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AASlC,OAAO,EACL,WAAW,EAYZ,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,UAAU,CAAC;AAE7D,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAWxD,eAAO,MAAM,OAAO,YAAmB,WAAW,iBAgIjD,CAAC;AA8HF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,YAAY;IACtC,aAAa,CAAC,OAAO,EAAE,WAAW;IA2BxC,OAAO;CAGR;AAED,eAAO,MAAM,QAAQ,YAGpB,CAAC;AAEF,eAAO,MAAM,aAAa,uBAGzB,CAAC;AAMF,eAAO,MAAM,IAAI,aAAoB,eAAe,aAAa,GAAG,8BAgBnE,CAAC"}
@@ -8,16 +8,18 @@ export declare const UI_REQUEST: {
8
8
  readonly INVALID_PIN: "ui-invalid_pin";
9
9
  readonly REQUEST_BUTTON: "ui-button";
10
10
  readonly CLOSE_UI_WINDOW: "ui-close_window";
11
+ readonly BLUETOOTH_PERMISSION: "ui-bluetooth_permission";
12
+ readonly LOCATION_PERMISSION: "ui-location_permission";
11
13
  };
12
14
  export interface UiRequestWithoutPayload {
13
- type: typeof UI_REQUEST.CLOSE_UI_WINDOW;
15
+ type: typeof UI_REQUEST.CLOSE_UI_WINDOW | typeof UI_REQUEST.BLUETOOTH_PERMISSION | typeof UI_REQUEST.LOCATION_PERMISSION;
14
16
  payload?: typeof undefined;
15
17
  }
16
18
  export declare type UiRequestDeviceAction = {
17
19
  type: typeof UI_REQUEST.REQUEST_PIN;
18
20
  payload: {
19
21
  device: Device;
20
- type?: PROTO.PinMatrixRequestType;
22
+ type?: PROTO.PinMatrixRequestType | 'ButtonRequest_PinEntry';
21
23
  };
22
24
  };
23
25
  export interface UiRequestButton {
@@ -1 +1 @@
1
- {"version":3,"file":"ui-request.d.ts","sourceRoot":"","sources":["../../src/events/ui-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,eAAO,MAAM,UAAU;;;;;CAMb,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,UAAU,CAAC,eAAe,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,SAAS,CAAC;CAC5B;AAED,oBAAY,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,UAAU,CAAC,WAAW,CAAC;IACpC,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC;KACnC,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,UAAU,CAAC,cAAc,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC;AAED,oBAAY,OAAO,GAAG,uBAAuB,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAExF,oBAAY,cAAc,GAAG,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,QAAQ,CAAA;CAAE,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,OAAO,QAAQ,EAAE,OAAO,CAK5D,CAAC"}
1
+ {"version":3,"file":"ui-request.d.ts","sourceRoot":"","sources":["../../src/events/ui-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,eAAO,MAAM,UAAU;;;;;;;CASb,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,IAAI,EACA,OAAO,UAAU,CAAC,eAAe,GACjC,OAAO,UAAU,CAAC,oBAAoB,GACtC,OAAO,UAAU,CAAC,mBAAmB,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,SAAS,CAAC;CAC5B;AAED,oBAAY,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,UAAU,CAAC,WAAW,CAAC;IACpC,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,KAAK,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;KAC9D,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,UAAU,CAAC,cAAc,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC;AAED,oBAAY,OAAO,GAAG,uBAAuB,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAExF,oBAAY,cAAc,GAAG,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,QAAQ,CAAA;CAAE,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,OAAO,QAAQ,EAAE,OAAO,CAK5D,CAAC"}
package/dist/index.d.ts CHANGED
@@ -643,16 +643,18 @@ declare const UI_REQUEST: {
643
643
  readonly INVALID_PIN: "ui-invalid_pin";
644
644
  readonly REQUEST_BUTTON: "ui-button";
645
645
  readonly CLOSE_UI_WINDOW: "ui-close_window";
646
+ readonly BLUETOOTH_PERMISSION: "ui-bluetooth_permission";
647
+ readonly LOCATION_PERMISSION: "ui-location_permission";
646
648
  };
647
649
  interface UiRequestWithoutPayload {
648
- type: typeof UI_REQUEST.CLOSE_UI_WINDOW;
650
+ type: typeof UI_REQUEST.CLOSE_UI_WINDOW | typeof UI_REQUEST.BLUETOOTH_PERMISSION | typeof UI_REQUEST.LOCATION_PERMISSION;
649
651
  payload?: typeof undefined;
650
652
  }
651
653
  declare type UiRequestDeviceAction = {
652
654
  type: typeof UI_REQUEST.REQUEST_PIN;
653
655
  payload: {
654
656
  device: Device$1;
655
- type?: Messages.PinMatrixRequestType;
657
+ type?: Messages.PinMatrixRequestType | 'ButtonRequest_PinEntry';
656
658
  };
657
659
  };
658
660
  interface UiRequestButton {
@@ -888,6 +890,8 @@ declare const getDeviceType: (features?: {
888
890
  display_rotation: number | null;
889
891
  experimental_features: boolean | null;
890
892
  } | undefined) => IDeviceType;
893
+ declare const getDeviceTypeByBleName: (name?: string | undefined) => IDeviceType | null;
894
+ declare const getDeviceTypeByDeviceId: (deviceId?: string | undefined) => IDeviceType;
891
895
  declare const getDeviceUUID: (features: Features) => string;
892
896
  declare const getDeviceLabel: (features: Features) => string;
893
897
 
@@ -997,4 +1001,4 @@ declare class DataManager {
997
1001
 
998
1002
  declare const HardwareSdk: ({ init, call, dispose, eventEmitter, uiResponse, cancel, }: InjectApi) => CoreApi;
999
1003
 
1000
- export { AccountAddress, AccountAddresses, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CommonParams, ConnectSettings, Core, CoreApi, CoreMessage, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DataManager, Deferred, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFlagsParams, DeviceMode, DeviceRecoveryParams, DeviceResetParams, DeviceSettingsParams, DeviceStatus, DeviceTypeMap, errors as ERRORS, EVMAccessList, EVMAddress, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, Features, FirmwareRange, FirmwareRelease, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceType, IFRAME, IFirmwareReleaseInfo, IFrameBridge, IFrameCallMessage, IFrameEvent, IFrameEventMessage, IFrameInit, ILocale, ITransportStatus, IVersionArray, KnownDevice, MethodResponseMessage, PostMessageEvent, RESPONSE_EVENT, RefTransaction, ReleaseInfo, RemoteConfigResponse, Response, SearchDevice, SignedTransaction, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, Success, TransactionOptions, TransportReleaseStatus, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestWithoutPayload, UiResponseEvent, UiResponseMessage, UiResponsePin, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, corsValidator, create, createDeviceMessage, createErrorMessage, createIFrameMessage, createResponseMessage, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, getDeviceLabel, getDeviceType, getDeviceUUID, getEnv, getHDPath, getScriptType, getTimeStamp, httpRequest, init as initCore, initLog, isValidVersionArray, isValidVersionString, normalizeVersionArray, parseConnectSettings, parseMessage, versionCompare, versionSplit };
1004
+ export { AccountAddress, AccountAddresses, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CommonParams, ConnectSettings, Core, CoreApi, CoreMessage, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DataManager, Deferred, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFlagsParams, DeviceMode, DeviceRecoveryParams, DeviceResetParams, DeviceSettingsParams, DeviceStatus, DeviceTypeMap, errors as ERRORS, EVMAccessList, EVMAddress, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, Features, FirmwareRange, FirmwareRelease, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceType, IFRAME, IFirmwareReleaseInfo, IFrameBridge, IFrameCallMessage, IFrameEvent, IFrameEventMessage, IFrameInit, ILocale, ITransportStatus, IVersionArray, KnownDevice, MethodResponseMessage, PostMessageEvent, RESPONSE_EVENT, RefTransaction, ReleaseInfo, RemoteConfigResponse, Response, SearchDevice, SignedTransaction, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, Success, TransactionOptions, TransportReleaseStatus, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestWithoutPayload, UiResponseEvent, UiResponseMessage, UiResponsePin, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, corsValidator, create, createDeviceMessage, createErrorMessage, createIFrameMessage, createResponseMessage, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, getDeviceLabel, getDeviceType, getDeviceTypeByBleName, getDeviceTypeByDeviceId, getDeviceUUID, getEnv, getHDPath, getScriptType, getTimeStamp, httpRequest, init as initCore, initLog, isValidVersionArray, isValidVersionString, normalizeVersionArray, parseConnectSettings, parseMessage, versionCompare, versionSplit };
package/dist/index.js CHANGED
@@ -814,6 +814,26 @@ const getDeviceType = (features) => {
814
814
  }
815
815
  const serialNo = features.serial_no;
816
816
  const miniFlag = serialNo.slice(0, 2);
817
+ if (miniFlag.toLowerCase() === 'mi')
818
+ return 'mini';
819
+ if (miniFlag.toLowerCase() === 'tc')
820
+ return 'touch';
821
+ return 'classic';
822
+ };
823
+ const getDeviceTypeByBleName = (name) => {
824
+ if (!name)
825
+ return 'classic';
826
+ if (name.startsWith('MI'))
827
+ return 'mini';
828
+ if (name.startsWith('T'))
829
+ return 'touch';
830
+ return 'classic';
831
+ };
832
+ const getDeviceTypeByDeviceId = (deviceId) => {
833
+ if (!deviceId) {
834
+ return 'classic';
835
+ }
836
+ const miniFlag = deviceId.slice(0, 2);
817
837
  if (miniFlag.toLowerCase() === 'mi')
818
838
  return 'mini';
819
839
  return 'classic';
@@ -9911,6 +9931,8 @@ const UI_REQUEST$1 = {
9911
9931
  INVALID_PIN: 'ui-invalid_pin',
9912
9932
  REQUEST_BUTTON: 'ui-button',
9913
9933
  CLOSE_UI_WINDOW: 'ui-close_window',
9934
+ BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
9935
+ LOCATION_PERMISSION: 'ui-location_permission',
9914
9936
  };
9915
9937
  const createUiMessage = (type, payload) => ({
9916
9938
  event: UI_EVENT,
@@ -10560,7 +10582,10 @@ class SearchDevices extends BaseMethod {
10560
10582
  const devicesDescriptor = (_c = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _c !== void 0 ? _c : [];
10561
10583
  const env = DataManager.getSettings('env');
10562
10584
  if (env === 'react-native') {
10563
- return devicesDescriptor.map(device => (Object.assign(Object.assign({}, device), { connectId: device.id, deviceType: 'classic' })));
10585
+ return devicesDescriptor.map(device => {
10586
+ var _a;
10587
+ return (Object.assign(Object.assign({}, device), { connectId: device.id, deviceType: getDeviceTypeByBleName((_a = device.name) !== null && _a !== void 0 ? _a : '') }));
10588
+ });
10564
10589
  }
10565
10590
  const devices = [];
10566
10591
  try {
@@ -12325,7 +12350,7 @@ let _connector;
12325
12350
  let _uiPromises = [];
12326
12351
  let _callPromise;
12327
12352
  const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12328
- var _a;
12353
+ var _a, _b;
12329
12354
  if (!message.id || !message.payload || message.type !== IFRAME.CALL) {
12330
12355
  return Promise.reject(TypedError('Method_InvalidParameter', 'onCall: message.id or message.payload is missing'));
12331
12356
  }
@@ -12345,7 +12370,10 @@ const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12345
12370
  return createResponseMessage(method.responseID, true, response);
12346
12371
  }
12347
12372
  catch (error) {
12348
- return createResponseMessage(method.responseID, false, error);
12373
+ return createResponseMessage(method.responseID, false, {
12374
+ code: error.code,
12375
+ error: (_a = error.message) !== null && _a !== void 0 ? _a : error,
12376
+ });
12349
12377
  }
12350
12378
  }
12351
12379
  try {
@@ -12368,7 +12396,7 @@ const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12368
12396
  return Promise.reject(error);
12369
12397
  }
12370
12398
  Log.debug('Call API - setDevice: ', device);
12371
- (_a = method.setDevice) === null || _a === void 0 ? void 0 : _a.call(method, device);
12399
+ (_b = method.setDevice) === null || _b === void 0 ? void 0 : _b.call(method, device);
12372
12400
  device.on(DEVICE.PIN, onDevicePinHandler);
12373
12401
  device.on(DEVICE.BUTTON, (d, code) => {
12374
12402
  onDeviceButtonHandler(d, code);
@@ -12397,7 +12425,13 @@ const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12397
12425
  Log.debug('Call API - Device Run: ', device);
12398
12426
  const deviceRun = () => device.run(inner);
12399
12427
  _callPromise = create(deviceRun);
12400
- return yield _callPromise.promise;
12428
+ try {
12429
+ return yield _callPromise.promise;
12430
+ }
12431
+ catch (e) {
12432
+ console.log('Device Run Error: ', e);
12433
+ return createResponseMessage(method.responseID, false, e.message);
12434
+ }
12401
12435
  }
12402
12436
  catch (error) {
12403
12437
  messageResponse = createResponseMessage(method.responseID, false, error);
@@ -12480,7 +12514,15 @@ const onDevicePinHandler = (...[device, type, callback]) => __awaiter(void 0, vo
12480
12514
  });
12481
12515
  const onDeviceButtonHandler = (...[device, request]) => {
12482
12516
  postMessage(createDeviceMessage(DEVICE.BUTTON, Object.assign(Object.assign({}, request), { device: device.toMessageObject() })));
12483
- postMessage(createUiMessage(UI_REQUEST$1.REQUEST_BUTTON, { device: device.toMessageObject() }));
12517
+ if (request.code === 'ButtonRequest_PinEntry') {
12518
+ postMessage(createUiMessage(UI_REQUEST$1.REQUEST_PIN, {
12519
+ device: device.toMessageObject(),
12520
+ type: 'ButtonRequest_PinEntry',
12521
+ }));
12522
+ }
12523
+ else {
12524
+ postMessage(createUiMessage(UI_REQUEST$1.REQUEST_BUTTON, { device: device.toMessageObject() }));
12525
+ }
12484
12526
  };
12485
12527
  const postMessage = (message) => {
12486
12528
  _core.emit(CORE_EVENT, message);
@@ -12506,6 +12548,11 @@ class Core extends events.exports {
12506
12548
  }
12507
12549
  break;
12508
12550
  }
12551
+ case UI_REQUEST$1.BLUETOOTH_PERMISSION:
12552
+ case UI_REQUEST$1.LOCATION_PERMISSION: {
12553
+ postMessage(message);
12554
+ break;
12555
+ }
12509
12556
  case IFRAME.CALL: {
12510
12557
  const response = yield callAPI(message);
12511
12558
  return response;
@@ -12534,7 +12581,7 @@ const init = (settings, Transport) => __awaiter(void 0, void 0, void 0, function
12534
12581
  yield DataManager.load(settings);
12535
12582
  initTransport(Transport);
12536
12583
  }
12537
- catch (_b) {
12584
+ catch (_c) {
12538
12585
  Log.error('DataManager.load error');
12539
12586
  }
12540
12587
  enableLog(DataManager.getSettings('debug'));
@@ -12584,6 +12631,8 @@ exports["default"] = HardwareSdk;
12584
12631
  exports.enableLog = enableLog;
12585
12632
  exports.getDeviceLabel = getDeviceLabel;
12586
12633
  exports.getDeviceType = getDeviceType;
12634
+ exports.getDeviceTypeByBleName = getDeviceTypeByBleName;
12635
+ exports.getDeviceTypeByDeviceId = getDeviceTypeByDeviceId;
12587
12636
  exports.getDeviceUUID = getDeviceUUID;
12588
12637
  exports.getEnv = getEnv;
12589
12638
  exports.getHDPath = getHDPath;
@@ -46,6 +46,8 @@ export declare const getDeviceType: (features?: {
46
46
  display_rotation: number | null;
47
47
  experimental_features: boolean | null;
48
48
  } | undefined) => IDeviceType;
49
+ export declare const getDeviceTypeByBleName: (name?: string | undefined) => IDeviceType | null;
50
+ export declare const getDeviceTypeByDeviceId: (deviceId?: string | undefined) => IDeviceType;
49
51
  export declare const getDeviceUUID: (features: Features) => string;
50
52
  export declare const getDeviceLabel: (features: Features) => string;
51
53
  export declare const getDeviceFirmwareVersion: (features: Features) => IVersionArray;
@@ -1 +1 @@
1
- {"version":3,"file":"deviceFeaturesUtils.d.ts","sourceRoot":"","sources":["../../src/utils/deviceFeaturesUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA0B,WASnD,CAAC;AAEF,eAAO,MAAM,aAAa,aAAc,QAAQ,WAM/C,CAAC;AAEF,eAAO,MAAM,cAAc,aAAc,QAAQ,WAOhD,CAAC;AAKF,eAAO,MAAM,wBAAwB,aAAc,QAAQ,kBAK1D,CAAC;AAKF,eAAO,MAAM,2BAA2B,aAAc,QAAQ,KAAG,aAAa,GAAG,IAKhF,CAAC"}
1
+ {"version":3,"file":"deviceFeaturesUtils.d.ts","sourceRoot":"","sources":["../../src/utils/deviceFeaturesUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA0B,WAUnD,CAAC;AAEF,eAAO,MAAM,sBAAsB,iCAAoB,WAAW,GAAG,IAKpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,qCAAwB,WAQ3D,CAAC;AAEF,eAAO,MAAM,aAAa,aAAc,QAAQ,WAM/C,CAAC;AAEF,eAAO,MAAM,cAAc,aAAc,QAAQ,WAOhD,CAAC;AAKF,eAAO,MAAM,wBAAwB,aAAc,QAAQ,kBAK1D,CAAC;AAKF,eAAO,MAAM,2BAA2B,aAAc,QAAQ,KAAG,aAAa,GAAG,IAKhF,CAAC"}
@@ -2,7 +2,7 @@ import { initLog, enableLog } from './logger';
2
2
  export * from './assets';
3
3
  export * from './versionUtils';
4
4
  export * from './deferred';
5
- export { getDeviceType, getDeviceUUID, getDeviceLabel } from './deviceFeaturesUtils';
5
+ export { getDeviceType, getDeviceTypeByBleName, getDeviceTypeByDeviceId, getDeviceUUID, getDeviceLabel, } from './deviceFeaturesUtils';
6
6
  export { getHDPath, getScriptType } from '../api/helpers/pathUtils';
7
7
  export { initLog, enableLog };
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "0.0.5",
3
+ "version": "0.0.8",
4
4
  "description": "> TODO: description",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,7 +25,7 @@
25
25
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-transport": "^0.0.5",
28
+ "@onekeyfe/hd-transport": "^0.0.8",
29
29
  "axios": "^0.27.2",
30
30
  "bignumber.js": "^9.0.2",
31
31
  "parse-uri": "^1.0.7",
@@ -35,5 +35,5 @@
35
35
  "@types/parse-uri": "^1.0.0",
36
36
  "@types/semver": "^7.3.9"
37
37
  },
38
- "gitHead": "24d2a28fd3f2e7fda4c21742e968bce764985615"
38
+ "gitHead": "edfa30382fdf36182bc389c8ff1dd1a689096592"
39
39
  }
@@ -3,6 +3,7 @@ import DeviceConnector from '../device/DeviceConnector';
3
3
  import TransportManager from '../data-manager/TransportManager';
4
4
  import { Device } from '../device/Device';
5
5
  import { DataManager } from '../data-manager';
6
+ import { getDeviceTypeByBleName } from '../utils';
6
7
 
7
8
  export default class SearchDevices extends BaseMethod {
8
9
  connector?: DeviceConnector;
@@ -26,8 +27,7 @@ export default class SearchDevices extends BaseMethod {
26
27
  return devicesDescriptor.map(device => ({
27
28
  ...device,
28
29
  connectId: device.id,
29
- // 蓝牙场景只有 classic 能被搜索到
30
- deviceType: 'classic',
30
+ deviceType: getDeviceTypeByBleName(device.name ?? ''),
31
31
  }));
32
32
  }
33
33
 
package/src/core/index.ts CHANGED
@@ -61,7 +61,10 @@ export const callAPI = async (message: CoreMessage) => {
61
61
  const response = await method.run();
62
62
  return createResponseMessage(method.responseID, true, response);
63
63
  } catch (error) {
64
- return createResponseMessage(method.responseID, false, error);
64
+ return createResponseMessage(method.responseID, false, {
65
+ code: error.code,
66
+ error: error.message ?? error,
67
+ });
65
68
  }
66
69
  }
67
70
 
@@ -136,7 +139,13 @@ export const callAPI = async (message: CoreMessage) => {
136
139
  Log.debug('Call API - Device Run: ', device);
137
140
  const deviceRun = () => device.run(inner);
138
141
  _callPromise = createDeferred(deviceRun);
139
- return await _callPromise.promise;
142
+
143
+ try {
144
+ return await _callPromise.promise;
145
+ } catch (e) {
146
+ console.log('Device Run Error: ', e);
147
+ return createResponseMessage(method.responseID, false, e.message);
148
+ }
140
149
  } catch (error) {
141
150
  messageResponse = createResponseMessage(method.responseID, false, error);
142
151
  _callPromise?.reject(ERRORS.TypedError('Call_API', error));
@@ -242,7 +251,17 @@ const onDevicePinHandler = async (...[device, type, callback]: DeviceEvents['pin
242
251
 
243
252
  const onDeviceButtonHandler = (...[device, request]: [...DeviceEvents['button']]) => {
244
253
  postMessage(createDeviceMessage(DEVICE.BUTTON, { ...request, device: device.toMessageObject() }));
245
- postMessage(createUiMessage(UI_REQUEST.REQUEST_BUTTON, { device: device.toMessageObject() }));
254
+
255
+ if (request.code === 'ButtonRequest_PinEntry') {
256
+ postMessage(
257
+ createUiMessage(UI_REQUEST.REQUEST_PIN, {
258
+ device: device.toMessageObject() as KnownDevice,
259
+ type: 'ButtonRequest_PinEntry',
260
+ })
261
+ );
262
+ } else {
263
+ postMessage(createUiMessage(UI_REQUEST.REQUEST_BUTTON, { device: device.toMessageObject() }));
264
+ }
246
265
  };
247
266
 
248
267
  /**
@@ -282,6 +301,12 @@ export default class Core extends EventEmitter {
282
301
  break;
283
302
  }
284
303
 
304
+ case UI_REQUEST.BLUETOOTH_PERMISSION:
305
+ case UI_REQUEST.LOCATION_PERMISSION: {
306
+ postMessage(message);
307
+ break;
308
+ }
309
+
285
310
  case IFRAME.CALL: {
286
311
  const response = await callAPI(message);
287
312
  return response;
@@ -11,10 +11,16 @@ export const UI_REQUEST = {
11
11
  REQUEST_BUTTON: 'ui-button',
12
12
 
13
13
  CLOSE_UI_WINDOW: 'ui-close_window',
14
+
15
+ BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
16
+ LOCATION_PERMISSION: 'ui-location_permission',
14
17
  } as const;
15
18
 
16
19
  export interface UiRequestWithoutPayload {
17
- type: typeof UI_REQUEST.CLOSE_UI_WINDOW;
20
+ type:
21
+ | typeof UI_REQUEST.CLOSE_UI_WINDOW
22
+ | typeof UI_REQUEST.BLUETOOTH_PERMISSION
23
+ | typeof UI_REQUEST.LOCATION_PERMISSION;
18
24
  payload?: typeof undefined;
19
25
  }
20
26
 
@@ -22,7 +28,7 @@ export type UiRequestDeviceAction = {
22
28
  type: typeof UI_REQUEST.REQUEST_PIN;
23
29
  payload: {
24
30
  device: Device;
25
- type?: PROTO.PinMatrixRequestType;
31
+ type?: PROTO.PinMatrixRequestType | 'ButtonRequest_PinEntry';
26
32
  };
27
33
  };
28
34
 
@@ -8,6 +8,24 @@ export const getDeviceType = (features?: Features): IDeviceType => {
8
8
  const serialNo = features.serial_no;
9
9
  const miniFlag = serialNo.slice(0, 2);
10
10
  if (miniFlag.toLowerCase() === 'mi') return 'mini';
11
+ if (miniFlag.toLowerCase() === 'tc') return 'touch';
12
+ return 'classic';
13
+ };
14
+
15
+ export const getDeviceTypeByBleName = (name?: string): IDeviceType | null => {
16
+ if (!name) return 'classic';
17
+ if (name.startsWith('MI')) return 'mini';
18
+ if (name.startsWith('T')) return 'touch';
19
+ return 'classic';
20
+ };
21
+
22
+ export const getDeviceTypeByDeviceId = (deviceId?: string): IDeviceType => {
23
+ if (!deviceId) {
24
+ return 'classic';
25
+ }
26
+
27
+ const miniFlag = deviceId.slice(0, 2);
28
+ if (miniFlag.toLowerCase() === 'mi') return 'mini';
11
29
  return 'classic';
12
30
  };
13
31
 
@@ -3,7 +3,13 @@ import { initLog, enableLog } from './logger';
3
3
  export * from './assets';
4
4
  export * from './versionUtils';
5
5
  export * from './deferred';
6
- export { getDeviceType, getDeviceUUID, getDeviceLabel } from './deviceFeaturesUtils';
6
+ export {
7
+ getDeviceType,
8
+ getDeviceTypeByBleName,
9
+ getDeviceTypeByDeviceId,
10
+ getDeviceUUID,
11
+ getDeviceLabel,
12
+ } from './deviceFeaturesUtils';
7
13
  export { getHDPath, getScriptType } from '../api/helpers/pathUtils';
8
14
 
9
15
  export { initLog, enableLog };