@ledgerhq/errors
Advanced tools
Comparing version 4.54.0 to 4.55.0
@@ -14,3 +14,8 @@ "use strict"; | ||
var errorClasses = {}; | ||
var deserializers = {}; | ||
var addCustomErrorDeserializer = exports.addCustomErrorDeserializer = function addCustomErrorDeserializer(name, deserializer) { | ||
deserializers[name] = deserializer; | ||
}; | ||
var createCustomErrorClass = exports.createCustomErrorClass = function createCustomErrorClass(name) { | ||
@@ -43,10 +48,34 @@ var C = function CustomError(message, fields) { | ||
} | ||
var _constructor = object.name === "Error" ? Error : typeof object.name === "string" ? errorClasses[object.name] || createCustomErrorClass(object.name) : Error; | ||
var error = Object.create(_constructor.prototype); | ||
for (var prop in object) { | ||
if (object.hasOwnProperty(prop)) { | ||
error[prop] = object[prop]; | ||
var error = void 0; | ||
if (typeof object.name === "string") { | ||
var _object = object, | ||
name = _object.name; | ||
var des = deserializers[name]; | ||
if (des) { | ||
error = des(object); | ||
} else { | ||
var _constructor = name === "Error" ? Error : errorClasses[name]; | ||
if (!_constructor) { | ||
console.warn("deserializing an unknown class '" + name + "'"); | ||
_constructor = createCustomErrorClass(name); | ||
} | ||
error = Object.create(_constructor.prototype); | ||
try { | ||
for (var prop in object) { | ||
if (object.hasOwnProperty(prop)) { | ||
error[prop] = object[prop]; | ||
} | ||
} | ||
} catch (e) { | ||
// sometimes setting a property can fail (e.g. .name) | ||
} | ||
} | ||
} else { | ||
error = new Error(object.message); | ||
} | ||
if (!error.stack && Error.captureStackTrace) { | ||
@@ -53,0 +82,0 @@ Error.captureStackTrace(error, deserializeError); |
@@ -6,3 +6,3 @@ "use strict"; | ||
}); | ||
exports.StatusCodes = exports.DBNotReset = exports.DBWrongPassword = exports.NoDBPathGiven = exports.FirmwareOrAppUpdateRequired = exports.LedgerAPI5xx = exports.LedgerAPI4xx = exports.GenuineCheckFailed = exports.PairingFailed = exports.SyncError = exports.FeeRequired = exports.FeeNotLoaded = exports.CantScanQRCode = exports.ETHAddressNonEIP = exports.WrongDeviceForAccount = exports.WebsocketConnectionFailed = exports.WebsocketConnectionError = exports.DeviceShouldStayInApp = exports.TransportInterfaceNotAvailable = exports.TransportOpenUserCancelled = exports.UserRefusedOnDevice = exports.UserRefusedAllowManager = exports.UserRefusedFirmwareUpdate = exports.UserRefusedAddress = exports.UserRefusedDeviceNameChange = exports.UpdateYourApp = exports.UnexpectedBootloader = exports.TimeoutTagged = exports.PasswordIncorrectError = exports.PasswordsDontMatchError = exports.NotEnoughBalanceBecauseDestinationNotCreated = exports.NotEnoughBalance = exports.NoAddressesFound = exports.NetworkDown = exports.ManagerUninstallBTCDep = exports.ManagerNotEnoughSpaceError = exports.ManagerDeviceLockedError = exports.ManagerAppRelyOnBTCError = exports.ManagerAppAlreadyInstalledError = exports.LedgerAPINotAvailable = exports.LedgerAPIErrorWithMessage = exports.LedgerAPIError = exports.UnknownMCU = exports.LatestMCUInstalledError = exports.InvalidAddressBecauseDestinationIsAlsoSource = exports.InvalidAddress = exports.HardResetFail = exports.FeeEstimationFailed = exports.EthAppPleaseEnableContractData = exports.EnpointConfigError = exports.DisconnectedDeviceDuringOperation = exports.DisconnectedDevice = exports.DeviceSocketNoBulkStatus = exports.DeviceSocketFail = exports.DeviceNameInvalid = exports.DeviceHalted = exports.DeviceInOSUExpected = exports.DeviceOnDashboardExpected = exports.DeviceNotGenuineError = exports.DeviceGenuineSocketEarlyClose = exports.DeviceAppVerifyNotSupported = exports.CantOpenDevice = exports.BtcUnmatchedApp = exports.BluetoothRequired = exports.AccountNameRequiredError = exports.createCustomErrorClass = exports.deserializeError = exports.serializeError = undefined; | ||
exports.StatusCodes = exports.DBNotReset = exports.DBWrongPassword = exports.NoDBPathGiven = exports.FirmwareOrAppUpdateRequired = exports.LedgerAPI5xx = exports.LedgerAPI4xx = exports.GenuineCheckFailed = exports.PairingFailed = exports.SyncError = exports.FeeRequired = exports.FeeNotLoaded = exports.CantScanQRCode = exports.ETHAddressNonEIP = exports.WrongDeviceForAccount = exports.WebsocketConnectionFailed = exports.WebsocketConnectionError = exports.DeviceShouldStayInApp = exports.TransportInterfaceNotAvailable = exports.TransportOpenUserCancelled = exports.UserRefusedOnDevice = exports.UserRefusedAllowManager = exports.UserRefusedFirmwareUpdate = exports.UserRefusedAddress = exports.UserRefusedDeviceNameChange = exports.UpdateYourApp = exports.UnexpectedBootloader = exports.TimeoutTagged = exports.PasswordIncorrectError = exports.PasswordsDontMatchError = exports.NotEnoughBalanceBecauseDestinationNotCreated = exports.NotEnoughBalance = exports.NoAddressesFound = exports.NetworkDown = exports.ManagerUninstallBTCDep = exports.ManagerNotEnoughSpaceError = exports.ManagerDeviceLockedError = exports.ManagerAppRelyOnBTCError = exports.ManagerAppAlreadyInstalledError = exports.LedgerAPINotAvailable = exports.LedgerAPIErrorWithMessage = exports.LedgerAPIError = exports.UnknownMCU = exports.LatestMCUInstalledError = exports.InvalidAddressBecauseDestinationIsAlsoSource = exports.InvalidAddress = exports.HardResetFail = exports.FeeEstimationFailed = exports.EthAppPleaseEnableContractData = exports.EnpointConfigError = exports.DisconnectedDeviceDuringOperation = exports.DisconnectedDevice = exports.DeviceSocketNoBulkStatus = exports.DeviceSocketFail = exports.DeviceNameInvalid = exports.DeviceHalted = exports.DeviceInOSUExpected = exports.DeviceOnDashboardExpected = exports.DeviceNotGenuineError = exports.DeviceGenuineSocketEarlyClose = exports.DeviceAppVerifyNotSupported = exports.CantOpenDevice = exports.BtcUnmatchedApp = exports.BluetoothRequired = exports.AccountNameRequiredError = exports.addCustomErrorDeserializer = exports.createCustomErrorClass = exports.deserializeError = exports.serializeError = undefined; | ||
exports.TransportError = TransportError; | ||
@@ -17,2 +17,3 @@ exports.getAltStatusMessage = getAltStatusMessage; | ||
exports.createCustomErrorClass = _helpers.createCustomErrorClass; | ||
exports.addCustomErrorDeserializer = _helpers.addCustomErrorDeserializer; | ||
var AccountNameRequiredError = exports.AccountNameRequiredError = (0, _helpers.createCustomErrorClass)("AccountNameRequired"); | ||
@@ -98,2 +99,6 @@ var BluetoothRequired = exports.BluetoothRequired = (0, _helpers.createCustomErrorClass)("BluetoothRequired"); | ||
(0, _helpers.addCustomErrorDeserializer)("TransportError", function (e) { | ||
return new TransportError(e.message, e.id); | ||
}); | ||
var StatusCodes = exports.StatusCodes = { | ||
@@ -169,2 +174,6 @@ PIN_REMAINING_ATTEMPTS: 0x63c0, | ||
TransportStatusError.prototype = new Error(); | ||
(0, _helpers.addCustomErrorDeserializer)("TransportStatusError", function (e) { | ||
return new TransportStatusError(e.statusCode); | ||
}); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@ledgerhq/errors", | ||
"version": "4.54.0", | ||
"version": "4.55.0", | ||
"description": "Ledger common errors", | ||
@@ -32,3 +32,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "93bc857afa5c1cf23d82c661ec01e4231bc27c31" | ||
"gitHead": "f7ad40f386b7bcb20a466e4e10fc5b6d45735711" | ||
} |
@@ -13,6 +13,6 @@ <img src="https://user-images.githubusercontent.com/211411/34776833-6f1ef4da-f618-11e7-8b13-f0697901d6a8.png" height="100" /> | ||
- [TransportError](#transporterror) | ||
- [Parameters](#parameters) | ||
- [TransportStatusError](#transportstatuserror) | ||
- [Parameters](#parameters-1) | ||
- [TransportError](#transporterror) | ||
- [Parameters](#parameters) | ||
- [TransportStatusError](#transportstatuserror) | ||
- [Parameters](#parameters-1) | ||
@@ -26,4 +26,4 @@ ### TransportError | ||
- `message` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** | ||
- `id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** | ||
- `message` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** | ||
- `id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** | ||
@@ -37,2 +37,2 @@ ### TransportStatusError | ||
- `statusCode` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** | ||
- `statusCode` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** |
@@ -7,3 +7,11 @@ // @flow | ||
const errorClasses = {}; | ||
const deserializers = {}; | ||
export const addCustomErrorDeserializer = ( | ||
name: string, | ||
deserializer: Object => * | ||
) => { | ||
deserializers[name] = deserializer; | ||
}; | ||
export const createCustomErrorClass = (name: string): Class<any> => { | ||
@@ -36,15 +44,32 @@ const C = function CustomError(message?: string, fields?: Object) { | ||
} | ||
const constructor = | ||
object.name === "Error" | ||
? Error | ||
: typeof object.name === "string" | ||
? errorClasses[object.name] || createCustomErrorClass(object.name) | ||
: Error; | ||
const error = Object.create(constructor.prototype); | ||
for (const prop in object) { | ||
if (object.hasOwnProperty(prop)) { | ||
error[prop] = object[prop]; | ||
let error; | ||
if (typeof object.name === "string") { | ||
const { name } = object; | ||
const des = deserializers[name]; | ||
if (des) { | ||
error = des(object); | ||
} else { | ||
let constructor = name === "Error" ? Error : errorClasses[name]; | ||
if (!constructor) { | ||
console.warn("deserializing an unknown class '" + name + "'"); | ||
constructor = createCustomErrorClass(name); | ||
} | ||
error = Object.create(constructor.prototype); | ||
try { | ||
for (const prop in object) { | ||
if (object.hasOwnProperty(prop)) { | ||
error[prop] = object[prop]; | ||
} | ||
} | ||
} catch (e) { | ||
// sometimes setting a property can fail (e.g. .name) | ||
} | ||
} | ||
} else { | ||
error = new Error(object.message); | ||
} | ||
if (!error.stack && Error.captureStackTrace) { | ||
@@ -51,0 +76,0 @@ Error.captureStackTrace(error, deserializeError); |
@@ -6,6 +6,12 @@ // @flow | ||
deserializeError, | ||
createCustomErrorClass | ||
createCustomErrorClass, | ||
addCustomErrorDeserializer | ||
} from "./helpers"; | ||
export { serializeError, deserializeError, createCustomErrorClass }; | ||
export { | ||
serializeError, | ||
deserializeError, | ||
createCustomErrorClass, | ||
addCustomErrorDeserializer | ||
}; | ||
@@ -158,2 +164,7 @@ export const AccountNameRequiredError = createCustomErrorClass( | ||
addCustomErrorDeserializer( | ||
"TransportError", | ||
e => new TransportError(e.message, e.id) | ||
); | ||
export const StatusCodes = { | ||
@@ -229,1 +240,6 @@ PIN_REMAINING_ATTEMPTS: 0x63c0, | ||
TransportStatusError.prototype = new Error(); | ||
addCustomErrorDeserializer( | ||
"TransportStatusError", | ||
e => new TransportStatusError(e.statusCode) | ||
); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
654046
646