@onekeyfe/hd-shared 1.2.0-alpha.156 → 1.2.0-alpha.158

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.
@@ -46,6 +46,10 @@ export declare enum EOneKeyBleMessageKeys {
46
46
  NOBLE_BLE_MTU_CHANGED = "$onekey-noble-ble-mtu-changed",
47
47
  NOBLE_BLE_CANCEL_PAIRING = "$onekey-noble-ble-cancel-pairing"
48
48
  }
49
+ export declare enum EBleDisconnectReason {
50
+ DeviceDisconnected = "device-disconnected",
51
+ IdleKeepAlive = "idle-keep-alive"
52
+ }
49
53
  export declare const ONEKEY_SERVICE_UUID = "00000001-0000-1000-8000-00805f9b34fb";
50
54
  export declare const ONEKEY_WRITE_CHARACTERISTIC_UUID = "00000002-0000-1000-8000-00805f9b34fb";
51
55
  export declare const ONEKEY_NOTIFY_CHARACTERISTIC_UUID = "00000003-0000-1000-8000-00805f9b34fb";
@@ -70,8 +74,6 @@ export declare const createKnownBleUuidAliases: (uuid: string) => ReadonlySet<st
70
74
  export declare const matchesKnownBleUuid: (actualUuid: string | null | undefined, aliases: ReadonlySet<string>) => boolean;
71
75
  export declare const isPro2FindMyAdvertisementName: (value?: string | null) => boolean;
72
76
  export declare const normalizePro2FindMyAdvertisementName: (value: string) => string;
73
- export declare const canonicalizePro2BleAdvertisementName: (value: string) => string;
74
- export declare const isSameOnekeyBleName: (left?: string | null, right?: string | null) => boolean;
75
77
  export declare const hasOnekeyCommunicationService: (serviceUuids: Array<string | null | undefined> | null | undefined) => boolean;
76
78
  export declare const isOnekeyBluetoothDevice: ({ id, name, localName, serviceUuids, }: BluetoothDeviceIdentity) => boolean;
77
79
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -54,6 +54,20 @@ declare enum EOneKeyBleMessageKeys {
54
54
  NOBLE_BLE_MTU_CHANGED = "$onekey-noble-ble-mtu-changed",
55
55
  NOBLE_BLE_CANCEL_PAIRING = "$onekey-noble-ble-cancel-pairing"
56
56
  }
57
+ /**
58
+ * Why a BLE link went down, carried on BLE_DEVICE_DISCONNECTED.
59
+ *
60
+ * The main process frees an idle link on its own keep-alive timer, which is an
61
+ * internal optimisation the device knows nothing about — consumers must not
62
+ * treat it as "the device is gone". Only DeviceDisconnected means the
63
+ * peripheral actually dropped.
64
+ */
65
+ declare enum EBleDisconnectReason {
66
+ /** Unsolicited peripheral drop: powered off, out of range, cable/BLE lost. */
67
+ DeviceDisconnected = "device-disconnected",
68
+ /** Main-process keep-alive timer released an idle link; device still present. */
69
+ IdleKeepAlive = "idle-keep-alive"
70
+ }
57
71
  declare const ONEKEY_SERVICE_UUID = "00000001-0000-1000-8000-00805f9b34fb";
58
72
  declare const ONEKEY_WRITE_CHARACTERISTIC_UUID = "00000002-0000-1000-8000-00805f9b34fb";
59
73
  declare const ONEKEY_NOTIFY_CHARACTERISTIC_UUID = "00000003-0000-1000-8000-00805f9b34fb";
@@ -78,13 +92,6 @@ declare const createKnownBleUuidAliases: (uuid: string) => ReadonlySet<string>;
78
92
  declare const matchesKnownBleUuid: (actualUuid: string | null | undefined, aliases: ReadonlySet<string>) => boolean;
79
93
  declare const isPro2FindMyAdvertisementName: (value?: string | null) => boolean;
80
94
  declare const normalizePro2FindMyAdvertisementName: (value: string) => string;
81
- /**
82
- * Current Pro2 advertisements use "Pro 2 XXXX". Older firmware used "Pro2 XXXX".
83
- * Discovery and DeviceInfo both go through this helper so the public BLE name
84
- * stays on the spaced form without changing OneKey Pro / Neo names.
85
- */
86
- declare const canonicalizePro2BleAdvertisementName: (value: string) => string;
87
- declare const isSameOnekeyBleName: (left?: string | null, right?: string | null) => boolean;
88
95
  declare const hasOnekeyCommunicationService: (serviceUuids: Array<string | null | undefined> | null | undefined) => boolean;
89
96
  declare const isOnekeyBluetoothDevice: ({ id, name, localName, serviceUuids, }: BluetoothDeviceIdentity) => boolean;
90
97
 
@@ -551,4 +558,4 @@ declare enum EDeviceType {
551
558
  Neo = "neo"
552
559
  }
553
560
 
554
- export { CreateErrorByMessage, CreateHardwareErrorByBridgeError, Deferred, EDeviceType, EFirmwareType, EOneKeyBleMessageKeys, HardwareError$1 as ERRORS, ERROR_CODES_REQUIRE_DISCONNECT, ERROR_CODES_REQUIRE_RELEASE, HARDWARE_CONNECT_PROTOCOL, HardwareConnectProtocol, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, ONEKEY_NOTIFY_CHARACTERISTIC_UUID, ONEKEY_PROTOCOL_V2_USB_IDS, ONEKEY_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, canonicalizePro2BleAdvertisementName, createDefectiveFirmwareError, createDeferred, createDeprecatedHardwareError, createDeviceNotSupportMethodError, createKnownBleUuidAliases, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, hasOnekeyCommunicationService, inferProtocolHintFromUsbId, isHeaderChunk, isKnownTrezorWebUsbDevice, isOnekeyBluetoothDevice, isOnekeyDevice, isPro2FindMyAdvertisementName, isSameOnekeyBleName, matchesKnownBleUuid, normalizeBleUuid, normalizePro2FindMyAdvertisementName, resolveOneKeyUsbDevicePath, serializeError, wait };
561
+ export { CreateErrorByMessage, CreateHardwareErrorByBridgeError, Deferred, EBleDisconnectReason, EDeviceType, EFirmwareType, EOneKeyBleMessageKeys, HardwareError$1 as ERRORS, ERROR_CODES_REQUIRE_DISCONNECT, ERROR_CODES_REQUIRE_RELEASE, HARDWARE_CONNECT_PROTOCOL, HardwareConnectProtocol, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, ONEKEY_NOTIFY_CHARACTERISTIC_UUID, ONEKEY_PROTOCOL_V2_USB_IDS, ONEKEY_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, createDefectiveFirmwareError, createDeferred, createDeprecatedHardwareError, createDeviceNotSupportMethodError, createKnownBleUuidAliases, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, hasOnekeyCommunicationService, inferProtocolHintFromUsbId, isHeaderChunk, isKnownTrezorWebUsbDevice, isOnekeyBluetoothDevice, isOnekeyDevice, isPro2FindMyAdvertisementName, matchesKnownBleUuid, normalizeBleUuid, normalizePro2FindMyAdvertisementName, resolveOneKeyUsbDevicePath, serializeError, wait };
package/dist/index.js CHANGED
@@ -450,6 +450,11 @@ exports.EOneKeyBleMessageKeys = void 0;
450
450
  EOneKeyBleMessageKeys["NOBLE_BLE_MTU_CHANGED"] = "$onekey-noble-ble-mtu-changed";
451
451
  EOneKeyBleMessageKeys["NOBLE_BLE_CANCEL_PAIRING"] = "$onekey-noble-ble-cancel-pairing";
452
452
  })(exports.EOneKeyBleMessageKeys || (exports.EOneKeyBleMessageKeys = {}));
453
+ exports.EBleDisconnectReason = void 0;
454
+ (function (EBleDisconnectReason) {
455
+ EBleDisconnectReason["DeviceDisconnected"] = "device-disconnected";
456
+ EBleDisconnectReason["IdleKeepAlive"] = "idle-keep-alive";
457
+ })(exports.EBleDisconnectReason || (exports.EBleDisconnectReason = {}));
453
458
  const ONEKEY_SERVICE_UUID = '00000001-0000-1000-8000-00805f9b34fb';
454
459
  const ONEKEY_WRITE_CHARACTERISTIC_UUID = '00000002-0000-1000-8000-00805f9b34fb';
455
460
  const ONEKEY_NOTIFY_CHARACTERISTIC_UUID = '00000003-0000-1000-8000-00805f9b34fb';
@@ -596,23 +601,6 @@ const normalizePro2FindMyAdvertisementName = (value) => {
596
601
  }
597
602
  return value;
598
603
  };
599
- const canonicalizePro2BleAdvertisementName = (value) => {
600
- const withoutFindMy = normalizePro2FindMyAdvertisementName(value);
601
- const match = withoutFindMy.match(/^(onekey\s*)?pro\s*2\s*/i);
602
- if (!match)
603
- return withoutFindMy;
604
- const rest = withoutFindMy.slice(match[0].length);
605
- const prefix = match[1] ? 'OneKey Pro 2' : 'Pro 2';
606
- return rest ? `${prefix} ${rest}` : prefix;
607
- };
608
- const isSameOnekeyBleName = (left, right) => {
609
- if (!left || !right)
610
- return false;
611
- if (left === right)
612
- return true;
613
- return (compactBleName(canonicalizePro2BleAdvertisementName(left)) ===
614
- compactBleName(canonicalizePro2BleAdvertisementName(right)));
615
- };
616
604
  const hasOnekeyCommunicationService = (serviceUuids) => (serviceUuids !== null && serviceUuids !== void 0 ? serviceUuids : []).some(uuid => matchesKnownBleUuid(uuid, ONEKEY_COMMUNICATION_SERVICE_ALIASES));
617
605
  const isOnekeyBluetoothDevice = ({ id, name, localName, serviceUuids, }) => {
618
606
  const advertisedServiceUuids = serviceUuids !== null && serviceUuids !== void 0 ? serviceUuids : [];
@@ -717,7 +705,6 @@ exports.ONEKEY_SERVICE_UUID = ONEKEY_SERVICE_UUID;
717
705
  exports.ONEKEY_WEBUSB_FILTER = ONEKEY_WEBUSB_FILTER;
718
706
  exports.ONEKEY_WRITE_CHARACTERISTIC_UUID = ONEKEY_WRITE_CHARACTERISTIC_UUID;
719
707
  exports.TypedError = TypedError;
720
- exports.canonicalizePro2BleAdvertisementName = canonicalizePro2BleAdvertisementName;
721
708
  exports.createDefectiveFirmwareError = createDefectiveFirmwareError;
722
709
  exports.createDeferred = createDeferred;
723
710
  exports.createDeprecatedHardwareError = createDeprecatedHardwareError;
@@ -733,7 +720,6 @@ exports.isKnownTrezorWebUsbDevice = isKnownTrezorWebUsbDevice;
733
720
  exports.isOnekeyBluetoothDevice = isOnekeyBluetoothDevice;
734
721
  exports.isOnekeyDevice = isOnekeyDevice;
735
722
  exports.isPro2FindMyAdvertisementName = isPro2FindMyAdvertisementName;
736
- exports.isSameOnekeyBleName = isSameOnekeyBleName;
737
723
  exports.matchesKnownBleUuid = matchesKnownBleUuid;
738
724
  exports.normalizeBleUuid = normalizeBleUuid;
739
725
  exports.normalizePro2FindMyAdvertisementName = normalizePro2FindMyAdvertisementName;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-shared",
3
- "version": "1.2.0-alpha.156",
3
+ "version": "1.2.0-alpha.158",
4
4
  "description": "Hardware SDK's shared tool library",
5
5
  "keywords": [
6
6
  "Hardware-SDK",
@@ -26,5 +26,5 @@
26
26
  "lint": "eslint .",
27
27
  "lint:fix": "eslint . --fix"
28
28
  },
29
- "gitHead": "8fc23f1c3861bfc13c47d235fd155a93525f18c8"
29
+ "gitHead": "4eff5659b79164afa0c2d070833bec4f2a477f0b"
30
30
  }
@@ -1,5 +1,4 @@
1
1
  import {
2
- canonicalizePro2BleAdvertisementName,
3
2
  createKnownBleUuidAliases,
4
3
  hasOnekeyCommunicationService,
5
4
  inferProtocolHintFromUsbId,
@@ -7,7 +6,6 @@ import {
7
6
  isOnekeyBluetoothDevice,
8
7
  isOnekeyDevice,
9
8
  isPro2FindMyAdvertisementName,
10
- isSameOnekeyBleName,
11
9
  matchesKnownBleUuid,
12
10
  normalizePro2FindMyAdvertisementName,
13
11
  resolveOneKeyUsbDevicePath,
@@ -19,9 +17,7 @@ describe('hardware device identity filters', () => {
19
17
  expect(isOnekeyDevice('Pro A1B2')).toBe(true);
20
18
  expect(isOnekeyDevice('Neo A1B2')).toBe(true);
21
19
  expect(isOnekeyDevice('Pro2A1B2')).toBe(true);
22
- expect(isOnekeyDevice('Pro 2 A1B2')).toBe(true);
23
20
  expect(isOnekeyDevice('OneKeyPro2A1B2')).toBe(true);
24
- expect(isOnekeyDevice('OneKey Pro 2 A1B2')).toBe(true);
25
21
  expect(isOnekeyDevice('Neo22D8')).toBe(true);
26
22
  expect(isOnekeyDevice('K1234')).toBe(true);
27
23
  expect(isOnekeyDevice('S8')).toBe(true);
@@ -46,12 +42,6 @@ describe('hardware device identity filters', () => {
46
42
  serviceUuids: ['0001', 'fffd'],
47
43
  })
48
44
  ).toBe(true);
49
- expect(
50
- isOnekeyBluetoothDevice({
51
- name: 'Pro 2 A1B2',
52
- serviceUuids: ['0001', 'fffd'],
53
- })
54
- ).toBe(true);
55
45
  expect(
56
46
  isOnekeyBluetoothDevice({
57
47
  localName: 'Pro2 A1B2 - Find My',
@@ -114,29 +104,6 @@ describe('hardware device identity filters', () => {
114
104
  expect(normalizePro2FindMyAdvertisementName(name)).toBe(expected);
115
105
  });
116
106
 
117
- it.each([
118
- ['Pro2 A1B2', 'Pro 2 A1B2'],
119
- ['Pro2A1B2', 'Pro 2 A1B2'],
120
- ['Pro 2 A1B2', 'Pro 2 A1B2'],
121
- ['Pro 2 0088', 'Pro 2 0088'],
122
- ['Pro2 22D8 - Find My', 'Pro 2 22D8'],
123
- ['Pro 2 A1B2 - Find My', 'Pro 2 A1B2'],
124
- ['OneKeyPro2A1B2', 'OneKey Pro 2 A1B2'],
125
- ['OneKey Pro 2 A1B2', 'OneKey Pro 2 A1B2'],
126
- ['OneKey Pro 2', 'OneKey Pro 2'],
127
- ['Pro A1B2', 'Pro A1B2'],
128
- ['Neo 22D8', 'Neo 22D8'],
129
- ])('canonicalizes the public Pro2 advertisement name %s', (name, expected) => {
130
- expect(canonicalizePro2BleAdvertisementName(name)).toBe(expected);
131
- });
132
-
133
- it('treats compact and spaced Pro2 BLE names as the same device', () => {
134
- expect(isSameOnekeyBleName('Pro2 6136', 'Pro 2 6136')).toBe(true);
135
- expect(isSameOnekeyBleName('Pro2 6136 - Find My', 'Pro 2 6136')).toBe(true);
136
- expect(isSameOnekeyBleName('Pro 2 6136', 'Pro 2 0088')).toBe(false);
137
- expect(isSameOnekeyBleName('Pro A1B2', 'Pro 2 A1B2')).toBe(false);
138
- });
139
-
140
107
  it('keeps OneKey discovery on the communication service', () => {
141
108
  expect(
142
109
  isOnekeyBluetoothDevice({
package/src/constants.ts CHANGED
@@ -101,6 +101,21 @@ export enum EOneKeyBleMessageKeys {
101
101
  NOBLE_BLE_CANCEL_PAIRING = '$onekey-noble-ble-cancel-pairing',
102
102
  }
103
103
 
104
+ /**
105
+ * Why a BLE link went down, carried on BLE_DEVICE_DISCONNECTED.
106
+ *
107
+ * The main process frees an idle link on its own keep-alive timer, which is an
108
+ * internal optimisation the device knows nothing about — consumers must not
109
+ * treat it as "the device is gone". Only DeviceDisconnected means the
110
+ * peripheral actually dropped.
111
+ */
112
+ export enum EBleDisconnectReason {
113
+ /** Unsolicited peripheral drop: powered off, out of range, cable/BLE lost. */
114
+ DeviceDisconnected = 'device-disconnected',
115
+ /** Main-process keep-alive timer released an idle link; device still present. */
116
+ IdleKeepAlive = 'idle-keep-alive',
117
+ }
118
+
104
119
  export const ONEKEY_SERVICE_UUID = '00000001-0000-1000-8000-00805f9b34fb';
105
120
  export const ONEKEY_WRITE_CHARACTERISTIC_UUID = '00000002-0000-1000-8000-00805f9b34fb';
106
121
  export const ONEKEY_NOTIFY_CHARACTERISTIC_UUID = '00000003-0000-1000-8000-00805f9b34fb';
@@ -292,30 +307,6 @@ export const normalizePro2FindMyAdvertisementName = (value: string) => {
292
307
  return value;
293
308
  };
294
309
 
295
- /**
296
- * Current Pro2 advertisements use "Pro 2 XXXX". Older firmware used "Pro2 XXXX".
297
- * Discovery and DeviceInfo both go through this helper so the public BLE name
298
- * stays on the spaced form without changing OneKey Pro / Neo names.
299
- */
300
- export const canonicalizePro2BleAdvertisementName = (value: string) => {
301
- const withoutFindMy = normalizePro2FindMyAdvertisementName(value);
302
- const match = withoutFindMy.match(/^(onekey\s*)?pro\s*2\s*/i);
303
- if (!match) return withoutFindMy;
304
-
305
- const rest = withoutFindMy.slice(match[0].length);
306
- const prefix = match[1] ? 'OneKey Pro 2' : 'Pro 2';
307
- return rest ? `${prefix} ${rest}` : prefix;
308
- };
309
-
310
- export const isSameOnekeyBleName = (left?: string | null, right?: string | null) => {
311
- if (!left || !right) return false;
312
- if (left === right) return true;
313
- return (
314
- compactBleName(canonicalizePro2BleAdvertisementName(left)) ===
315
- compactBleName(canonicalizePro2BleAdvertisementName(right))
316
- );
317
- };
318
-
319
310
  export const hasOnekeyCommunicationService = (
320
311
  serviceUuids: Array<string | null | undefined> | null | undefined
321
312
  ) =>