@onekeyfe/hd-transport-electron 1.2.2-alpha.11 → 1.2.2-alpha.12

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.
@@ -32,7 +32,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
32
32
 
33
33
  function initNobleBleSupport(webContents) {
34
34
  return __awaiter(this, void 0, void 0, function* () {
35
- const { setupNobleBleHandlers } = yield Promise.resolve().then(function () { return require('./noble-ble-handler-95c5cf0d.js'); });
35
+ const { setupNobleBleHandlers } = yield Promise.resolve().then(function () { return require('./noble-ble-handler-e4eaea92.js'); });
36
36
  setupNobleBleHandlers(webContents);
37
37
  });
38
38
  }
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-00297050.js');
5
+ var index = require('./index-eea100c1.js');
6
6
 
7
7
 
8
8
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-00297050.js');
3
+ var index = require('./index-eea100c1.js');
4
4
  var hdShared = require('@onekeyfe/hd-shared');
5
5
  var pRetry = require('p-retry');
6
6
 
@@ -100,6 +100,19 @@ const NOBLE_BLE_CONNECTION_TIMEOUT_MS = 10000;
100
100
 
101
101
  let noble = null;
102
102
  let logger = null;
103
+ function createNobleBleConnectionError(error, messagePrefix = '') {
104
+ const errorMessage = error.message;
105
+ const normalizedErrorMessage = errorMessage.toLowerCase();
106
+ let errorCode = hdShared.HardwareErrorCode.BleConnectedError;
107
+ if (hdShared.isBleStaleBondErrorText(errorMessage)) {
108
+ errorCode =
109
+ normalizedErrorMessage.includes('peer removed pairing information') ||
110
+ normalizedErrorMessage.includes('cberrordomain:14')
111
+ ? hdShared.HardwareErrorCode.BlePeerRemovedPairingInformation
112
+ : hdShared.HardwareErrorCode.BleDeviceBondError;
113
+ }
114
+ return hdShared.ERRORS.TypedError(errorCode, `${messagePrefix}${errorMessage}`);
115
+ }
103
116
  const bluetoothState = {
104
117
  available: false,
105
118
  unsupported: false,
@@ -949,7 +962,7 @@ function freshScanAndDiscover(deviceId, webContents) {
949
962
  yield new Promise((resolve, reject) => {
950
963
  freshPeripheral.connect((error) => {
951
964
  if (error) {
952
- reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.BleConnectedError, `Fresh peripheral connection failed: ${error.message}`));
965
+ reject(createNobleBleConnectionError(error, 'Fresh peripheral connection failed: '));
953
966
  }
954
967
  else {
955
968
  connectedDevices.set(deviceId, freshPeripheral);
@@ -1197,7 +1210,7 @@ function connectDevice(deviceId, webContents) {
1197
1210
  }
1198
1211
  if (error) {
1199
1212
  logger === null || logger === void 0 ? void 0 : logger.error('[NobleBLE] Connection failed:', error);
1200
- reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.BleConnectedError, error.message));
1213
+ reject(createNobleBleConnectionError(error));
1201
1214
  return;
1202
1215
  }
1203
1216
  logger === null || logger === void 0 ? void 0 : logger.info('[NobleBLE] Connected to device:', deviceId);
@@ -1469,5 +1482,6 @@ function setupNobleBleHandlers(webContents) {
1469
1482
  }
1470
1483
  }
1471
1484
 
1485
+ exports.createNobleBleConnectionError = createNobleBleConnectionError;
1472
1486
  exports.resolveNobleBleWritePacingDelay = resolveNobleBleWritePacingDelay;
1473
1487
  exports.setupNobleBleHandlers = setupNobleBleHandlers;
@@ -1,5 +1,6 @@
1
1
  import type { WebContents } from 'electron';
2
2
  import type { NobleBleWriteOptions } from './types/desktop-api';
3
+ export declare function createNobleBleConnectionError(error: Error, messagePrefix?: string): import("@onekeyfe/hd-shared").HardwareError;
3
4
  export declare function resolveNobleBleWritePacingDelay(options?: NobleBleWriteOptions): number;
4
5
  export declare function setupNobleBleHandlers(webContents: WebContents): void;
5
6
  //# sourceMappingURL=noble-ble-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"noble-ble-handler.d.ts","sourceRoot":"","sources":["../src/noble-ble-handler.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAA+B,WAAW,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAoFhE,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE,oBAAoB,UAI7E;AAyvDD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAkMpE"}
1
+ {"version":3,"file":"noble-ble-handler.d.ts","sourceRoot":"","sources":["../src/noble-ble-handler.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAA+B,WAAW,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAOhE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,SAAK,+CAa7E;AA+ED,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE,oBAAoB,UAI7E;AAovDD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAkMpE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-transport-electron",
3
- "version": "1.2.2-alpha.11",
3
+ "version": "1.2.2-alpha.12",
4
4
  "author": "OneKey",
5
5
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
6
6
  "license": "MIT",
@@ -25,9 +25,9 @@
25
25
  "electron-log": ">=4.0.0"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-core": "1.2.2-alpha.11",
29
- "@onekeyfe/hd-shared": "1.2.2-alpha.11",
30
- "@onekeyfe/hd-transport": "1.2.2-alpha.11",
28
+ "@onekeyfe/hd-core": "1.2.2-alpha.12",
29
+ "@onekeyfe/hd-shared": "1.2.2-alpha.12",
30
+ "@onekeyfe/hd-transport": "1.2.2-alpha.12",
31
31
  "@stoprocent/noble": "2.3.16",
32
32
  "p-retry": "^4.6.2"
33
33
  },
@@ -36,5 +36,5 @@
36
36
  "electron": "^25.0.0",
37
37
  "typescript": "^5.3.3"
38
38
  },
39
- "gitHead": "8928100acb893d72361eb74422d5e2a0f7af77d8"
39
+ "gitHead": "9b5a45bc55819d22ed752899b4c40aad70de4527"
40
40
  }
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from 'events';
2
- import { EOneKeyBleMessageKeys } from '@onekeyfe/hd-shared';
2
+ import { EOneKeyBleMessageKeys, HardwareErrorCode } from '@onekeyfe/hd-shared';
3
3
 
4
4
  import {
5
5
  NOBLE_BLE_CONNECTION_TIMEOUT_MS,
@@ -31,6 +31,24 @@ describe('Electron Noble BLE device discovery', () => {
31
31
  expect(NOBLE_BLE_CONNECTION_TIMEOUT_MS).toBe(10_000);
32
32
  });
33
33
 
34
+ test('maps macOS stale pairing failures without reclassifying generic connection errors', async () => {
35
+ const { createNobleBleConnectionError } = await import('../noble-ble-handler');
36
+
37
+ expect(
38
+ createNobleBleConnectionError(
39
+ new Error('CBErrorDomain:14 Peer removed pairing information on the device side')
40
+ )
41
+ ).toMatchObject({
42
+ errorCode: HardwareErrorCode.BlePeerRemovedPairingInformation,
43
+ });
44
+ expect(createNobleBleConnectionError(new Error('Encryption is insufficient'))).toMatchObject({
45
+ errorCode: HardwareErrorCode.BleDeviceBondError,
46
+ });
47
+ expect(createNobleBleConnectionError(new Error('connection failed'))).toMatchObject({
48
+ errorCode: HardwareErrorCode.BleConnectedError,
49
+ });
50
+ });
51
+
34
52
  test('keeps safe pacing by default and allows an explicit high-throughput bypass', async () => {
35
53
  const { resolveNobleBleWritePacingDelay } = await import('../noble-ble-handler');
36
54
 
@@ -15,6 +15,7 @@ import {
15
15
  ONEKEY_WRITE_CHARACTERISTIC_UUID,
16
16
  createKnownBleUuidAliases,
17
17
  hasOnekeyCommunicationService,
18
+ isBleStaleBondErrorText,
18
19
  isOnekeyBluetoothDevice,
19
20
  isPro2FamilyBleName,
20
21
  matchesKnownBleUuid,
@@ -39,6 +40,21 @@ import type { CharacteristicPair, DeviceInfo, Logger, NobleModule } from './type
39
40
  let noble: NobleModule | null = null;
40
41
  let logger: Logger | null = null;
41
42
 
43
+ export function createNobleBleConnectionError(error: Error, messagePrefix = '') {
44
+ const errorMessage = error.message;
45
+ const normalizedErrorMessage = errorMessage.toLowerCase();
46
+ let errorCode = HardwareErrorCode.BleConnectedError;
47
+ if (isBleStaleBondErrorText(errorMessage)) {
48
+ errorCode =
49
+ normalizedErrorMessage.includes('peer removed pairing information') ||
50
+ normalizedErrorMessage.includes('cberrordomain:14')
51
+ ? HardwareErrorCode.BlePeerRemovedPairingInformation
52
+ : HardwareErrorCode.BleDeviceBondError;
53
+ }
54
+
55
+ return ERRORS.TypedError(errorCode, `${messagePrefix}${errorMessage}`);
56
+ }
57
+
42
58
  // Bluetooth state management
43
59
  const bluetoothState: {
44
60
  available: boolean;
@@ -1296,12 +1312,7 @@ async function freshScanAndDiscover(
1296
1312
  await new Promise<void>((resolve, reject) => {
1297
1313
  freshPeripheral.connect((error: Error | undefined) => {
1298
1314
  if (error) {
1299
- reject(
1300
- ERRORS.TypedError(
1301
- HardwareErrorCode.BleConnectedError,
1302
- `Fresh peripheral connection failed: ${error.message}`
1303
- )
1304
- );
1315
+ reject(createNobleBleConnectionError(error, 'Fresh peripheral connection failed: '));
1305
1316
  } else {
1306
1317
  connectedDevices.set(deviceId, freshPeripheral);
1307
1318
  resolve();
@@ -1692,7 +1703,7 @@ async function connectDevice(deviceId: string, webContents: WebContents): Promis
1692
1703
 
1693
1704
  if (error) {
1694
1705
  logger?.error('[NobleBLE] Connection failed:', error);
1695
- reject(ERRORS.TypedError(HardwareErrorCode.BleConnectedError, error.message));
1706
+ reject(createNobleBleConnectionError(error));
1696
1707
  return;
1697
1708
  }
1698
1709