@onekeyfe/hd-shared 1.1.4-alpha.3 → 1.1.6
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 +10 -5
- package/dist/HardwareError.d.ts.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.js +76 -6
- package/package.json +2 -2
- package/src/HardwareError.ts +115 -20
package/dist/HardwareError.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export declare const HardwareErrorCode: {
|
|
|
56
56
|
readonly DeviceNotSupportMethod: 415;
|
|
57
57
|
readonly ForbiddenKeyPath: 416;
|
|
58
58
|
readonly RepeatUnlocking: 417;
|
|
59
|
+
readonly DefectiveFirmware: 418;
|
|
59
60
|
readonly NetworkError: 500;
|
|
60
61
|
readonly TransportNotConfigured: 600;
|
|
61
62
|
readonly TransportCallInProgress: 601;
|
|
@@ -112,9 +113,13 @@ export declare const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping;
|
|
|
112
113
|
export declare const TypedError: (hardwareError: ErrorCodeUnion | string, message?: string, params?: any) => HardwareError;
|
|
113
114
|
export declare const serializeError: (payload: any) => any;
|
|
114
115
|
export declare const CreateErrorByMessage: (message: string) => HardwareError;
|
|
115
|
-
declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
|
|
116
|
-
declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
|
|
117
|
-
declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined)
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
|
|
117
|
+
declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
|
|
118
|
+
declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined, versionTypes?: ('firmware' | 'ble')[], currentVersions?: {
|
|
119
|
+
firmware?: string;
|
|
120
|
+
ble?: string;
|
|
121
|
+
}) => HardwareError;
|
|
122
|
+
declare const createDeprecatedHardwareError: (currentVersion: string, deprecatedVersion: string, methodName?: string) => HardwareError;
|
|
123
|
+
declare const createDefectiveFirmwareError: (serialNo: string, seVersion: string, deviceType: string, connectId?: string, deviceId?: string) => HardwareError;
|
|
124
|
+
export { createNewFirmwareUnReleaseHardwareError, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createDeprecatedHardwareError, createDefectiveFirmwareError, };
|
|
120
125
|
//# sourceMappingURL=HardwareError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,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;
|
|
1
|
+
{"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8XpB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,+BAsI7B,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;AAEF,QAAA,MAAM,uCAAuC,mBAC3B,MAAM,kBACN,MAAM,eACT,MAAM,kBAQpB,CAAC;AAEF,QAAA,MAAM,sCAAsC,mBAC1B,MAAM,kBACN,MAAM,eACT,MAAM,kBAQpB,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,OAAO,EACL,uCAAuC,EACvC,sCAAsC,EACtC,yCAAyC,EACzC,6BAA6B,EAC7B,4BAA4B,GAC7B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ declare const HardwareErrorCode: {
|
|
|
98
98
|
readonly DeviceNotSupportMethod: 415;
|
|
99
99
|
readonly ForbiddenKeyPath: 416;
|
|
100
100
|
readonly RepeatUnlocking: 417;
|
|
101
|
+
readonly DefectiveFirmware: 418;
|
|
101
102
|
readonly NetworkError: 500;
|
|
102
103
|
readonly TransportNotConfigured: 600;
|
|
103
104
|
readonly TransportCallInProgress: 601;
|
|
@@ -154,15 +155,20 @@ declare const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping;
|
|
|
154
155
|
declare const TypedError: (hardwareError: ErrorCodeUnion | string, message?: string, params?: any) => HardwareError;
|
|
155
156
|
declare const serializeError: (payload: any) => any;
|
|
156
157
|
declare const CreateErrorByMessage: (message: string) => HardwareError;
|
|
157
|
-
declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
|
|
158
|
-
declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
|
|
159
|
-
declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined)
|
|
160
|
-
|
|
158
|
+
declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
|
|
159
|
+
declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
|
|
160
|
+
declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined, versionTypes?: ('firmware' | 'ble')[], currentVersions?: {
|
|
161
|
+
firmware?: string;
|
|
162
|
+
ble?: string;
|
|
163
|
+
}) => HardwareError;
|
|
164
|
+
declare const createDeprecatedHardwareError: (currentVersion: string, deprecatedVersion: string, methodName?: string) => HardwareError;
|
|
165
|
+
declare const createDefectiveFirmwareError: (serialNo: string, seVersion: string, deviceType: string, connectId?: string, deviceId?: string) => HardwareError;
|
|
161
166
|
|
|
162
167
|
declare const HardwareError$1_createNewFirmwareUnReleaseHardwareError: typeof createNewFirmwareUnReleaseHardwareError;
|
|
163
168
|
declare const HardwareError$1_createNeedUpgradeFirmwareHardwareError: typeof createNeedUpgradeFirmwareHardwareError;
|
|
164
169
|
declare const HardwareError$1_createNewFirmwareForceUpdateHardwareError: typeof createNewFirmwareForceUpdateHardwareError;
|
|
165
170
|
declare const HardwareError$1_createDeprecatedHardwareError: typeof createDeprecatedHardwareError;
|
|
171
|
+
declare const HardwareError$1_createDefectiveFirmwareError: typeof createDefectiveFirmwareError;
|
|
166
172
|
type HardwareError$1_IHardwareError = IHardwareError;
|
|
167
173
|
type HardwareError$1_HardwareError = HardwareError;
|
|
168
174
|
declare const HardwareError$1_HardwareError: typeof HardwareError;
|
|
@@ -177,6 +183,7 @@ declare namespace HardwareError$1 {
|
|
|
177
183
|
HardwareError$1_createNeedUpgradeFirmwareHardwareError as createNeedUpgradeFirmwareHardwareError,
|
|
178
184
|
HardwareError$1_createNewFirmwareForceUpdateHardwareError as createNewFirmwareForceUpdateHardwareError,
|
|
179
185
|
HardwareError$1_createDeprecatedHardwareError as createDeprecatedHardwareError,
|
|
186
|
+
HardwareError$1_createDefectiveFirmwareError as createDefectiveFirmwareError,
|
|
180
187
|
HardwareError$1_IHardwareError as IHardwareError,
|
|
181
188
|
HardwareError$1_HardwareError as HardwareError,
|
|
182
189
|
HardwareError$1_HardwareErrorCode as HardwareErrorCode,
|
|
@@ -204,4 +211,4 @@ declare enum EFirmwareType {
|
|
|
204
211
|
BitcoinOnly = "bitcoinonly"
|
|
205
212
|
}
|
|
206
213
|
|
|
207
|
-
export { CreateErrorByMessage, Deferred, EDeviceType, EFirmwareType, EOneKeyBleMessageKeys, HardwareError$1 as ERRORS, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, ONEKEY_NOTIFY_CHARACTERISTIC_UUID, ONEKEY_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, createDeferred, createDeprecatedHardwareError, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, isHeaderChunk, isOnekeyDevice, serializeError, wait };
|
|
214
|
+
export { CreateErrorByMessage, Deferred, EDeviceType, EFirmwareType, EOneKeyBleMessageKeys, HardwareError$1 as ERRORS, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, ONEKEY_NOTIFY_CHARACTERISTIC_UUID, ONEKEY_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, createDefectiveFirmwareError, createDeferred, createDeprecatedHardwareError, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, isHeaderChunk, isOnekeyDevice, serializeError, wait };
|
package/dist/index.js
CHANGED
|
@@ -120,7 +120,34 @@ function createDeferred(arg, data) {
|
|
|
120
120
|
function fillStringWithArguments(value, object) {
|
|
121
121
|
if (typeof value !== 'string')
|
|
122
122
|
return value;
|
|
123
|
-
|
|
123
|
+
if (value.indexOf('{') === -1)
|
|
124
|
+
return value;
|
|
125
|
+
let result = '';
|
|
126
|
+
let i = 0;
|
|
127
|
+
const dict = object;
|
|
128
|
+
while (i < value.length) {
|
|
129
|
+
const open = value.indexOf('{', i);
|
|
130
|
+
if (open === -1) {
|
|
131
|
+
result += value.slice(i);
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
const close = value.indexOf('}', open + 1);
|
|
135
|
+
if (close === -1) {
|
|
136
|
+
result += value.slice(i);
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
result += value.slice(i, open);
|
|
140
|
+
const key = value.slice(open + 1, close);
|
|
141
|
+
if (key.length === 0) {
|
|
142
|
+
result += '{}';
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const replacement = dict[key];
|
|
146
|
+
result += replacement ? String(replacement) : '?';
|
|
147
|
+
}
|
|
148
|
+
i = close + 1;
|
|
149
|
+
}
|
|
150
|
+
return result;
|
|
124
151
|
}
|
|
125
152
|
class HardwareError extends Error {
|
|
126
153
|
constructor(hardwareError) {
|
|
@@ -188,6 +215,7 @@ const HardwareErrorCode = {
|
|
|
188
215
|
DeviceNotSupportMethod: 415,
|
|
189
216
|
ForbiddenKeyPath: 416,
|
|
190
217
|
RepeatUnlocking: 417,
|
|
218
|
+
DefectiveFirmware: 418,
|
|
191
219
|
NetworkError: 500,
|
|
192
220
|
TransportNotConfigured: 600,
|
|
193
221
|
TransportCallInProgress: 601,
|
|
@@ -282,6 +310,7 @@ const HardwareErrorCodeMessage = {
|
|
|
282
310
|
[HardwareErrorCode.DeviceNotSupportMethod]: 'Device not support this method',
|
|
283
311
|
[HardwareErrorCode.ForbiddenKeyPath]: 'Forbidden key path',
|
|
284
312
|
[HardwareErrorCode.RepeatUnlocking]: 'Repeat unlocking',
|
|
313
|
+
[HardwareErrorCode.DefectiveFirmware]: 'Device firmware is defective, please update immediately',
|
|
285
314
|
[HardwareErrorCode.NetworkError]: 'Network request error',
|
|
286
315
|
[HardwareErrorCode.TransportNotConfigured]: 'Transport not configured',
|
|
287
316
|
[HardwareErrorCode.TransportCallInProgress]: 'Transport call in progress',
|
|
@@ -364,10 +393,49 @@ const CreateErrorByMessage = (message) => {
|
|
|
364
393
|
}
|
|
365
394
|
return new HardwareError(message);
|
|
366
395
|
};
|
|
367
|
-
const createNewFirmwareUnReleaseHardwareError = (currentVersion, requireVersion) =>
|
|
368
|
-
const
|
|
369
|
-
|
|
370
|
-
|
|
396
|
+
const createNewFirmwareUnReleaseHardwareError = (currentVersion, requireVersion, methodName) => {
|
|
397
|
+
const methodInfo = methodName ? ` for method '${methodName}'` : '';
|
|
398
|
+
return TypedError(HardwareErrorCode.NewFirmwareUnRelease, `Device firmware version is too low${methodInfo}, please update to the latest version`, { current: currentVersion, require: requireVersion, method: methodName });
|
|
399
|
+
};
|
|
400
|
+
const createNeedUpgradeFirmwareHardwareError = (currentVersion, requireVersion, methodName) => {
|
|
401
|
+
const methodInfo = methodName ? ` for method '${methodName}'` : '';
|
|
402
|
+
return TypedError(HardwareErrorCode.CallMethodNeedUpgradeFirmware, `Device firmware version is too low${methodInfo}, please update to ${requireVersion}`, { current: currentVersion, require: requireVersion, method: methodName });
|
|
403
|
+
};
|
|
404
|
+
const createNewFirmwareForceUpdateHardwareError = (connectId, deviceId, versionTypes, currentVersions) => {
|
|
405
|
+
const types = versionTypes || [];
|
|
406
|
+
const typeMap = { firmware: 'firmware', ble: 'BLE firmware' };
|
|
407
|
+
const requiredTypes = types.filter(type => type in typeMap);
|
|
408
|
+
const getVersionInfo = () => {
|
|
409
|
+
const versions = [];
|
|
410
|
+
if (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.firmware)
|
|
411
|
+
versions.push(`firmware version: ${currentVersions.firmware}`);
|
|
412
|
+
if (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.ble)
|
|
413
|
+
versions.push(`BLE version: ${currentVersions.ble}`);
|
|
414
|
+
return versions.length > 0 ? ` (${versions.join(', ')})` : '';
|
|
415
|
+
};
|
|
416
|
+
const getTypeDescription = () => requiredTypes.map(type => typeMap[type]).join(' and ');
|
|
417
|
+
const message = `Device ${getTypeDescription()} version is too low. ${getVersionInfo()}`;
|
|
418
|
+
return TypedError(HardwareErrorCode.NewFirmwareForceUpdate, message, {
|
|
419
|
+
connectId,
|
|
420
|
+
deviceId,
|
|
421
|
+
versionTypes,
|
|
422
|
+
currentVersions,
|
|
423
|
+
});
|
|
424
|
+
};
|
|
425
|
+
const createDeprecatedHardwareError = (currentVersion, deprecatedVersion, methodName) => {
|
|
426
|
+
const methodInfo = methodName ? ` Method '${methodName}'` : 'This method';
|
|
427
|
+
return TypedError(HardwareErrorCode.CallMethodDeprecated, `Device firmware version is too high. ${methodInfo} has been deprecated in ${deprecatedVersion}`, { current: currentVersion, deprecated: deprecatedVersion, method: methodName });
|
|
428
|
+
};
|
|
429
|
+
const createDefectiveFirmwareError = (serialNo, seVersion, deviceType, connectId, deviceId) => {
|
|
430
|
+
const message = `Defective firmware detected (Serial: ${serialNo}, SE: ${seVersion}). Please update immediately.`;
|
|
431
|
+
return TypedError(HardwareErrorCode.DefectiveFirmware, message, {
|
|
432
|
+
serialNo,
|
|
433
|
+
seVersion,
|
|
434
|
+
deviceType,
|
|
435
|
+
connectId,
|
|
436
|
+
deviceId,
|
|
437
|
+
});
|
|
438
|
+
};
|
|
371
439
|
|
|
372
440
|
var HardwareError$1 = /*#__PURE__*/Object.freeze({
|
|
373
441
|
__proto__: null,
|
|
@@ -380,7 +448,8 @@ var HardwareError$1 = /*#__PURE__*/Object.freeze({
|
|
|
380
448
|
createNewFirmwareUnReleaseHardwareError: createNewFirmwareUnReleaseHardwareError,
|
|
381
449
|
createNeedUpgradeFirmwareHardwareError: createNeedUpgradeFirmwareHardwareError,
|
|
382
450
|
createNewFirmwareForceUpdateHardwareError: createNewFirmwareForceUpdateHardwareError,
|
|
383
|
-
createDeprecatedHardwareError: createDeprecatedHardwareError
|
|
451
|
+
createDeprecatedHardwareError: createDeprecatedHardwareError,
|
|
452
|
+
createDefectiveFirmwareError: createDefectiveFirmwareError
|
|
384
453
|
});
|
|
385
454
|
|
|
386
455
|
const wait = (ms) => new Promise(resolve => {
|
|
@@ -414,6 +483,7 @@ exports.ONEKEY_SERVICE_UUID = ONEKEY_SERVICE_UUID;
|
|
|
414
483
|
exports.ONEKEY_WEBUSB_FILTER = ONEKEY_WEBUSB_FILTER;
|
|
415
484
|
exports.ONEKEY_WRITE_CHARACTERISTIC_UUID = ONEKEY_WRITE_CHARACTERISTIC_UUID;
|
|
416
485
|
exports.TypedError = TypedError;
|
|
486
|
+
exports.createDefectiveFirmwareError = createDefectiveFirmwareError;
|
|
417
487
|
exports.createDeferred = createDeferred;
|
|
418
488
|
exports.createDeprecatedHardwareError = createDeprecatedHardwareError;
|
|
419
489
|
exports.createNeedUpgradeFirmwareHardwareError = createNeedUpgradeFirmwareHardwareError;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-shared",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.6",
|
|
4
4
|
"description": "Hardware SDK's shared tool library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Hardware-SDK",
|
|
@@ -25,5 +25,5 @@
|
|
|
25
25
|
"lint": "eslint .",
|
|
26
26
|
"lint:fix": "eslint . --fix"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "e187d8cf8d616f5843dbc845543a96cc1d2ad93d"
|
|
29
29
|
}
|
package/src/HardwareError.ts
CHANGED
|
@@ -12,7 +12,38 @@ type ErrorCodeUnion = ValueOf<typeof HardwareErrorCode>;
|
|
|
12
12
|
|
|
13
13
|
function fillStringWithArguments(value: string, object: object) {
|
|
14
14
|
if (typeof value !== 'string') return value;
|
|
15
|
-
|
|
15
|
+
// Avoid regex with potential catastrophic backtracking by parsing manually in linear time
|
|
16
|
+
if (value.indexOf('{') === -1) return value;
|
|
17
|
+
let result = '';
|
|
18
|
+
let i = 0;
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
+
const dict = object as any;
|
|
21
|
+
while (i < value.length) {
|
|
22
|
+
const open = value.indexOf('{', i);
|
|
23
|
+
if (open === -1) {
|
|
24
|
+
result += value.slice(i);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
const close = value.indexOf('}', open + 1);
|
|
28
|
+
if (close === -1) {
|
|
29
|
+
// No matching closing brace; append the rest as-is
|
|
30
|
+
result += value.slice(i);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
// Append text before the placeholder
|
|
34
|
+
result += value.slice(i, open);
|
|
35
|
+
const key = value.slice(open + 1, close);
|
|
36
|
+
if (key.length === 0) {
|
|
37
|
+
// Keep '{}' unchanged to match original regex behavior
|
|
38
|
+
result += '{}';
|
|
39
|
+
} else {
|
|
40
|
+
const replacement = dict[key];
|
|
41
|
+
// Preserve original semantics: falsy values fallback to '?'
|
|
42
|
+
result += replacement ? String(replacement) : '?';
|
|
43
|
+
}
|
|
44
|
+
i = close + 1;
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
16
47
|
}
|
|
17
48
|
|
|
18
49
|
export class HardwareError extends Error {
|
|
@@ -256,6 +287,11 @@ export const HardwareErrorCode = {
|
|
|
256
287
|
*/
|
|
257
288
|
RepeatUnlocking: 417,
|
|
258
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Defective firmware detected
|
|
292
|
+
*/
|
|
293
|
+
DefectiveFirmware: 418,
|
|
294
|
+
|
|
259
295
|
/**
|
|
260
296
|
* Netword request error
|
|
261
297
|
*/
|
|
@@ -481,6 +517,7 @@ export const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping = {
|
|
|
481
517
|
[HardwareErrorCode.DeviceNotSupportMethod]: 'Device not support this method',
|
|
482
518
|
[HardwareErrorCode.ForbiddenKeyPath]: 'Forbidden key path',
|
|
483
519
|
[HardwareErrorCode.RepeatUnlocking]: 'Repeat unlocking',
|
|
520
|
+
[HardwareErrorCode.DefectiveFirmware]: 'Device firmware is defective, please update immediately',
|
|
484
521
|
|
|
485
522
|
/**
|
|
486
523
|
* Network Errors
|
|
@@ -594,40 +631,98 @@ export const CreateErrorByMessage = (message: string): HardwareError => {
|
|
|
594
631
|
return new HardwareError(message);
|
|
595
632
|
};
|
|
596
633
|
|
|
597
|
-
const createNewFirmwareUnReleaseHardwareError = (
|
|
598
|
-
|
|
634
|
+
const createNewFirmwareUnReleaseHardwareError = (
|
|
635
|
+
currentVersion: string,
|
|
636
|
+
requireVersion: string,
|
|
637
|
+
methodName?: string
|
|
638
|
+
) => {
|
|
639
|
+
const methodInfo = methodName ? ` for method '${methodName}'` : '';
|
|
640
|
+
return TypedError(
|
|
599
641
|
HardwareErrorCode.NewFirmwareUnRelease,
|
|
600
|
-
|
|
601
|
-
{ current: currentVersion, require: requireVersion }
|
|
642
|
+
`Device firmware version is too low${methodInfo}, please update to the latest version`,
|
|
643
|
+
{ current: currentVersion, require: requireVersion, method: methodName }
|
|
602
644
|
);
|
|
645
|
+
};
|
|
603
646
|
|
|
604
|
-
const createNeedUpgradeFirmwareHardwareError = (
|
|
605
|
-
|
|
647
|
+
const createNeedUpgradeFirmwareHardwareError = (
|
|
648
|
+
currentVersion: string,
|
|
649
|
+
requireVersion: string,
|
|
650
|
+
methodName?: string
|
|
651
|
+
) => {
|
|
652
|
+
const methodInfo = methodName ? ` for method '${methodName}'` : '';
|
|
653
|
+
return TypedError(
|
|
606
654
|
HardwareErrorCode.CallMethodNeedUpgradeFirmware,
|
|
607
|
-
`Device firmware version is too low, please update to ${requireVersion}`,
|
|
608
|
-
{ current: currentVersion, require: requireVersion }
|
|
655
|
+
`Device firmware version is too low${methodInfo}, please update to ${requireVersion}`,
|
|
656
|
+
{ current: currentVersion, require: requireVersion, method: methodName }
|
|
609
657
|
);
|
|
658
|
+
};
|
|
610
659
|
|
|
611
660
|
const createNewFirmwareForceUpdateHardwareError = (
|
|
612
661
|
connectId: string | undefined,
|
|
613
|
-
deviceId: string | undefined
|
|
614
|
-
)
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
662
|
+
deviceId: string | undefined,
|
|
663
|
+
versionTypes?: ('firmware' | 'ble')[],
|
|
664
|
+
currentVersions?: {
|
|
665
|
+
firmware?: string;
|
|
666
|
+
ble?: string;
|
|
667
|
+
}
|
|
668
|
+
) => {
|
|
669
|
+
const types = versionTypes || [];
|
|
670
|
+
const typeMap = { firmware: 'firmware', ble: 'BLE firmware' };
|
|
671
|
+
const requiredTypes = types.filter(type => type in typeMap);
|
|
672
|
+
|
|
673
|
+
const getVersionInfo = () => {
|
|
674
|
+
const versions = [];
|
|
675
|
+
if (currentVersions?.firmware) versions.push(`firmware version: ${currentVersions.firmware}`);
|
|
676
|
+
if (currentVersions?.ble) versions.push(`BLE version: ${currentVersions.ble}`);
|
|
677
|
+
return versions.length > 0 ? ` (${versions.join(', ')})` : '';
|
|
678
|
+
};
|
|
679
|
+
|
|
680
|
+
const getTypeDescription = () => requiredTypes.map(type => typeMap[type]).join(' and ');
|
|
681
|
+
const message = `Device ${getTypeDescription()} version is too low. ${getVersionInfo()}`;
|
|
682
|
+
|
|
683
|
+
return TypedError(HardwareErrorCode.NewFirmwareForceUpdate, message, {
|
|
684
|
+
connectId,
|
|
685
|
+
deviceId,
|
|
686
|
+
versionTypes,
|
|
687
|
+
currentVersions,
|
|
688
|
+
});
|
|
689
|
+
};
|
|
620
690
|
|
|
621
|
-
const createDeprecatedHardwareError = (
|
|
622
|
-
|
|
691
|
+
const createDeprecatedHardwareError = (
|
|
692
|
+
currentVersion: string,
|
|
693
|
+
deprecatedVersion: string,
|
|
694
|
+
methodName?: string
|
|
695
|
+
) => {
|
|
696
|
+
const methodInfo = methodName ? ` Method '${methodName}'` : 'This method';
|
|
697
|
+
return TypedError(
|
|
623
698
|
HardwareErrorCode.CallMethodDeprecated,
|
|
624
|
-
`Device firmware version is too high
|
|
625
|
-
{ current: currentVersion, deprecated: deprecatedVersion }
|
|
699
|
+
`Device firmware version is too high. ${methodInfo} has been deprecated in ${deprecatedVersion}`,
|
|
700
|
+
{ current: currentVersion, deprecated: deprecatedVersion, method: methodName }
|
|
626
701
|
);
|
|
702
|
+
};
|
|
703
|
+
|
|
704
|
+
const createDefectiveFirmwareError = (
|
|
705
|
+
serialNo: string,
|
|
706
|
+
seVersion: string,
|
|
707
|
+
deviceType: string,
|
|
708
|
+
connectId?: string,
|
|
709
|
+
deviceId?: string
|
|
710
|
+
) => {
|
|
711
|
+
const message = `Defective firmware detected (Serial: ${serialNo}, SE: ${seVersion}). Please update immediately.`;
|
|
712
|
+
|
|
713
|
+
return TypedError(HardwareErrorCode.DefectiveFirmware, message, {
|
|
714
|
+
serialNo,
|
|
715
|
+
seVersion,
|
|
716
|
+
deviceType,
|
|
717
|
+
connectId,
|
|
718
|
+
deviceId,
|
|
719
|
+
});
|
|
720
|
+
};
|
|
627
721
|
|
|
628
722
|
export {
|
|
629
723
|
createNewFirmwareUnReleaseHardwareError,
|
|
630
724
|
createNeedUpgradeFirmwareHardwareError,
|
|
631
725
|
createNewFirmwareForceUpdateHardwareError,
|
|
632
726
|
createDeprecatedHardwareError,
|
|
727
|
+
createDefectiveFirmwareError,
|
|
633
728
|
};
|