@ukeyfe/hardware-shared 1.1.13
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 +3 -0
- package/dist/HardwareError.d.ts +128 -0
- package/dist/HardwareError.d.ts.map +1 -0
- package/dist/constants.d.ts +35 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/deferred.d.ts +9 -0
- package/dist/deferred.d.ts.map +1 -0
- package/dist/deviceType.d.ts +10 -0
- package/dist/deviceType.d.ts.map +1 -0
- package/dist/firmwareType.d.ts +5 -0
- package/dist/firmwareType.d.ts.map +1 -0
- package/dist/index.d.ts +220 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +509 -0
- package/dist/timerUtils.d.ts +2 -0
- package/dist/timerUtils.d.ts.map +1 -0
- package/package.json +28 -0
- package/src/HardwareError.ts +751 -0
- package/src/constants.ts +78 -0
- package/src/deferred.ts +35 -0
- package/src/deviceType.ts +9 -0
- package/src/firmwareType.ts +4 -0
- package/src/index.ts +7 -0
- package/src/timerUtils.ts +4 -0
- package/tsconfig.json +7 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const UKEY_WEBUSB_FILTER = [
|
|
6
|
+
{ vendorId: 0x1209, productId: 0x53c0 },
|
|
7
|
+
{ vendorId: 0x1209, productId: 0x53c1 },
|
|
8
|
+
{ vendorId: 0x1209, productId: 0x4f4a },
|
|
9
|
+
{ vendorId: 0x1209, productId: 0x4f4b },
|
|
10
|
+
];
|
|
11
|
+
exports.EUKeyBleMessageKeys = void 0;
|
|
12
|
+
(function (EUKeyBleMessageKeys) {
|
|
13
|
+
EUKeyBleMessageKeys["BLE_SELECT"] = "$ukey-ble-select";
|
|
14
|
+
EUKeyBleMessageKeys["BLE_SELECT_RESULT"] = "$ukey-ble-select-result";
|
|
15
|
+
EUKeyBleMessageKeys["BLE_STOP_SCAN"] = "$ukey-ble-stop-scan";
|
|
16
|
+
EUKeyBleMessageKeys["BLE_CANCEL_REQUEST"] = "$ukey-ble-cancel-request";
|
|
17
|
+
EUKeyBleMessageKeys["BLE_PRE_SELECT"] = "$ukey-ble-pre-select";
|
|
18
|
+
EUKeyBleMessageKeys["BLE_CLEAR_PRE_SELECT"] = "$ukey-ble-clear-pre-select";
|
|
19
|
+
EUKeyBleMessageKeys["BLE_PAIRING_REQUEST"] = "$ukey-ble-pairing-request";
|
|
20
|
+
EUKeyBleMessageKeys["BLE_PAIRING_RESPONSE"] = "$ukey-ble-pairing-response";
|
|
21
|
+
EUKeyBleMessageKeys["BLE_ENUMERATE"] = "$ukey-ble-enumerate";
|
|
22
|
+
EUKeyBleMessageKeys["BLE_ENUMERATE_RESULT"] = "$ukey-ble-enumerate-result";
|
|
23
|
+
EUKeyBleMessageKeys["BLE_DEVICE_DISCONNECTED"] = "$ukey-ble-device-disconnected";
|
|
24
|
+
EUKeyBleMessageKeys["BLE_AVAILABILITY_CHECK"] = "$ukey-ble-availability-check";
|
|
25
|
+
EUKeyBleMessageKeys["NOBLE_BLE_ENUMERATE"] = "$ukey-noble-ble-enumerate";
|
|
26
|
+
EUKeyBleMessageKeys["NOBLE_BLE_STOP_SCAN"] = "$ukey-noble-ble-stop-scan";
|
|
27
|
+
EUKeyBleMessageKeys["NOBLE_BLE_GET_DEVICE"] = "$ukey-noble-ble-get-device";
|
|
28
|
+
EUKeyBleMessageKeys["NOBLE_BLE_CONNECT"] = "$ukey-noble-ble-connect";
|
|
29
|
+
EUKeyBleMessageKeys["NOBLE_BLE_DISCONNECT"] = "$ukey-noble-ble-disconnect";
|
|
30
|
+
EUKeyBleMessageKeys["NOBLE_BLE_WRITE"] = "$ukey-noble-ble-write";
|
|
31
|
+
EUKeyBleMessageKeys["NOBLE_BLE_SUBSCRIBE"] = "$ukey-noble-ble-subscribe";
|
|
32
|
+
EUKeyBleMessageKeys["NOBLE_BLE_UNSUBSCRIBE"] = "$ukey-noble-ble-unsubscribe";
|
|
33
|
+
EUKeyBleMessageKeys["NOBLE_BLE_NOTIFICATION"] = "$ukey-noble-ble-notification";
|
|
34
|
+
EUKeyBleMessageKeys["NOBLE_BLE_CANCEL_PAIRING"] = "$ukey-noble-ble-cancel-pairing";
|
|
35
|
+
})(exports.EUKeyBleMessageKeys || (exports.EUKeyBleMessageKeys = {}));
|
|
36
|
+
const UKEY_SERVICE_UUID = '00000001-0000-1000-8000-00805f9b34fb';
|
|
37
|
+
const UKEY_WRITE_CHARACTERISTIC_UUID = '00000002-0000-1000-8000-00805f9b34fb';
|
|
38
|
+
const UKEY_NOTIFY_CHARACTERISTIC_UUID = '00000003-0000-1000-8000-00805f9b34fb';
|
|
39
|
+
const MESSAGE_TOP_CHAR = 63;
|
|
40
|
+
const MESSAGE_HEADER_BYTE = 35;
|
|
41
|
+
const isHeaderChunk = (chunk) => {
|
|
42
|
+
if (chunk.length < 9)
|
|
43
|
+
return false;
|
|
44
|
+
const [MagicQuestionMark, sharp1, sharp2] = chunk;
|
|
45
|
+
if (String.fromCharCode(MagicQuestionMark) === String.fromCharCode(MESSAGE_TOP_CHAR) &&
|
|
46
|
+
String.fromCharCode(sharp1) === String.fromCharCode(MESSAGE_HEADER_BYTE) &&
|
|
47
|
+
String.fromCharCode(sharp2) === String.fromCharCode(MESSAGE_HEADER_BYTE)) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
};
|
|
52
|
+
const isUkeyDevice = (name, id) => {
|
|
53
|
+
var _a;
|
|
54
|
+
if ((_a = id === null || id === void 0 ? void 0 : id.startsWith) === null || _a === void 0 ? void 0 : _a.call(id, 'MI')) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
const re = /(BixinKey\d{10})|(K\d{4})|(T\d{4})|(Touch\s\w{4})|(Pro\s\w{4})/i;
|
|
58
|
+
if (name && re.exec(name)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/******************************************************************************
|
|
65
|
+
Copyright (c) Microsoft Corporation.
|
|
66
|
+
|
|
67
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
68
|
+
purpose with or without fee is hereby granted.
|
|
69
|
+
|
|
70
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
71
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
72
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
73
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
74
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
75
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
76
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
77
|
+
***************************************************************************** */
|
|
78
|
+
|
|
79
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
80
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
81
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
82
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
83
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
84
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
85
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
90
|
+
var e = new Error(message);
|
|
91
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
function createDeferred(arg, data) {
|
|
95
|
+
let localResolve = (_t) => { };
|
|
96
|
+
let localReject = (_e) => { };
|
|
97
|
+
let id;
|
|
98
|
+
const promise = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
localResolve = resolve;
|
|
100
|
+
localReject = reject;
|
|
101
|
+
if (typeof arg === 'function') {
|
|
102
|
+
try {
|
|
103
|
+
yield arg();
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
reject(error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (typeof arg === 'string')
|
|
110
|
+
id = arg;
|
|
111
|
+
}));
|
|
112
|
+
return {
|
|
113
|
+
id,
|
|
114
|
+
data,
|
|
115
|
+
resolve: localResolve,
|
|
116
|
+
reject: localReject,
|
|
117
|
+
promise,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function fillStringWithArguments(value, object) {
|
|
122
|
+
if (typeof value !== 'string')
|
|
123
|
+
return value;
|
|
124
|
+
if (value.indexOf('{') === -1)
|
|
125
|
+
return value;
|
|
126
|
+
let result = '';
|
|
127
|
+
let i = 0;
|
|
128
|
+
const dict = object;
|
|
129
|
+
while (i < value.length) {
|
|
130
|
+
const open = value.indexOf('{', i);
|
|
131
|
+
if (open === -1) {
|
|
132
|
+
result += value.slice(i);
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
const close = value.indexOf('}', open + 1);
|
|
136
|
+
if (close === -1) {
|
|
137
|
+
result += value.slice(i);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
result += value.slice(i, open);
|
|
141
|
+
const key = value.slice(open + 1, close);
|
|
142
|
+
if (key.length === 0) {
|
|
143
|
+
result += '{}';
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const replacement = dict[key];
|
|
147
|
+
result += replacement ? String(replacement) : '?';
|
|
148
|
+
}
|
|
149
|
+
i = close + 1;
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
class HardwareError extends Error {
|
|
154
|
+
constructor(hardwareError) {
|
|
155
|
+
var _a;
|
|
156
|
+
super();
|
|
157
|
+
this.errorCode = HardwareErrorCode.UnknownError;
|
|
158
|
+
this.message = '';
|
|
159
|
+
this.params = {};
|
|
160
|
+
const errorMessageMapping = HardwareErrorCodeMessage;
|
|
161
|
+
this.message = errorMessageMapping[HardwareErrorCode.UnknownError];
|
|
162
|
+
if (typeof hardwareError === 'string') {
|
|
163
|
+
this.errorCode = HardwareErrorCode.UnknownError;
|
|
164
|
+
this.message = hardwareError;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
const message = (_a = (hardwareError.message || errorMessageMapping[hardwareError.errorCode])) !== null && _a !== void 0 ? _a : '';
|
|
168
|
+
if (message) {
|
|
169
|
+
this.message = fillStringWithArguments(message, hardwareError);
|
|
170
|
+
}
|
|
171
|
+
this.params = hardwareError.params;
|
|
172
|
+
this.errorCode = hardwareError.errorCode;
|
|
173
|
+
}
|
|
174
|
+
this.name = 'HardwareError';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const HardwareErrorCode = {
|
|
178
|
+
UnknownError: 0,
|
|
179
|
+
DeviceFwException: 101,
|
|
180
|
+
DeviceUnexpectedMode: 102,
|
|
181
|
+
DeviceListNotInitialized: 103,
|
|
182
|
+
SelectDevice: 104,
|
|
183
|
+
DeviceNotFound: 105,
|
|
184
|
+
DeviceInitializeFailed: 106,
|
|
185
|
+
DeviceInterruptedFromOutside: 107,
|
|
186
|
+
RequiredButInBootloaderMode: 108,
|
|
187
|
+
DeviceInterruptedFromUser: 109,
|
|
188
|
+
DeviceCheckDeviceIdError: 110,
|
|
189
|
+
DeviceNotSupportPassphrase: 111,
|
|
190
|
+
DeviceCheckPassphraseStateError: 112,
|
|
191
|
+
DeviceNotOpenedPassphrase: 113,
|
|
192
|
+
DeviceOpenedPassphrase: 114,
|
|
193
|
+
DeviceDetectInBootloaderMode: 115,
|
|
194
|
+
NotAllowInBootloaderMode: 116,
|
|
195
|
+
DeviceBusy: 117,
|
|
196
|
+
DeviceCheckUnlockTypeError: 118,
|
|
197
|
+
NotInitialized: 200,
|
|
198
|
+
IFrameNotInitialized: 300,
|
|
199
|
+
IFrameAleradyInitialized: 301,
|
|
200
|
+
IFrameLoadFail: 302,
|
|
201
|
+
IframeTimeout: 303,
|
|
202
|
+
IframeBlocked: 304,
|
|
203
|
+
IframeDistrust: 305,
|
|
204
|
+
CallMethodError: 400,
|
|
205
|
+
CallMethodNotResponse: 404,
|
|
206
|
+
CallMethodInvalidParameter: 405,
|
|
207
|
+
FirmwareUpdateDownloadFailed: 406,
|
|
208
|
+
CallMethodNeedUpgradeFirmware: 407,
|
|
209
|
+
CallMethodDeprecated: 408,
|
|
210
|
+
FirmwareUpdateLimitOneDevice: 409,
|
|
211
|
+
FirmwareUpdateManuallyEnterBoot: 410,
|
|
212
|
+
FirmwareUpdateAutoEnterBootFailure: 411,
|
|
213
|
+
NewFirmwareUnRelease: 412,
|
|
214
|
+
UseDesktopToUpdateFirmware: 413,
|
|
215
|
+
NewFirmwareForceUpdate: 414,
|
|
216
|
+
DeviceNotSupportMethod: 415,
|
|
217
|
+
ForbiddenKeyPath: 416,
|
|
218
|
+
RepeatUnlocking: 417,
|
|
219
|
+
DefectiveFirmware: 418,
|
|
220
|
+
NetworkError: 500,
|
|
221
|
+
TransportNotConfigured: 600,
|
|
222
|
+
TransportCallInProgress: 601,
|
|
223
|
+
TransportNotFound: 602,
|
|
224
|
+
TransportInvalidProtobuf: 603,
|
|
225
|
+
BleScanError: 700,
|
|
226
|
+
BlePermissionError: 701,
|
|
227
|
+
BleLocationError: 702,
|
|
228
|
+
BleRequiredUUID: 703,
|
|
229
|
+
BleConnectedError: 704,
|
|
230
|
+
BleDeviceNotBonded: 705,
|
|
231
|
+
BleServiceNotFound: 706,
|
|
232
|
+
BleCharacteristicNotFound: 707,
|
|
233
|
+
BleMonitorError: 708,
|
|
234
|
+
BleCharacteristicNotifyError: 709,
|
|
235
|
+
BleWriteCharacteristicError: 710,
|
|
236
|
+
BleAlreadyConnected: 711,
|
|
237
|
+
BleLocationServicesDisabled: 712,
|
|
238
|
+
BleTimeoutError: 713,
|
|
239
|
+
BleForceCleanRunPromise: 714,
|
|
240
|
+
BleDeviceBondError: 715,
|
|
241
|
+
BleCharacteristicNotifyChangeFailure: 716,
|
|
242
|
+
BleTransportCallCanceled: 717,
|
|
243
|
+
BleDeviceBondedCanceled: 718,
|
|
244
|
+
BlePeerRemovedPairingInformation: 719,
|
|
245
|
+
BleDeviceDisconnected: 720,
|
|
246
|
+
BlePoweredOff: 721,
|
|
247
|
+
BleUnsupported: 722,
|
|
248
|
+
RuntimeError: 800,
|
|
249
|
+
PinInvalid: 801,
|
|
250
|
+
PinCancelled: 802,
|
|
251
|
+
ActionCancelled: 803,
|
|
252
|
+
FirmwareError: 804,
|
|
253
|
+
ResponseUnexpectTypeError: 805,
|
|
254
|
+
BridgeNetworkError: 806,
|
|
255
|
+
BridgeTimeoutError: 807,
|
|
256
|
+
BridgeNotInstalled: 808,
|
|
257
|
+
PollingTimeout: 809,
|
|
258
|
+
PollingStop: 810,
|
|
259
|
+
BlindSignDisabled: 811,
|
|
260
|
+
UnexpectPassphrase: 812,
|
|
261
|
+
FileAlreadyExists: 813,
|
|
262
|
+
CheckDownloadFileError: 814,
|
|
263
|
+
NotInSigningMode: 815,
|
|
264
|
+
DataOverload: 816,
|
|
265
|
+
BridgeDeviceDisconnected: 817,
|
|
266
|
+
BTCPsbtTooManyUtxos: 818,
|
|
267
|
+
EmmcFileWriteFirmwareError: 819,
|
|
268
|
+
FirmwareVerificationFailed: 820,
|
|
269
|
+
BridgeNeedsPermission: 821,
|
|
270
|
+
LowlevelTrasnportConnectError: 900,
|
|
271
|
+
WebDeviceNotFoundOrNeedsPermission: 901,
|
|
272
|
+
WebDevicePromptAccessError: 902,
|
|
273
|
+
};
|
|
274
|
+
const HardwareErrorCodeMessage = {
|
|
275
|
+
[HardwareErrorCode.UnknownError]: 'Unknown error occurred. Check message property.',
|
|
276
|
+
[HardwareErrorCode.DeviceFwException]: 'Firmware version mismatch',
|
|
277
|
+
[HardwareErrorCode.DeviceUnexpectedMode]: 'Device unexpected mode',
|
|
278
|
+
[HardwareErrorCode.DeviceListNotInitialized]: 'Device list is not initialized',
|
|
279
|
+
[HardwareErrorCode.SelectDevice]: 'Please select the connected device',
|
|
280
|
+
[HardwareErrorCode.DeviceNotFound]: 'Device not found',
|
|
281
|
+
[HardwareErrorCode.DeviceInitializeFailed]: 'Device initialization failed',
|
|
282
|
+
[HardwareErrorCode.DeviceInterruptedFromOutside]: 'Device interrupted',
|
|
283
|
+
[HardwareErrorCode.DeviceInterruptedFromUser]: 'Device interrupted',
|
|
284
|
+
[HardwareErrorCode.RequiredButInBootloaderMode]: 'Device should be in bootloader mode',
|
|
285
|
+
[HardwareErrorCode.DeviceCheckDeviceIdError]: 'Device Id in the features is not same.',
|
|
286
|
+
[HardwareErrorCode.DeviceNotSupportPassphrase]: 'Device not support passphrase',
|
|
287
|
+
[HardwareErrorCode.DeviceCheckPassphraseStateError]: 'Device passphrase state error',
|
|
288
|
+
[HardwareErrorCode.DeviceNotOpenedPassphrase]: 'Device not opened passphrase',
|
|
289
|
+
[HardwareErrorCode.DeviceOpenedPassphrase]: 'Device opened passphrase',
|
|
290
|
+
[HardwareErrorCode.DeviceDetectInBootloaderMode]: 'Device in bootloader mode',
|
|
291
|
+
[HardwareErrorCode.NotAllowInBootloaderMode]: 'Device not allow in bootloader mode',
|
|
292
|
+
[HardwareErrorCode.DeviceBusy]: 'Device is busy',
|
|
293
|
+
[HardwareErrorCode.DeviceCheckUnlockTypeError]: 'Device check unlock type not match error',
|
|
294
|
+
[HardwareErrorCode.NotInitialized]: 'Not initialized',
|
|
295
|
+
[HardwareErrorCode.IFrameNotInitialized]: 'IFrame not initialized',
|
|
296
|
+
[HardwareErrorCode.IFrameAleradyInitialized]: 'IFrame alerady initialized',
|
|
297
|
+
[HardwareErrorCode.IFrameLoadFail]: 'IFrame load fail',
|
|
298
|
+
[HardwareErrorCode.IframeTimeout]: 'init iframe time out',
|
|
299
|
+
[HardwareErrorCode.IframeBlocked]: 'IFrame blocked',
|
|
300
|
+
[HardwareErrorCode.IframeDistrust]: 'IFrame host not trust',
|
|
301
|
+
[HardwareErrorCode.CallMethodError]: 'Runtime errors during method execution',
|
|
302
|
+
[HardwareErrorCode.CallMethodNotResponse]: 'Method does not responding',
|
|
303
|
+
[HardwareErrorCode.CallMethodInvalidParameter]: 'Call method invalid parameter',
|
|
304
|
+
[HardwareErrorCode.FirmwareUpdateDownloadFailed]: 'Firmware update download failed',
|
|
305
|
+
[HardwareErrorCode.CallMethodNeedUpgradeFirmware]: 'Call method need upgrade firmware',
|
|
306
|
+
[HardwareErrorCode.CallMethodDeprecated]: 'Call method is deprecated',
|
|
307
|
+
[HardwareErrorCode.FirmwareUpdateLimitOneDevice]: 'Only one device can be connected during firmware upgrade',
|
|
308
|
+
[HardwareErrorCode.FirmwareUpdateManuallyEnterBoot]: 'You need to manually enter boot',
|
|
309
|
+
[HardwareErrorCode.FirmwareUpdateAutoEnterBootFailure]: 'Description Failed to automatically enter boot',
|
|
310
|
+
[HardwareErrorCode.NewFirmwareUnRelease]: 'new firmware has not been released yet',
|
|
311
|
+
[HardwareErrorCode.NewFirmwareForceUpdate]: 'new firmware has been released, please update',
|
|
312
|
+
[HardwareErrorCode.UseDesktopToUpdateFirmware]: 'Please use UKey desktop client to update the firmware',
|
|
313
|
+
[HardwareErrorCode.DeviceNotSupportMethod]: 'Device not support this method',
|
|
314
|
+
[HardwareErrorCode.ForbiddenKeyPath]: 'Forbidden key path',
|
|
315
|
+
[HardwareErrorCode.RepeatUnlocking]: 'Repeat unlocking',
|
|
316
|
+
[HardwareErrorCode.DefectiveFirmware]: 'Device firmware is defective, please update immediately',
|
|
317
|
+
[HardwareErrorCode.NetworkError]: 'Network request error',
|
|
318
|
+
[HardwareErrorCode.TransportNotConfigured]: 'Transport not configured',
|
|
319
|
+
[HardwareErrorCode.TransportCallInProgress]: 'Transport call in progress',
|
|
320
|
+
[HardwareErrorCode.TransportNotFound]: 'Transport not found',
|
|
321
|
+
[HardwareErrorCode.TransportInvalidProtobuf]: 'Transport invalid protobuf',
|
|
322
|
+
[HardwareErrorCode.BleScanError]: 'BLE scan error',
|
|
323
|
+
[HardwareErrorCode.BlePermissionError]: 'Bluetooth required to be turned on',
|
|
324
|
+
[HardwareErrorCode.BleLocationError]: 'Location permissions for the application are not available',
|
|
325
|
+
[HardwareErrorCode.BleRequiredUUID]: 'uuid is required',
|
|
326
|
+
[HardwareErrorCode.BleConnectedError]: 'connected error is always runtime error',
|
|
327
|
+
[HardwareErrorCode.BleDeviceNotBonded]: 'device is not bonded',
|
|
328
|
+
[HardwareErrorCode.BleDeviceBondedCanceled]: 'device is canceled bonding',
|
|
329
|
+
[HardwareErrorCode.BlePeerRemovedPairingInformation]: 'need to delete pairing information',
|
|
330
|
+
[HardwareErrorCode.BleServiceNotFound]: 'BLEServiceNotFound: service not found',
|
|
331
|
+
[HardwareErrorCode.BleCharacteristicNotFound]: 'BLEServiceNotFound: service not found',
|
|
332
|
+
[HardwareErrorCode.BleMonitorError]: 'Monitor Error: characteristic not found',
|
|
333
|
+
[HardwareErrorCode.BleCharacteristicNotifyError]: 'Characteristic Notify Error',
|
|
334
|
+
[HardwareErrorCode.BleWriteCharacteristicError]: 'Write Characteristic Error',
|
|
335
|
+
[HardwareErrorCode.BleAlreadyConnected]: 'Already connected to device',
|
|
336
|
+
[HardwareErrorCode.BleLocationServicesDisabled]: 'Location Services disabled',
|
|
337
|
+
[HardwareErrorCode.BleTimeoutError]: 'The connection has timed out unexpectedly.',
|
|
338
|
+
[HardwareErrorCode.BleForceCleanRunPromise]: 'Force clean Bluetooth run promise',
|
|
339
|
+
[HardwareErrorCode.BleDeviceBondError]: 'Bluetooth pairing failed',
|
|
340
|
+
[HardwareErrorCode.BleCharacteristicNotifyChangeFailure]: 'Characteristic Notify Change Failure',
|
|
341
|
+
[HardwareErrorCode.BleTransportCallCanceled]: 'Ble Transport call canceled',
|
|
342
|
+
[HardwareErrorCode.BleDeviceDisconnected]: 'Device disconnected',
|
|
343
|
+
[HardwareErrorCode.BlePoweredOff]: 'Bluetooth is turned off',
|
|
344
|
+
[HardwareErrorCode.BleUnsupported]: 'Bluetooth is not supported on this device',
|
|
345
|
+
[HardwareErrorCode.RuntimeError]: 'Runtime error',
|
|
346
|
+
[HardwareErrorCode.PinInvalid]: 'Pin invalid',
|
|
347
|
+
[HardwareErrorCode.PinCancelled]: 'Pin cancelled',
|
|
348
|
+
[HardwareErrorCode.ActionCancelled]: 'Action cancelled by user',
|
|
349
|
+
[HardwareErrorCode.FirmwareError]: 'Firmware installation failed',
|
|
350
|
+
[HardwareErrorCode.ResponseUnexpectTypeError]: 'Response type is not expected',
|
|
351
|
+
[HardwareErrorCode.BridgeNetworkError]: 'Bridge network error',
|
|
352
|
+
[HardwareErrorCode.BridgeTimeoutError]: 'Bridge network timeout',
|
|
353
|
+
[HardwareErrorCode.BridgeNotInstalled]: 'Bridge not installed',
|
|
354
|
+
[HardwareErrorCode.BridgeDeviceDisconnected]: 'Bridge device disconnected during action',
|
|
355
|
+
[HardwareErrorCode.PollingTimeout]: 'Polling timeout',
|
|
356
|
+
[HardwareErrorCode.PollingStop]: 'Polling stop',
|
|
357
|
+
[HardwareErrorCode.BlindSignDisabled]: 'Please confirm the BlindSign enabled',
|
|
358
|
+
[HardwareErrorCode.UnexpectPassphrase]: 'Unexpect passphrase',
|
|
359
|
+
[HardwareErrorCode.FileAlreadyExists]: 'File already exists',
|
|
360
|
+
[HardwareErrorCode.CheckDownloadFileError]: 'Check download file error',
|
|
361
|
+
[HardwareErrorCode.NotInSigningMode]: 'not in signing mode',
|
|
362
|
+
[HardwareErrorCode.DataOverload]: 'Params data overload',
|
|
363
|
+
[HardwareErrorCode.BTCPsbtTooManyUtxos]: 'PSBT too many utxos',
|
|
364
|
+
[HardwareErrorCode.EmmcFileWriteFirmwareError]: 'EMMC file write firmware error',
|
|
365
|
+
[HardwareErrorCode.FirmwareVerificationFailed]: 'Firmware verification failed',
|
|
366
|
+
[HardwareErrorCode.BridgeNeedsPermission]: 'Bridge needs permission',
|
|
367
|
+
[HardwareErrorCode.LowlevelTrasnportConnectError]: 'Lowlevel transport connect error',
|
|
368
|
+
[HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission]: 'Web-USB or Web-Bluetooth device not found or needs permission',
|
|
369
|
+
[HardwareErrorCode.WebDevicePromptAccessError]: 'Web-USB or Web-Bluetooth device prompt access error',
|
|
370
|
+
};
|
|
371
|
+
const TypedError = (hardwareError, message, params) => {
|
|
372
|
+
if (typeof hardwareError === 'string') {
|
|
373
|
+
return new HardwareError(hardwareError);
|
|
374
|
+
}
|
|
375
|
+
return new HardwareError({ errorCode: hardwareError, message: message !== null && message !== void 0 ? message : '', params });
|
|
376
|
+
};
|
|
377
|
+
const serializeError = (payload) => {
|
|
378
|
+
if (payload && payload.error instanceof HardwareError) {
|
|
379
|
+
return {
|
|
380
|
+
error: payload.error.message,
|
|
381
|
+
code: payload.error.errorCode,
|
|
382
|
+
params: payload.error.params,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
if (payload && payload.error && payload.error.name === 'AxiosError') {
|
|
386
|
+
return { error: payload.error.message, code: HardwareErrorCode.BridgeNetworkError };
|
|
387
|
+
}
|
|
388
|
+
if (payload && payload.error instanceof Error) {
|
|
389
|
+
return { error: payload.error.message, code: payload.error.code };
|
|
390
|
+
}
|
|
391
|
+
return payload;
|
|
392
|
+
};
|
|
393
|
+
const CreateErrorByMessage = (message) => {
|
|
394
|
+
for (const code of Object.values(HardwareErrorCode)) {
|
|
395
|
+
if (HardwareErrorCodeMessage[code] === message) {
|
|
396
|
+
return TypedError(code);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return new HardwareError(message);
|
|
400
|
+
};
|
|
401
|
+
const CreateHardwareErrorByBridgeError = (raw) => {
|
|
402
|
+
const msg = String(raw || '');
|
|
403
|
+
if (msg.includes('LIBUSB_ERROR_ACCESS')) {
|
|
404
|
+
return TypedError(HardwareErrorCode.BridgeNeedsPermission, 'LIBUSB_ERROR_ACCESS');
|
|
405
|
+
}
|
|
406
|
+
return TypedError(HardwareErrorCode.BridgeNetworkError, msg);
|
|
407
|
+
};
|
|
408
|
+
const createNewFirmwareUnReleaseHardwareError = (currentVersion, requireVersion, methodName) => {
|
|
409
|
+
const methodInfo = methodName ? ` for method '${methodName}'` : '';
|
|
410
|
+
return TypedError(HardwareErrorCode.NewFirmwareUnRelease, `Device firmware version is too low${methodInfo}, please update to the latest version`, { current: currentVersion, require: requireVersion, method: methodName });
|
|
411
|
+
};
|
|
412
|
+
const createNeedUpgradeFirmwareHardwareError = (currentVersion, requireVersion, methodName) => {
|
|
413
|
+
const methodInfo = methodName ? ` for method '${methodName}'` : '';
|
|
414
|
+
return TypedError(HardwareErrorCode.CallMethodNeedUpgradeFirmware, `Device firmware version is too low${methodInfo}, please update to ${requireVersion}`, { current: currentVersion, require: requireVersion, method: methodName });
|
|
415
|
+
};
|
|
416
|
+
const createNewFirmwareForceUpdateHardwareError = (connectId, deviceId, versionTypes, currentVersions) => {
|
|
417
|
+
const types = versionTypes || [];
|
|
418
|
+
const typeMap = { firmware: 'firmware', ble: 'BLE firmware' };
|
|
419
|
+
const requiredTypes = types.filter(type => type in typeMap);
|
|
420
|
+
const getVersionInfo = () => {
|
|
421
|
+
const versions = [];
|
|
422
|
+
if (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.firmware)
|
|
423
|
+
versions.push(`firmware version: ${currentVersions.firmware}`);
|
|
424
|
+
if (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.ble)
|
|
425
|
+
versions.push(`BLE version: ${currentVersions.ble}`);
|
|
426
|
+
return versions.length > 0 ? ` (${versions.join(', ')})` : '';
|
|
427
|
+
};
|
|
428
|
+
const getTypeDescription = () => requiredTypes.map(type => typeMap[type]).join(' and ');
|
|
429
|
+
const message = `Device ${getTypeDescription()} version is too low. ${getVersionInfo()}`;
|
|
430
|
+
return TypedError(HardwareErrorCode.NewFirmwareForceUpdate, message, {
|
|
431
|
+
connectId,
|
|
432
|
+
deviceId,
|
|
433
|
+
versionTypes,
|
|
434
|
+
currentVersions,
|
|
435
|
+
});
|
|
436
|
+
};
|
|
437
|
+
const createDeprecatedHardwareError = (currentVersion, deprecatedVersion, methodName) => {
|
|
438
|
+
const methodInfo = methodName ? ` Method '${methodName}'` : 'This method';
|
|
439
|
+
return TypedError(HardwareErrorCode.CallMethodDeprecated, `Device firmware version is too high. ${methodInfo} has been deprecated in ${deprecatedVersion}`, { current: currentVersion, deprecated: deprecatedVersion, method: methodName });
|
|
440
|
+
};
|
|
441
|
+
const createDefectiveFirmwareError = (serialNo, seVersion, deviceType, connectId, deviceId) => {
|
|
442
|
+
const message = `Defective firmware detected (Serial: ${serialNo}, SE: ${seVersion}). Please update immediately.`;
|
|
443
|
+
return TypedError(HardwareErrorCode.DefectiveFirmware, message, {
|
|
444
|
+
serialNo,
|
|
445
|
+
seVersion,
|
|
446
|
+
deviceType,
|
|
447
|
+
connectId,
|
|
448
|
+
deviceId,
|
|
449
|
+
});
|
|
450
|
+
};
|
|
451
|
+
|
|
452
|
+
var HardwareError$1 = /*#__PURE__*/Object.freeze({
|
|
453
|
+
__proto__: null,
|
|
454
|
+
HardwareError: HardwareError,
|
|
455
|
+
HardwareErrorCode: HardwareErrorCode,
|
|
456
|
+
HardwareErrorCodeMessage: HardwareErrorCodeMessage,
|
|
457
|
+
TypedError: TypedError,
|
|
458
|
+
serializeError: serializeError,
|
|
459
|
+
CreateErrorByMessage: CreateErrorByMessage,
|
|
460
|
+
CreateHardwareErrorByBridgeError: CreateHardwareErrorByBridgeError,
|
|
461
|
+
createNewFirmwareUnReleaseHardwareError: createNewFirmwareUnReleaseHardwareError,
|
|
462
|
+
createNeedUpgradeFirmwareHardwareError: createNeedUpgradeFirmwareHardwareError,
|
|
463
|
+
createNewFirmwareForceUpdateHardwareError: createNewFirmwareForceUpdateHardwareError,
|
|
464
|
+
createDeprecatedHardwareError: createDeprecatedHardwareError,
|
|
465
|
+
createDefectiveFirmwareError: createDefectiveFirmwareError
|
|
466
|
+
});
|
|
467
|
+
|
|
468
|
+
const wait = (ms) => new Promise(resolve => {
|
|
469
|
+
setTimeout(resolve, ms);
|
|
470
|
+
});
|
|
471
|
+
|
|
472
|
+
exports.EDeviceType = void 0;
|
|
473
|
+
(function (EDeviceType) {
|
|
474
|
+
EDeviceType["Unknown"] = "unknown";
|
|
475
|
+
EDeviceType["Classic"] = "classic";
|
|
476
|
+
EDeviceType["Classic1s"] = "classic1s";
|
|
477
|
+
EDeviceType["ClassicPure"] = "classicpure";
|
|
478
|
+
EDeviceType["Mini"] = "mini";
|
|
479
|
+
EDeviceType["Touch"] = "touch";
|
|
480
|
+
EDeviceType["Pro"] = "pro";
|
|
481
|
+
})(exports.EDeviceType || (exports.EDeviceType = {}));
|
|
482
|
+
|
|
483
|
+
exports.EFirmwareType = void 0;
|
|
484
|
+
(function (EFirmwareType) {
|
|
485
|
+
EFirmwareType["Universal"] = "universal";
|
|
486
|
+
EFirmwareType["BitcoinOnly"] = "bitcoinonly";
|
|
487
|
+
})(exports.EFirmwareType || (exports.EFirmwareType = {}));
|
|
488
|
+
|
|
489
|
+
exports.CreateErrorByMessage = CreateErrorByMessage;
|
|
490
|
+
exports.CreateHardwareErrorByBridgeError = CreateHardwareErrorByBridgeError;
|
|
491
|
+
exports.ERRORS = HardwareError$1;
|
|
492
|
+
exports.HardwareError = HardwareError;
|
|
493
|
+
exports.HardwareErrorCode = HardwareErrorCode;
|
|
494
|
+
exports.HardwareErrorCodeMessage = HardwareErrorCodeMessage;
|
|
495
|
+
exports.TypedError = TypedError;
|
|
496
|
+
exports.UKEY_NOTIFY_CHARACTERISTIC_UUID = UKEY_NOTIFY_CHARACTERISTIC_UUID;
|
|
497
|
+
exports.UKEY_SERVICE_UUID = UKEY_SERVICE_UUID;
|
|
498
|
+
exports.UKEY_WEBUSB_FILTER = UKEY_WEBUSB_FILTER;
|
|
499
|
+
exports.UKEY_WRITE_CHARACTERISTIC_UUID = UKEY_WRITE_CHARACTERISTIC_UUID;
|
|
500
|
+
exports.createDefectiveFirmwareError = createDefectiveFirmwareError;
|
|
501
|
+
exports.createDeferred = createDeferred;
|
|
502
|
+
exports.createDeprecatedHardwareError = createDeprecatedHardwareError;
|
|
503
|
+
exports.createNeedUpgradeFirmwareHardwareError = createNeedUpgradeFirmwareHardwareError;
|
|
504
|
+
exports.createNewFirmwareForceUpdateHardwareError = createNewFirmwareForceUpdateHardwareError;
|
|
505
|
+
exports.createNewFirmwareUnReleaseHardwareError = createNewFirmwareUnReleaseHardwareError;
|
|
506
|
+
exports.isHeaderChunk = isHeaderChunk;
|
|
507
|
+
exports.isUkeyDevice = isUkeyDevice;
|
|
508
|
+
exports.serializeError = serializeError;
|
|
509
|
+
exports.wait = wait;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timerUtils.d.ts","sourceRoot":"","sources":["../src/timerUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAG3B,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ukeyfe/hardware-shared",
|
|
3
|
+
"version": "1.1.13",
|
|
4
|
+
"description": "Hardware SDK's shared tool library",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Hardware-SDK",
|
|
7
|
+
"shared",
|
|
8
|
+
"utils"
|
|
9
|
+
],
|
|
10
|
+
"author": "Ukey",
|
|
11
|
+
"homepage": "https://github.com/UKeyHQ/hardware-js-sdk#readme",
|
|
12
|
+
"license": "ISC",
|
|
13
|
+
"main": "dist/index.js",
|
|
14
|
+
"types": "dist/index.d.ts",
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/bestyourwallet/hardware-js-sdk"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"dev": "rimraf dist && rollup -c ../../build/rollup.config.js -w",
|
|
24
|
+
"build": "rimraf dist && rollup -c ../../build/rollup.config.js",
|
|
25
|
+
"lint": "eslint .",
|
|
26
|
+
"lint:fix": "eslint . --fix"
|
|
27
|
+
}
|
|
28
|
+
}
|