@onekeyfe/hd-shared 1.2.0-alpha.122 → 1.2.0-alpha.124
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/dist/HardwareError.d.ts +1 -0
- package/dist/HardwareError.d.ts.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +44 -3
- package/package.json +2 -2
- package/src/HardwareError.test.ts +28 -1
- package/src/HardwareError.ts +3 -0
- package/src/constants.test.ts +17 -0
- package/src/constants.ts +44 -2
package/dist/HardwareError.d.ts
CHANGED
|
@@ -86,6 +86,7 @@ export declare const HardwareErrorCode: {
|
|
|
86
86
|
readonly BleDeviceDisconnected: 720;
|
|
87
87
|
readonly BlePoweredOff: 721;
|
|
88
88
|
readonly BleUnsupported: 722;
|
|
89
|
+
readonly BleUnavailableWhileUsbConnected: 723;
|
|
89
90
|
readonly RuntimeError: 800;
|
|
90
91
|
readonly PinInvalid: 801;
|
|
91
92
|
readonly PinCancelled: 802;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5C,KAAK,+BAA+B,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,OAAO,iBAAiB,CAAC,GAAG,MAAM;CAAE,CAAC;AAE5F,KAAK,cAAc,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAsCxD,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,EAAE,cAAc,CAAkC;IAE3D,OAAO,SAAM;IAEb,MAAM,EAAE,GAAG,CAAM;gBAEL,aAAa,EAAE,cAAc,GAAG,MAAM;CAmBnD;AAED,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5C,KAAK,+BAA+B,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,OAAO,iBAAiB,CAAC,GAAG,MAAM;CAAE,CAAC;AAE5F,KAAK,cAAc,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAsCxD,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,EAAE,cAAc,CAAkC;IAE3D,OAAO,SAAM;IAEb,MAAM,EAAE,GAAG,CAAM;gBAEL,aAAa,EAAE,cAAc,GAAG,MAAM;CAmBnD;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAybpB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,+BAsJ7B,CAAC;AAEX,eAAO,MAAM,UAAU,kBACN,cAAc,GAAG,MAAM,YAC5B,MAAM,WACP,GAAG,kBAMb,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,GAAG,QAe1C,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,aAOtD,CAAC;AAGF,eAAO,MAAM,gCAAgC,QAAS,MAAM,KAAG,aAQ9D,CAAC;AAEF,QAAA,MAAM,uCAAuC;oBAM3B,MAAM;oBACN,MAAM;;;mBAcvB,CAAC;AAEF,QAAA,MAAM,sCAAsC;oBAM1B,MAAM;oBACN,MAAM;;;mBAcvB,CAAC;AAEF,QAAA,MAAM,yCAAyC,cAClC,MAAM,GAAG,SAAS,YACnB,MAAM,GAAG,SAAS,iBACb,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,oBACnB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,kBAsBF,CAAC;AAEF,QAAA,MAAM,6BAA6B,mBACjB,MAAM,qBACH,MAAM,eACZ,MAAM,kBAQpB,CAAC;AAEF,QAAA,MAAM,4BAA4B,aACtB,MAAM,aACL,MAAM,cACL,MAAM,cACN,MAAM,aACP,MAAM,kBAWlB,CAAC;AAEF,QAAA,MAAM,iCAAiC,eAAgB,MAAM,gBAAgB,aAAa,kBAItF,CAAC;AAEL,OAAO,EACL,uCAAuC,EACvC,sCAAsC,EACtC,yCAAyC,EACzC,6BAA6B,EAC7B,4BAA4B,EAC5B,iCAAiC,GAClC,CAAC"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -57,6 +57,7 @@ export declare const normalizeBleUuid: (uuid?: string | null) => string;
|
|
|
57
57
|
export declare const createKnownBleUuidAliases: (uuid: string) => ReadonlySet<string>;
|
|
58
58
|
export declare const matchesKnownBleUuid: (actualUuid: string | null | undefined, aliases: ReadonlySet<string>) => boolean;
|
|
59
59
|
export declare const isPro2FindMyAdvertisementName: (value?: string | null) => boolean;
|
|
60
|
+
export declare const normalizePro2FindMyAdvertisementName: (value: string) => string;
|
|
60
61
|
export declare const hasOnekeyCommunicationService: (serviceUuids: Array<string | null | undefined> | null | undefined) => boolean;
|
|
61
62
|
export declare const isOnekeyBluetoothDevice: ({ id, name, localName, serviceUuids, }: BluetoothDeviceIdentity) => boolean;
|
|
62
63
|
export {};
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,yBAAyB;;;CAG5B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,OAAO,yBAAyB,CAAC,CAAC;AAE7E,eAAO,MAAM,oBAAoB;;;GAOhC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAIF,eAAO,MAAM,yBAAyB,eAAgB,wBAAwB,KAAG,OAQhF,CAAC;AAMF,eAAO,MAAM,2BAA2B,mDAS9B,CAAC;AAMX,eAAO,MAAM,8BAA8B,qBAGjC,CAAC;AAGX,oBAAY,qBAAqB;IAE/B,UAAU,uBAAuB;IACjC,iBAAiB,8BAA8B;IAC/C,aAAa,0BAA0B;IACvC,kBAAkB,+BAA+B;IACjD,cAAc,2BAA2B;IACzC,oBAAoB,iCAAiC;IAGrD,mBAAmB,gCAAgC;IACnD,oBAAoB,iCAAiC;IAGrD,aAAa,0BAA0B;IACvC,oBAAoB,iCAAiC;IAGrD,uBAAuB,oCAAoC;IAC3D,sBAAsB,mCAAmC;IAGzD,mBAAmB,gCAAgC;IACnD,mBAAmB,gCAAgC;IACnD,oBAAoB,iCAAiC;IACrD,iBAAiB,8BAA8B;IAG/C,iBAAiB,8BAA8B;IAC/C,oBAAoB,iCAAiC;IACrD,eAAe,4BAA4B;IAC3C,mBAAmB,gCAAgC;IACnD,qBAAqB,kCAAkC;IACvD,sBAAsB,mCAAmC;IACzD,qBAAqB,kCAAkC;IACvD,wBAAwB,qCAAqC;CAC9D;AAED,eAAO,MAAM,mBAAmB,yCAAyC,CAAC;AAC1E,eAAO,MAAM,gCAAgC,yCAAyC,CAAC;AACvF,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AAIxF,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,UAAU,KAAG,OAa1D,CAAC;AAkBF,eAAO,MAAM,cAAc,SAAU,MAAM,GAAG,IAAI,OAAO,MAAM,KAAG,OAuBjE,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;CACxD,CAAC;AAIF,eAAO,MAAM,gBAAgB,UAAW,MAAM,GAAG,IAAI,WACP,CAAC;AAE/C,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,YAAY,MAAM,CAc1E,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAClB,MAAM,GAAG,IAAI,GAAG,SAAS,WAC5B,YAAY,MAAM,CAAC,YACgB,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,yBAAyB;;;CAG5B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,OAAO,yBAAyB,CAAC,CAAC;AAE7E,eAAO,MAAM,oBAAoB;;;GAOhC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAIF,eAAO,MAAM,yBAAyB,eAAgB,wBAAwB,KAAG,OAQhF,CAAC;AAMF,eAAO,MAAM,2BAA2B,mDAS9B,CAAC;AAMX,eAAO,MAAM,8BAA8B,qBAGjC,CAAC;AAGX,oBAAY,qBAAqB;IAE/B,UAAU,uBAAuB;IACjC,iBAAiB,8BAA8B;IAC/C,aAAa,0BAA0B;IACvC,kBAAkB,+BAA+B;IACjD,cAAc,2BAA2B;IACzC,oBAAoB,iCAAiC;IAGrD,mBAAmB,gCAAgC;IACnD,oBAAoB,iCAAiC;IAGrD,aAAa,0BAA0B;IACvC,oBAAoB,iCAAiC;IAGrD,uBAAuB,oCAAoC;IAC3D,sBAAsB,mCAAmC;IAGzD,mBAAmB,gCAAgC;IACnD,mBAAmB,gCAAgC;IACnD,oBAAoB,iCAAiC;IACrD,iBAAiB,8BAA8B;IAG/C,iBAAiB,8BAA8B;IAC/C,oBAAoB,iCAAiC;IACrD,eAAe,4BAA4B;IAC3C,mBAAmB,gCAAgC;IACnD,qBAAqB,kCAAkC;IACvD,sBAAsB,mCAAmC;IACzD,qBAAqB,kCAAkC;IACvD,wBAAwB,qCAAqC;CAC9D;AAED,eAAO,MAAM,mBAAmB,yCAAyC,CAAC;AAC1E,eAAO,MAAM,gCAAgC,yCAAyC,CAAC;AACvF,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AAIxF,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,UAAU,KAAG,OAa1D,CAAC;AAkBF,eAAO,MAAM,cAAc,SAAU,MAAM,GAAG,IAAI,OAAO,MAAM,KAAG,OAuBjE,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;CACxD,CAAC;AAIF,eAAO,MAAM,gBAAgB,UAAW,MAAM,GAAG,IAAI,WACP,CAAC;AAE/C,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,YAAY,MAAM,CAc1E,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAClB,MAAM,GAAG,IAAI,GAAG,SAAS,WAC5B,YAAY,MAAM,CAAC,YACgB,CAAC;AA8B/C,eAAO,MAAM,6BAA6B,WAAY,MAAM,GAAG,IAAI,YAGlE,CAAC;AAEF,eAAO,MAAM,oCAAoC,UAAW,MAAM,WAejE,CAAC;AAEF,eAAO,MAAM,6BAA6B,iBAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,YAIhE,CAAC;AAEJ,eAAO,MAAM,uBAAuB,2CAKjC,uBAAuB,KAAG,OAiB5B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -64,6 +64,7 @@ declare const normalizeBleUuid: (uuid?: string | null) => string;
|
|
|
64
64
|
declare const createKnownBleUuidAliases: (uuid: string) => ReadonlySet<string>;
|
|
65
65
|
declare const matchesKnownBleUuid: (actualUuid: string | null | undefined, aliases: ReadonlySet<string>) => boolean;
|
|
66
66
|
declare const isPro2FindMyAdvertisementName: (value?: string | null) => boolean;
|
|
67
|
+
declare const normalizePro2FindMyAdvertisementName: (value: string) => string;
|
|
67
68
|
declare const hasOnekeyCommunicationService: (serviceUuids: Array<string | null | undefined> | null | undefined) => boolean;
|
|
68
69
|
declare const isOnekeyBluetoothDevice: ({ id, name, localName, serviceUuids, }: BluetoothDeviceIdentity) => boolean;
|
|
69
70
|
|
|
@@ -316,6 +317,7 @@ declare const HardwareErrorCode: {
|
|
|
316
317
|
readonly BleDeviceDisconnected: 720;
|
|
317
318
|
readonly BlePoweredOff: 721;
|
|
318
319
|
readonly BleUnsupported: 722;
|
|
320
|
+
readonly BleUnavailableWhileUsbConnected: 723;
|
|
319
321
|
/**
|
|
320
322
|
* Hardware runtiome errors
|
|
321
323
|
*/
|
|
@@ -529,4 +531,4 @@ declare enum EDeviceType {
|
|
|
529
531
|
Neo = "neo"
|
|
530
532
|
}
|
|
531
533
|
|
|
532
|
-
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_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, createDefectiveFirmwareError, createDeferred, createDeprecatedHardwareError, createDeviceNotSupportMethodError, createKnownBleUuidAliases, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, hasOnekeyCommunicationService, isHeaderChunk, isKnownTrezorWebUsbDevice, isOnekeyBluetoothDevice, isOnekeyDevice, isPro2FindMyAdvertisementName, matchesKnownBleUuid, normalizeBleUuid, serializeError, wait };
|
|
534
|
+
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_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, createDefectiveFirmwareError, createDeferred, createDeprecatedHardwareError, createDeviceNotSupportMethodError, createKnownBleUuidAliases, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, hasOnekeyCommunicationService, isHeaderChunk, isKnownTrezorWebUsbDevice, isOnekeyBluetoothDevice, isOnekeyDevice, isPro2FindMyAdvertisementName, matchesKnownBleUuid, normalizeBleUuid, normalizePro2FindMyAdvertisementName, serializeError, wait };
|
package/dist/index.js
CHANGED
|
@@ -135,6 +135,7 @@ const HardwareErrorCode = {
|
|
|
135
135
|
BleDeviceDisconnected: 720,
|
|
136
136
|
BlePoweredOff: 721,
|
|
137
137
|
BleUnsupported: 722,
|
|
138
|
+
BleUnavailableWhileUsbConnected: 723,
|
|
138
139
|
RuntimeError: 800,
|
|
139
140
|
PinInvalid: 801,
|
|
140
141
|
PinCancelled: 802,
|
|
@@ -242,6 +243,7 @@ const HardwareErrorCodeMessage = {
|
|
|
242
243
|
[HardwareErrorCode.BleDeviceDisconnected]: 'Device disconnected',
|
|
243
244
|
[HardwareErrorCode.BlePoweredOff]: 'Bluetooth is turned off',
|
|
244
245
|
[HardwareErrorCode.BleUnsupported]: 'Bluetooth is not supported on this device',
|
|
246
|
+
[HardwareErrorCode.BleUnavailableWhileUsbConnected]: 'Bluetooth is unavailable while USB is connected. Unplug USB and try again.',
|
|
245
247
|
[HardwareErrorCode.RuntimeError]: 'Runtime error',
|
|
246
248
|
[HardwareErrorCode.PinInvalid]: 'Pin invalid',
|
|
247
249
|
[HardwareErrorCode.PinCancelled]: 'Pin cancelled',
|
|
@@ -517,10 +519,48 @@ const createKnownBleUuidAliases = (uuid) => {
|
|
|
517
519
|
const matchesKnownBleUuid = (actualUuid, aliases) => aliases.has(normalizeBleUuid(actualUuid));
|
|
518
520
|
const ONEKEY_COMMUNICATION_SERVICE_ALIASES = createKnownBleUuidAliases(ONEKEY_SERVICE_UUID);
|
|
519
521
|
const FIDO_SERVICE_ALIASES = createKnownBleUuidAliases('0000fffd-0000-1000-8000-00805f9b34fb');
|
|
522
|
+
const PRO2_COMPACT_NAME_PATTERN = /^(?:onekey)?pro2[a-f0-9]{4}$/i;
|
|
523
|
+
const FIND_MY_COMPACT_SUFFIXES = [
|
|
524
|
+
'findemy',
|
|
525
|
+
'findem',
|
|
526
|
+
'finde',
|
|
527
|
+
'findmy',
|
|
528
|
+
'findm',
|
|
529
|
+
'find',
|
|
530
|
+
'fin',
|
|
531
|
+
];
|
|
532
|
+
const compactBleName = (value) => Array.from(value)
|
|
533
|
+
.filter(character => character !== '-' && character.trim() !== '')
|
|
534
|
+
.join('')
|
|
535
|
+
.toLowerCase();
|
|
536
|
+
const getPro2FindMyBaseLength = (value) => {
|
|
537
|
+
const compactName = compactBleName(value);
|
|
538
|
+
const suffix = FIND_MY_COMPACT_SUFFIXES.find(candidate => compactName.endsWith(candidate));
|
|
539
|
+
if (!suffix)
|
|
540
|
+
return undefined;
|
|
541
|
+
const compactBaseName = compactName.slice(0, -suffix.length);
|
|
542
|
+
return PRO2_COMPACT_NAME_PATTERN.test(compactBaseName) ? compactBaseName.length : undefined;
|
|
543
|
+
};
|
|
520
544
|
const isPro2FindMyAdvertisementName = (value) => {
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
return
|
|
545
|
+
if (!value)
|
|
546
|
+
return false;
|
|
547
|
+
return getPro2FindMyBaseLength(value) !== undefined;
|
|
548
|
+
};
|
|
549
|
+
const normalizePro2FindMyAdvertisementName = (value) => {
|
|
550
|
+
const baseLength = getPro2FindMyBaseLength(value);
|
|
551
|
+
if (baseLength === undefined)
|
|
552
|
+
return value;
|
|
553
|
+
let compactLength = 0;
|
|
554
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
555
|
+
const character = value[index];
|
|
556
|
+
if (character !== '-' && character.trim() !== '') {
|
|
557
|
+
compactLength += 1;
|
|
558
|
+
if (compactLength === baseLength) {
|
|
559
|
+
return value.slice(0, index + 1).trimEnd();
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
return value;
|
|
524
564
|
};
|
|
525
565
|
const hasOnekeyCommunicationService = (serviceUuids) => (serviceUuids !== null && serviceUuids !== void 0 ? serviceUuids : []).some(uuid => matchesKnownBleUuid(uuid, ONEKEY_COMMUNICATION_SERVICE_ALIASES));
|
|
526
566
|
const isOnekeyBluetoothDevice = ({ id, name, localName, serviceUuids, }) => {
|
|
@@ -641,5 +681,6 @@ exports.isOnekeyDevice = isOnekeyDevice;
|
|
|
641
681
|
exports.isPro2FindMyAdvertisementName = isPro2FindMyAdvertisementName;
|
|
642
682
|
exports.matchesKnownBleUuid = matchesKnownBleUuid;
|
|
643
683
|
exports.normalizeBleUuid = normalizeBleUuid;
|
|
684
|
+
exports.normalizePro2FindMyAdvertisementName = normalizePro2FindMyAdvertisementName;
|
|
644
685
|
exports.serializeError = serializeError;
|
|
645
686
|
exports.wait = wait;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-shared",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.124",
|
|
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": "
|
|
29
|
+
"gitHead": "939229b4fe0dd7939b6fa3b2f6801f4e6b055c3b"
|
|
30
30
|
}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
HardwareErrorCode,
|
|
3
|
+
HardwareErrorCodeMessage,
|
|
4
|
+
TypedError,
|
|
5
|
+
serializeError,
|
|
6
|
+
} from './HardwareError';
|
|
2
7
|
|
|
3
8
|
describe('HardwareErrorCode compatibility', () => {
|
|
4
9
|
test('preserves published Protocol V2 values while leaving code 829 unused', () => {
|
|
@@ -6,4 +11,26 @@ describe('HardwareErrorCode compatibility', () => {
|
|
|
6
11
|
expect(HardwareErrorCode.DeviceLocked).toBe(830);
|
|
7
12
|
expect(HardwareErrorCode.WalletSessionInvalid).toBe(831);
|
|
8
13
|
});
|
|
14
|
+
|
|
15
|
+
test('reserves the BLE and USB conflict code for app error mapping', () => {
|
|
16
|
+
expect(HardwareErrorCode.BleUnavailableWhileUsbConnected).toBe(723);
|
|
17
|
+
expect(HardwareErrorCodeMessage[HardwareErrorCode.BleUnavailableWhileUsbConnected]).toBe(
|
|
18
|
+
'Bluetooth is unavailable while USB is connected. Unplug USB and try again.'
|
|
19
|
+
);
|
|
20
|
+
expect(
|
|
21
|
+
serializeError({
|
|
22
|
+
error: TypedError(HardwareErrorCode.BleUnavailableWhileUsbConnected, undefined, {
|
|
23
|
+
failureCode: 'Failure_ProcessError',
|
|
24
|
+
firmwareMessage: 'link disabled',
|
|
25
|
+
}),
|
|
26
|
+
})
|
|
27
|
+
).toEqual({
|
|
28
|
+
code: 723,
|
|
29
|
+
error: 'Bluetooth is unavailable while USB is connected. Unplug USB and try again.',
|
|
30
|
+
params: {
|
|
31
|
+
failureCode: 'Failure_ProcessError',
|
|
32
|
+
firmwareMessage: 'link disabled',
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
});
|
|
9
36
|
});
|
package/src/HardwareError.ts
CHANGED
|
@@ -345,6 +345,7 @@ export const HardwareErrorCode = {
|
|
|
345
345
|
BleDeviceDisconnected: 720,
|
|
346
346
|
BlePoweredOff: 721,
|
|
347
347
|
BleUnsupported: 722,
|
|
348
|
+
BleUnavailableWhileUsbConnected: 723,
|
|
348
349
|
|
|
349
350
|
/**
|
|
350
351
|
* Hardware runtiome errors
|
|
@@ -619,6 +620,8 @@ export const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping = {
|
|
|
619
620
|
[HardwareErrorCode.BleDeviceDisconnected]: 'Device disconnected',
|
|
620
621
|
[HardwareErrorCode.BlePoweredOff]: 'Bluetooth is turned off',
|
|
621
622
|
[HardwareErrorCode.BleUnsupported]: 'Bluetooth is not supported on this device',
|
|
623
|
+
[HardwareErrorCode.BleUnavailableWhileUsbConnected]:
|
|
624
|
+
'Bluetooth is unavailable while USB is connected. Unplug USB and try again.',
|
|
622
625
|
|
|
623
626
|
/**
|
|
624
627
|
* Runtime Error
|
package/src/constants.test.ts
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
isOnekeyBluetoothDevice,
|
|
6
6
|
isOnekeyDevice,
|
|
7
7
|
matchesKnownBleUuid,
|
|
8
|
+
normalizePro2FindMyAdvertisementName,
|
|
8
9
|
} from './constants';
|
|
9
10
|
|
|
10
11
|
describe('hardware device identity filters', () => {
|
|
@@ -69,6 +70,22 @@ describe('hardware device identity filters', () => {
|
|
|
69
70
|
).toBe(false);
|
|
70
71
|
});
|
|
71
72
|
|
|
73
|
+
it.each([
|
|
74
|
+
['Pro2 A1B2 - Find My', 'Pro2 A1B2'],
|
|
75
|
+
['Pro2 5E9D - Finde My', 'Pro2 5E9D'],
|
|
76
|
+
[' OneKey Pro 2 A1B2 Find My ', ' OneKey Pro 2 A1B2'],
|
|
77
|
+
['OneKey Pro-2 22D8--Find-My', 'OneKey Pro-2 22D8'],
|
|
78
|
+
['Pro2 22D8FindMy', 'Pro2 22D8'],
|
|
79
|
+
['Pro2 22D8 - Fin', 'Pro2 22D8'],
|
|
80
|
+
['Pro2 22D8FindM', 'Pro2 22D8'],
|
|
81
|
+
[`Pro2 22D8${'\t'.repeat(10_000)}Find My`, 'Pro2 22D8'],
|
|
82
|
+
['Pro2 A1B2', 'Pro2 A1B2'],
|
|
83
|
+
['Pro2 Griffin', 'Pro2 Griffin'],
|
|
84
|
+
['Find My', 'Find My'],
|
|
85
|
+
])('normalizes the public Pro2 advertisement name %s', (name, expected) => {
|
|
86
|
+
expect(normalizePro2FindMyAdvertisementName(name)).toBe(expected);
|
|
87
|
+
});
|
|
88
|
+
|
|
72
89
|
it('keeps OneKey discovery on the communication service', () => {
|
|
73
90
|
expect(
|
|
74
91
|
isOnekeyBluetoothDevice({
|
package/src/constants.ts
CHANGED
|
@@ -195,10 +195,52 @@ export const matchesKnownBleUuid = (
|
|
|
195
195
|
|
|
196
196
|
const ONEKEY_COMMUNICATION_SERVICE_ALIASES = createKnownBleUuidAliases(ONEKEY_SERVICE_UUID);
|
|
197
197
|
const FIDO_SERVICE_ALIASES = createKnownBleUuidAliases('0000fffd-0000-1000-8000-00805f9b34fb');
|
|
198
|
+
const PRO2_COMPACT_NAME_PATTERN = /^(?:onekey)?pro2[a-f0-9]{4}$/i;
|
|
199
|
+
const FIND_MY_COMPACT_SUFFIXES = [
|
|
200
|
+
'findemy',
|
|
201
|
+
'findem',
|
|
202
|
+
'finde',
|
|
203
|
+
'findmy',
|
|
204
|
+
'findm',
|
|
205
|
+
'find',
|
|
206
|
+
'fin',
|
|
207
|
+
] as const;
|
|
208
|
+
|
|
209
|
+
const compactBleName = (value: string) =>
|
|
210
|
+
Array.from(value)
|
|
211
|
+
.filter(character => character !== '-' && character.trim() !== '')
|
|
212
|
+
.join('')
|
|
213
|
+
.toLowerCase();
|
|
214
|
+
|
|
215
|
+
const getPro2FindMyBaseLength = (value: string) => {
|
|
216
|
+
const compactName = compactBleName(value);
|
|
217
|
+
const suffix = FIND_MY_COMPACT_SUFFIXES.find(candidate => compactName.endsWith(candidate));
|
|
218
|
+
if (!suffix) return undefined;
|
|
219
|
+
|
|
220
|
+
const compactBaseName = compactName.slice(0, -suffix.length);
|
|
221
|
+
return PRO2_COMPACT_NAME_PATTERN.test(compactBaseName) ? compactBaseName.length : undefined;
|
|
222
|
+
};
|
|
198
223
|
|
|
199
224
|
export const isPro2FindMyAdvertisementName = (value?: string | null) => {
|
|
200
|
-
|
|
201
|
-
return
|
|
225
|
+
if (!value) return false;
|
|
226
|
+
return getPro2FindMyBaseLength(value) !== undefined;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export const normalizePro2FindMyAdvertisementName = (value: string) => {
|
|
230
|
+
const baseLength = getPro2FindMyBaseLength(value);
|
|
231
|
+
if (baseLength === undefined) return value;
|
|
232
|
+
|
|
233
|
+
let compactLength = 0;
|
|
234
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
235
|
+
const character = value[index];
|
|
236
|
+
if (character !== '-' && character.trim() !== '') {
|
|
237
|
+
compactLength += 1;
|
|
238
|
+
if (compactLength === baseLength) {
|
|
239
|
+
return value.slice(0, index + 1).trimEnd();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return value;
|
|
202
244
|
};
|
|
203
245
|
|
|
204
246
|
export const hasOnekeyCommunicationService = (
|