@rango-dev/provider-ledger 0.7.1-next.4 → 0.7.1-next.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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/@ledgerhq/errors/src/helpers.ts", "../../../node_modules/@ledgerhq/errors/src/index.ts"],
4
+ "sourcesContent": ["/* eslint-disable no-continue */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n\nconst errorClasses = {};\nconst deserializers = {};\n\nexport const addCustomErrorDeserializer = (name: string, deserializer: (obj: any) => any): void => {\n deserializers[name] = deserializer;\n};\n\nexport interface LedgerErrorConstructor<F extends { [key: string]: unknown }>\n extends ErrorConstructor {\n new (message?: string, fields?: F, options?: any): Error;\n (message?: string, fields?: F, options?: any): Error;\n readonly prototype: Error;\n}\n\nexport const createCustomErrorClass = <\n F extends { [key: string]: unknown },\n T extends LedgerErrorConstructor<F>,\n>(\n name: string,\n): T => {\n class CustomErrorClass extends Error {\n cause?: Error;\n constructor(message?: string, fields?: F, options?: any) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n super(message || name, options);\n // Set the prototype explicitly. See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, CustomErrorClass.prototype);\n this.name = name;\n if (fields) {\n for (const k in fields) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[k] = fields[k];\n }\n }\n if (options && isObject(options) && \"cause\" in options && !(\"cause\" in this)) {\n // .cause was specified but the superconstructor\n // did not create an instance property.\n const cause = options.cause;\n this.cause = cause;\n if (\"stack\" in cause) {\n this.stack = this.stack + \"\\nCAUSE: \" + cause.stack;\n }\n }\n }\n }\n\n errorClasses[name] = CustomErrorClass;\n\n return CustomErrorClass as unknown as T;\n};\n\nfunction isObject(value) {\n return typeof value === \"object\";\n}\n\n// inspired from https://github.com/programble/errio/blob/master/index.js\nexport const deserializeError = (object: any): Error | undefined => {\n if (object && typeof object === \"object\") {\n try {\n if (typeof object.message === \"string\") {\n const msg = JSON.parse(object.message);\n if (msg.message && msg.name) {\n object = msg;\n }\n }\n } catch (e) {\n // nothing\n }\n\n let error;\n if (typeof object.name === \"string\") {\n const { name } = object;\n const des = deserializers[name];\n if (des) {\n error = des(object);\n } else {\n let constructor = name === \"Error\" ? Error : errorClasses[name];\n\n if (!constructor) {\n console.warn(\"deserializing an unknown class '\" + name + \"'\");\n constructor = createCustomErrorClass(name);\n }\n\n error = Object.create(constructor.prototype);\n try {\n for (const prop in object) {\n if (object.hasOwnProperty(prop)) {\n error[prop] = object[prop];\n }\n }\n } catch (e) {\n // sometimes setting a property can fail (e.g. .name)\n }\n }\n } else {\n if (typeof object.message === \"string\") {\n error = new Error(object.message);\n }\n }\n\n if (error && !error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, deserializeError);\n }\n return error;\n }\n return new Error(String(object));\n};\n\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\nexport const serializeError = (\n value: undefined | To | string | (() => unknown),\n): undefined | To | string => {\n if (!value) return value;\n if (typeof value === \"object\") {\n return destroyCircular(value, []);\n }\n if (typeof value === \"function\") {\n return `[Function: ${value.name || \"anonymous\"}]`;\n }\n return value;\n};\n\ninterface To {\n name?: string;\n message?: string;\n stack?: string;\n}\n\n// https://www.npmjs.com/package/destroy-circular\nfunction destroyCircular(from: To, seen: Array<To>): To {\n const to: To = {};\n seen.push(from);\n for (const key of Object.keys(from)) {\n const value = from[key];\n if (typeof value === \"function\") {\n continue;\n }\n if (!value || typeof value !== \"object\") {\n to[key] = value;\n continue;\n }\n if (seen.indexOf(from[key]) === -1) {\n to[key] = destroyCircular(from[key], seen.slice(0));\n continue;\n }\n to[key] = \"[Circular]\";\n }\n if (typeof from.name === \"string\") {\n to.name = from.name;\n }\n if (typeof from.message === \"string\") {\n to.message = from.message;\n }\n if (typeof from.stack === \"string\") {\n to.stack = from.stack;\n }\n return to;\n}\n", "import {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n LedgerErrorConstructor,\n} from \"./helpers\";\n\nexport { serializeError, deserializeError, createCustomErrorClass, addCustomErrorDeserializer };\n\nexport const AccountNameRequiredError = createCustomErrorClass(\"AccountNameRequired\");\nexport const AccountNotSupported = createCustomErrorClass(\"AccountNotSupported\");\nexport const AmountRequired = createCustomErrorClass(\"AmountRequired\");\nexport const BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\nexport const BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\nexport const CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\nexport const CashAddrNotSupported = createCustomErrorClass(\"CashAddrNotSupported\");\nexport const ClaimRewardsFeesWarning = createCustomErrorClass(\"ClaimRewardsFeesWarning\");\nexport const CurrencyNotSupported = createCustomErrorClass<\n { currencyName: string },\n LedgerErrorConstructor<{ currencyName: string }>\n>(\"CurrencyNotSupported\");\nexport const DeviceAppVerifyNotSupported = createCustomErrorClass(\"DeviceAppVerifyNotSupported\");\nexport const DeviceGenuineSocketEarlyClose = createCustomErrorClass(\n \"DeviceGenuineSocketEarlyClose\",\n);\nexport const DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\nexport const DeviceOnDashboardExpected = createCustomErrorClass(\"DeviceOnDashboardExpected\");\nexport const DeviceOnDashboardUnexpected = createCustomErrorClass(\"DeviceOnDashboardUnexpected\");\nexport const DeviceInOSUExpected = createCustomErrorClass(\"DeviceInOSUExpected\");\nexport const DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\nexport const DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\nexport const DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\nexport const DeviceSocketNoBulkStatus = createCustomErrorClass(\"DeviceSocketNoBulkStatus\");\nexport const DeviceNeedsRestart = createCustomErrorClass(\"DeviceSocketNoBulkStatus\");\nexport const UnresponsiveDeviceError = createCustomErrorClass(\"UnresponsiveDeviceError\");\nexport const DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\nexport const DisconnectedDeviceDuringOperation = createCustomErrorClass(\n \"DisconnectedDeviceDuringOperation\",\n);\nexport const DeviceExtractOnboardingStateError = createCustomErrorClass(\n \"DeviceExtractOnboardingStateError\",\n);\nexport const DeviceOnboardingStatePollingError = createCustomErrorClass(\n \"DeviceOnboardingStatePollingError\",\n);\nexport const EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\nexport const EthAppPleaseEnableContractData = createCustomErrorClass(\n \"EthAppPleaseEnableContractData\",\n);\nexport const FeeEstimationFailed = createCustomErrorClass(\"FeeEstimationFailed\");\nexport const FirmwareNotRecognized = createCustomErrorClass(\"FirmwareNotRecognized\");\nexport const HardResetFail = createCustomErrorClass(\"HardResetFail\");\nexport const InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\nexport const InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\nexport const InvalidNonce = createCustomErrorClass(\"InvalidNonce\");\nexport const InvalidAddressBecauseDestinationIsAlsoSource = createCustomErrorClass(\n \"InvalidAddressBecauseDestinationIsAlsoSource\",\n);\nexport const LatestMCUInstalledError = createCustomErrorClass(\"LatestMCUInstalledError\");\nexport const UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\nexport const LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\nexport const LedgerAPIErrorWithMessage = createCustomErrorClass(\"LedgerAPIErrorWithMessage\");\nexport const LedgerAPINotAvailable = createCustomErrorClass(\"LedgerAPINotAvailable\");\nexport const ManagerAppAlreadyInstalledError = createCustomErrorClass(\"ManagerAppAlreadyInstalled\");\nexport const ManagerAppRelyOnBTCError = createCustomErrorClass(\"ManagerAppRelyOnBTC\");\nexport const ManagerAppDepInstallRequired = createCustomErrorClass(\"ManagerAppDepInstallRequired\");\nexport const ManagerAppDepUninstallRequired = createCustomErrorClass(\n \"ManagerAppDepUninstallRequired\",\n);\nexport const ManagerDeviceLockedError = createCustomErrorClass(\"ManagerDeviceLocked\");\nexport const ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerFirmwareNotEnoughSpace\",\n);\nexport const ManagerNotEnoughSpaceError = createCustomErrorClass(\"ManagerNotEnoughSpace\");\nexport const ManagerUninstallBTCDep = createCustomErrorClass(\"ManagerUninstallBTCDep\");\nexport const NetworkDown = createCustomErrorClass(\"NetworkDown\");\nexport const NetworkError = createCustomErrorClass(\"NetworkError\");\nexport const NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\nexport const NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\nexport const NotEnoughBalanceToDelegate = createCustomErrorClass(\"NotEnoughBalanceToDelegate\");\nexport const NotEnoughBalanceInParentAccount = createCustomErrorClass(\n \"NotEnoughBalanceInParentAccount\",\n);\nexport const NotEnoughSpendableBalance = createCustomErrorClass(\"NotEnoughSpendableBalance\");\nexport const NotEnoughBalanceBecauseDestinationNotCreated = createCustomErrorClass(\n \"NotEnoughBalanceBecauseDestinationNotCreated\",\n);\nexport const NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\nexport const NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\n// Error message specifically for the PTX swap flow\nexport const NotEnoughGasSwap = createCustomErrorClass(\"NotEnoughGasSwap\");\nexport const NotSupportedLegacyAddress = createCustomErrorClass(\"NotSupportedLegacyAddress\");\nexport const GasLessThanEstimate = createCustomErrorClass(\"GasLessThanEstimate\");\nexport const PriorityFeeTooLow = createCustomErrorClass(\"PriorityFeeTooLow\");\nexport const PriorityFeeTooHigh = createCustomErrorClass(\"PriorityFeeTooHigh\");\nexport const PriorityFeeHigherThanMaxFee = createCustomErrorClass(\"PriorityFeeHigherThanMaxFee\");\nexport const MaxFeeTooLow = createCustomErrorClass(\"MaxFeeTooLow\");\nexport const PasswordsDontMatchError = createCustomErrorClass(\"PasswordsDontMatch\");\nexport const PasswordIncorrectError = createCustomErrorClass(\"PasswordIncorrect\");\nexport const RecommendSubAccountsToEmpty = createCustomErrorClass(\"RecommendSubAccountsToEmpty\");\nexport const RecommendUndelegation = createCustomErrorClass(\"RecommendUndelegation\");\nexport const TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\nexport const UnexpectedBootloader = createCustomErrorClass(\"UnexpectedBootloader\");\nexport const MCUNotGenuineToDashboard = createCustomErrorClass(\"MCUNotGenuineToDashboard\");\nexport const RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\nexport const UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountReceive\",\n);\nexport const UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountSend\",\n);\nexport const UpdateFetchFileFail = createCustomErrorClass(\"UpdateFetchFileFail\");\nexport const UpdateIncorrectHash = createCustomErrorClass(\"UpdateIncorrectHash\");\nexport const UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\nexport const UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\nexport const UserRefusedDeviceNameChange = createCustomErrorClass(\"UserRefusedDeviceNameChange\");\nexport const UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\nexport const UserRefusedFirmwareUpdate = createCustomErrorClass(\"UserRefusedFirmwareUpdate\");\nexport const UserRefusedAllowManager = createCustomErrorClass(\"UserRefusedAllowManager\");\nexport const UserRefusedOnDevice = createCustomErrorClass(\"UserRefusedOnDevice\"); // TODO rename because it's just for transaction refusal\nexport const ExpertModeRequired = createCustomErrorClass(\"ExpertModeRequired\");\nexport const TransportOpenUserCancelled = createCustomErrorClass(\"TransportOpenUserCancelled\");\nexport const TransportInterfaceNotAvailable = createCustomErrorClass(\n \"TransportInterfaceNotAvailable\",\n);\nexport const TransportPendingOperation = createCustomErrorClass(\"TransportPendingOperation\");\nexport const TransportWebUSBGestureRequired = createCustomErrorClass(\n \"TransportWebUSBGestureRequired\",\n);\nexport const TransactionHasBeenValidatedError = createCustomErrorClass(\n \"TransactionHasBeenValidatedError\",\n);\nexport const TransportExchangeTimeoutError = createCustomErrorClass(\n \"TransportExchangeTimeoutError\",\n);\nexport const DeviceShouldStayInApp = createCustomErrorClass(\"DeviceShouldStayInApp\");\nexport const WebsocketConnectionError = createCustomErrorClass(\"WebsocketConnectionError\");\nexport const WebsocketConnectionFailed = createCustomErrorClass(\"WebsocketConnectionFailed\");\nexport const WrongDeviceForAccount = createCustomErrorClass(\"WrongDeviceForAccount\");\nexport const WrongDeviceForAccountPayout = createCustomErrorClass(\"WrongDeviceForAccountPayout\");\nexport const WrongDeviceForAccountRefund = createCustomErrorClass(\"WrongDeviceForAccountRefund\");\nexport const WrongAppForCurrency = createCustomErrorClass(\"WrongAppForCurrency\");\n\nexport const ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\nexport const CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\nexport const FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\nexport const FeeNotLoadedSwap = createCustomErrorClass(\"FeeNotLoadedSwap\");\nexport const FeeRequired = createCustomErrorClass(\"FeeRequired\");\nexport const FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\nexport const PendingOperation = createCustomErrorClass(\"PendingOperation\");\nexport const SyncError = createCustomErrorClass(\"SyncError\");\nexport const PairingFailed = createCustomErrorClass(\"PairingFailed\");\nexport const PeerRemovedPairing = createCustomErrorClass(\"PeerRemovedPairing\");\nexport const GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\nexport const LedgerAPI4xx = createCustomErrorClass(\"LedgerAPI4xx\");\nexport const LedgerAPI5xx = createCustomErrorClass(\"LedgerAPI5xx\");\nexport const FirmwareOrAppUpdateRequired = createCustomErrorClass(\"FirmwareOrAppUpdateRequired\");\n\n// SpeedUp / Cancel EVM tx\nexport const ReplacementTransactionUnderpriced = createCustomErrorClass(\n \"ReplacementTransactionUnderpriced\",\n);\n\n// Bitcoin family\nexport const OpReturnDataSizeLimit = createCustomErrorClass(\"OpReturnSizeLimit\");\nexport const DustLimit = createCustomErrorClass(\"DustLimit\");\n\n// Language\nexport const LanguageNotFound = createCustomErrorClass(\"LanguageNotFound\");\n\n// db stuff, no need to translate\nexport const NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\nexport const DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\nexport const DBNotReset = createCustomErrorClass(\"DBNotReset\");\n\nexport const SequenceNumberError = createCustomErrorClass(\"SequenceNumberError\");\nexport const DisabledTransactionBroadcastError = createCustomErrorClass(\n \"DisabledTransactionBroadcastError\",\n);\n\n// Represents the type of all the classes created with createCustomErrorClass\nexport type CustomErrorClassType = ReturnType<typeof createCustomErrorClass>;\n\n/**\n * Type of a Transport error used to represent all equivalent errors coming from all possible implementation of Transport\n */\nexport enum HwTransportErrorType {\n Unknown = \"Unknown\",\n LocationServicesDisabled = \"LocationServicesDisabled\",\n LocationServicesUnauthorized = \"LocationServicesUnauthorized\",\n BluetoothScanStartFailed = \"BluetoothScanStartFailed\",\n}\n\n/**\n * Represents an error coming from the usage of any Transport implementation.\n *\n * Needed to map a specific implementation error into an error that\n * can be managed by any code unaware of the specific Transport implementation\n * that was used.\n */\nexport class HwTransportError extends Error {\n type: HwTransportErrorType;\n\n constructor(type: HwTransportErrorType, message: string) {\n super(message);\n this.name = \"HwTransportError\";\n this.type = type;\n\n // Needed as long as we target < ES6\n Object.setPrototypeOf(this, HwTransportError.prototype);\n }\n}\n\n/**\n * TransportError is used for any generic transport errors.\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\n */\nexport class TransportError extends Error {\n id: string;\n constructor(message: string, id: string) {\n const name = \"TransportError\";\n super(message || name);\n this.name = name;\n this.message = message;\n this.stack = new Error(message).stack;\n this.id = id;\n }\n}\n\naddCustomErrorDeserializer(\"TransportError\", e => new TransportError(e.message, e.id));\n\nexport const StatusCodes = {\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\n ALGORITHM_NOT_SUPPORTED: 0x9484,\n CLA_NOT_SUPPORTED: 0x6e00,\n CODE_BLOCKED: 0x9840,\n CODE_NOT_INITIALIZED: 0x9802,\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\n CONTRADICTION_INVALIDATION: 0x9810,\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\n CUSTOM_IMAGE_BOOTLOADER: 0x662f,\n CUSTOM_IMAGE_EMPTY: 0x662e,\n FILE_ALREADY_EXISTS: 0x6a89,\n FILE_NOT_FOUND: 0x9404,\n GP_AUTH_FAILED: 0x6300,\n HALTED: 0x6faa,\n INCONSISTENT_FILE: 0x9408,\n INCORRECT_DATA: 0x6a80,\n INCORRECT_LENGTH: 0x6700,\n INCORRECT_P1_P2: 0x6b00,\n INS_NOT_SUPPORTED: 0x6d00,\n DEVICE_NOT_ONBOARDED: 0x6d07,\n DEVICE_NOT_ONBOARDED_2: 0x6611,\n INVALID_KCV: 0x9485,\n INVALID_OFFSET: 0x9402,\n LICENSING: 0x6f42,\n LOCKED_DEVICE: 0x5515,\n MAX_VALUE_REACHED: 0x9850,\n MEMORY_PROBLEM: 0x9240,\n MISSING_CRITICAL_PARAMETER: 0x6800,\n NO_EF_SELECTED: 0x9400,\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\n OK: 0x9000,\n PIN_REMAINING_ATTEMPTS: 0x63c0,\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\n TECHNICAL_PROBLEM: 0x6f00,\n UNKNOWN_APDU: 0x6d02,\n USER_REFUSED_ON_DEVICE: 0x5501,\n NOT_ENOUGH_SPACE: 0x5102,\n};\n\nexport function getAltStatusMessage(code: number): string | undefined | null {\n switch (code) {\n // improve text of most common errors\n case 0x6700:\n return \"Incorrect length\";\n case 0x6800:\n return \"Missing critical parameter\";\n case 0x6982:\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\n case 0x6985:\n return \"Condition of use not satisfied (denied by the user?)\";\n case 0x6a80:\n return \"Invalid data received\";\n case 0x6b00:\n return \"Invalid parameter received\";\n case 0x5515:\n return \"Locked device\";\n }\n if (0x6f00 <= code && code <= 0x6fff) {\n return \"Internal error, please report\";\n }\n}\n\n/**\n * Error thrown when a device returned a non success status.\n * the error.statusCode is one of the `StatusCodes` exported by this library.\n */\nexport class TransportStatusError extends Error {\n statusCode: number;\n statusText: string;\n\n /**\n * @param statusCode The error status code coming from a Transport implementation\n * @param options containing:\n * - canBeMappedToChildError: enable the mapping of TransportStatusError to an error extending/inheriting from it\n * . Ex: LockedDeviceError. Default to true.\n */\n constructor(\n statusCode: number,\n { canBeMappedToChildError = true }: { canBeMappedToChildError?: boolean } = {},\n ) {\n const statusText =\n Object.keys(StatusCodes).find(k => StatusCodes[k] === statusCode) || \"UNKNOWN_ERROR\";\n const smsg = getAltStatusMessage(statusCode) || statusText;\n const statusCodeStr = statusCode.toString(16);\n const message = `Ledger device: ${smsg} (0x${statusCodeStr})`;\n\n super(message);\n this.name = \"TransportStatusError\";\n\n this.statusCode = statusCode;\n this.statusText = statusText;\n\n Object.setPrototypeOf(this, TransportStatusError.prototype);\n\n // Maps to a LockedDeviceError\n if (canBeMappedToChildError && statusCode === StatusCodes.LOCKED_DEVICE) {\n return new LockedDeviceError(message);\n }\n }\n}\n\nexport class LockedDeviceError extends TransportStatusError {\n constructor(message?: string) {\n super(StatusCodes.LOCKED_DEVICE, { canBeMappedToChildError: false });\n if (message) {\n this.message = message;\n }\n this.name = \"LockedDeviceError\";\n Object.setPrototypeOf(this, LockedDeviceError.prototype);\n }\n}\n\n// Represents the type of the class TransportStatusError and its children\nexport type TransportStatusErrorClassType = typeof TransportStatusError | typeof LockedDeviceError;\n\naddCustomErrorDeserializer(\"TransportStatusError\", e => new TransportStatusError(e.statusCode));\n"],
5
+ "mappings": "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",
6
+ "names": ["errorClasses", "deserializers", "addCustomErrorDeserializer", "__name", "name", "deserializer", "createCustomErrorClass", "CustomErrorClass", "message", "fields", "options", "k", "isObject", "cause", "value", "AccountNameRequiredError", "createCustomErrorClass", "AccountNotSupported", "AmountRequired", "BluetoothRequired", "BtcUnmatchedApp", "CantOpenDevice", "CashAddrNotSupported", "ClaimRewardsFeesWarning", "CurrencyNotSupported", "DeviceAppVerifyNotSupported", "DeviceGenuineSocketEarlyClose", "DeviceNotGenuineError", "DeviceOnDashboardExpected", "DeviceOnDashboardUnexpected", "DeviceInOSUExpected", "DeviceHalted", "DeviceNameInvalid", "DeviceSocketFail", "DeviceSocketNoBulkStatus", "DeviceNeedsRestart", "UnresponsiveDeviceError", "DisconnectedDevice", "DisconnectedDeviceDuringOperation", "DeviceExtractOnboardingStateError", "DeviceOnboardingStatePollingError", "EnpointConfigError", "EthAppPleaseEnableContractData", "FeeEstimationFailed", "FirmwareNotRecognized", "HardResetFail", "InvalidXRPTag", "InvalidAddress", "InvalidNonce", "InvalidAddressBecauseDestinationIsAlsoSource", "LatestMCUInstalledError", "UnknownMCU", "LedgerAPIError", "LedgerAPIErrorWithMessage", "LedgerAPINotAvailable", "ManagerAppAlreadyInstalledError", "ManagerAppRelyOnBTCError", "ManagerAppDepInstallRequired", "ManagerAppDepUninstallRequired", "ManagerDeviceLockedError", "ManagerFirmwareNotEnoughSpaceError", "ManagerNotEnoughSpaceError", "ManagerUninstallBTCDep", "NetworkDown", "NetworkError", "NoAddressesFound", "NotEnoughBalance", "NotEnoughBalanceToDelegate", "NotEnoughBalanceInParentAccount", "NotEnoughSpendableBalance", "NotEnoughBalanceBecauseDestinationNotCreated", "NoAccessToCamera", "NotEnoughGas", "NotEnoughGasSwap", "NotSupportedLegacyAddress", "GasLessThanEstimate", "PriorityFeeTooLow", "PriorityFeeTooHigh", "PriorityFeeHigherThanMaxFee", "MaxFeeTooLow", "PasswordsDontMatchError", "PasswordIncorrectError", "RecommendSubAccountsToEmpty", "RecommendUndelegation", "TimeoutTagged", "UnexpectedBootloader", "MCUNotGenuineToDashboard", "RecipientRequired", "UnavailableTezosOriginatedAccountReceive", "UnavailableTezosOriginatedAccountSend", "UpdateFetchFileFail", "UpdateIncorrectHash", "UpdateIncorrectSig", "UpdateYourApp", "UserRefusedDeviceNameChange", "UserRefusedAddress", "UserRefusedFirmwareUpdate", "UserRefusedAllowManager", "UserRefusedOnDevice", "ExpertModeRequired", "TransportOpenUserCancelled", "TransportInterfaceNotAvailable", "TransportPendingOperation", "TransportWebUSBGestureRequired", "TransactionHasBeenValidatedError", "TransportExchangeTimeoutError", "DeviceShouldStayInApp", "WebsocketConnectionError", "WebsocketConnectionFailed", "WrongDeviceForAccount", "WrongDeviceForAccountPayout", "WrongDeviceForAccountRefund", "WrongAppForCurrency", "ETHAddressNonEIP", "CantScanQRCode", "FeeNotLoaded", "FeeNotLoadedSwap", "FeeRequired", "FeeTooHigh", "PendingOperation", "SyncError", "PairingFailed", "PeerRemovedPairing", "GenuineCheckFailed", "LedgerAPI4xx", "LedgerAPI5xx", "FirmwareOrAppUpdateRequired", "ReplacementTransactionUnderpriced", "OpReturnDataSizeLimit", "DustLimit", "LanguageNotFound", "NoDBPathGiven", "DBWrongPassword", "DBNotReset", "SequenceNumberError", "DisabledTransactionBroadcastError", "HwTransportErrorType", "TransportError", "__name", "message", "id", "name", "addCustomErrorDeserializer", "e", "StatusCodes", "getAltStatusMessage", "code", "TransportStatusError", "_TransportStatusError", "statusCode", "canBeMappedToChildError", "statusText", "k", "smsg", "statusCodeStr", "LockedDeviceError", "_LockedDeviceError"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as n,m as i}from"./chunk-CVKDPNYM.js";var u="";function A(t){u=t}n(A,"setDerivationPath");function c(){return u}n(c,"getDerivationPath");import{ETHEREUM_CHAIN_ID as p,Networks as o}from"@rango-dev/wallets-shared";import h from"bs58";var w=16,d={21781:"The device is locked",25871:"Related application is not ready on your device",27013:"Action denied by user"};function m(t){return d[t]?d[t]:i(t)?i(t):`Ledger device unknown error 0x${t.toString(w)}`}n(m,"getLedgerErrorMessage");function f(t){return t?.statusCode?new Error(m(t.statusCode)):t?.code==="INSUFFICIENT_FUNDS"?new Error("Insufficient funds for transaction"):t}n(f,"getLedgerError");function N(){let t=new Map;return t.set(o.ETHEREUM,{chainId:p}),t.set(o.SOLANA,{chainId:o.SOLANA}),t}n(N,"getLedgerInstance");async function v(){try{let t=await g(),a=new(await import("./Eth-Y5JFGVQA.js")).default(t),r=[],s=await a.getAddress(c(),!1,!0);return r.push(s.address),{accounts:r,chainId:p}}catch(t){throw f(t)}finally{await l()}}n(v,"getEthereumAccounts");async function D(){try{let t=await g(),a=new(await import("./Solana-UB4SGWQ3.js")).default(t),r=[],s=await a.getAddress(c());return r.push(h.encode(s.address)),{accounts:r,chainId:o.SOLANA}}catch(t){throw f(t)}finally{await l()}}n(D,"getSolanaAccounts");var e=null;async function g(){return e=await(await import("./TransportWebHID-JLT4ETY3.js")).default.create(),e}n(g,"transportConnect");async function l(){e&&(await e.close(),e=null)}n(l,"transportDisconnect");export{A as a,c as b,f as c,N as d,v as e,D as f,g,l as h};
2
+ //# sourceMappingURL=chunk-CXOSOL4T.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/state.ts", "../src/helpers.ts"],
4
+ "sourcesContent": ["// We keep derivationPath here because we need to maintain it for signing transactions after it is set in connect method\nlet derivationPath = '';\n\nexport function setDerivationPath(path: string) {\n derivationPath = path;\n}\n\nexport function getDerivationPath() {\n return derivationPath;\n}\n", "import type Transport from '@ledgerhq/hw-transport';\n\nimport { getAltStatusMessage } from '@ledgerhq/errors';\nimport { ETHEREUM_CHAIN_ID, Networks } from '@rango-dev/wallets-shared';\nimport bs58 from 'bs58';\n\nimport { getDerivationPath } from './state.js';\n\nexport const HEXADECIMAL_BASE = 16;\n\nconst ledgerFrequentErrorMessages: { [statusCode: number]: string } = {\n 0x5515: 'The device is locked',\n 0x650f: 'Related application is not ready on your device',\n 0x6985: 'Action denied by user',\n};\n\nfunction getLedgerErrorMessage(statusCode: number): string {\n if (ledgerFrequentErrorMessages[statusCode]) {\n return ledgerFrequentErrorMessages[statusCode];\n } else if (getAltStatusMessage(statusCode)) {\n return getAltStatusMessage(statusCode) as string;\n }\n\n return `Ledger device unknown error 0x${statusCode.toString(\n HEXADECIMAL_BASE\n )}`; // Hexadecimal numbers are more commonly recognized and utilized for representing ledger error codes\n}\n\nexport function getLedgerError(error: any) {\n if (error?.statusCode) {\n return new Error(getLedgerErrorMessage(error.statusCode));\n }\n\n if (error?.code === 'INSUFFICIENT_FUNDS') {\n return new Error('Insufficient funds for transaction');\n }\n return error;\n}\n\nexport function getLedgerInstance() {\n /*\n * Instances have a required property which is `chainId` and is using in swap execution.\n * Here we are setting it as Ethereum always since we are supporting only eth for now.\n */\n const instances = new Map();\n\n instances.set(Networks.ETHEREUM, { chainId: ETHEREUM_CHAIN_ID });\n instances.set(Networks.SOLANA, { chainId: Networks.SOLANA });\n\n return instances;\n}\n\nexport async function getEthereumAccounts(): Promise<{\n accounts: string[];\n chainId: string;\n}> {\n try {\n const transport = await transportConnect();\n\n const eth = new (await import('@ledgerhq/hw-app-eth')).default(transport);\n\n const accounts: string[] = [];\n\n const result = await eth.getAddress(getDerivationPath(), false, true);\n accounts.push(result.address);\n\n return {\n accounts: accounts,\n chainId: ETHEREUM_CHAIN_ID,\n };\n } catch (error: any) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n}\n\nexport async function getSolanaAccounts(): Promise<{\n accounts: string[];\n chainId: string;\n}> {\n try {\n const transport = await transportConnect();\n\n const solana = new (await import('@ledgerhq/hw-app-solana')).default(\n transport\n );\n\n const accounts: string[] = [];\n\n const result = await solana.getAddress(getDerivationPath());\n accounts.push(bs58.encode(result.address));\n\n return {\n accounts: accounts,\n chainId: Networks.SOLANA,\n };\n } catch (error: any) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n}\n\nlet transportConnection: Transport | null = null;\n\nexport async function transportConnect() {\n transportConnection = await (\n await import('@ledgerhq/hw-transport-webhid')\n ).default.create();\n\n return transportConnection;\n}\n\nexport async function transportDisconnect() {\n if (transportConnection) {\n await transportConnection.close();\n transportConnection = null;\n }\n}\n"],
5
+ "mappings": "+CACA,IAAIA,EAAiB,GAEd,SAASC,EAAkBC,EAAc,CAC9CF,EAAiBE,CACnB,CAFgBC,EAAAF,EAAA,qBAIT,SAASG,GAAoB,CAClC,OAAOJ,CACT,CAFgBG,EAAAC,EAAA,qBCJhB,OAAS,qBAAAC,EAAmB,YAAAC,MAAgB,4BAC5C,OAAOC,MAAU,OAIV,IAAMC,EAAmB,GAE1BC,EAAgE,CACpE,MAAQ,uBACR,MAAQ,kDACR,MAAQ,uBACV,EAEA,SAASC,EAAsBC,EAA4B,CACzD,OAAIF,EAA4BE,CAAU,EACjCF,EAA4BE,CAAU,EACpCC,EAAoBD,CAAU,EAChCC,EAAoBD,CAAU,EAGhC,iCAAiCA,EAAW,SACjDH,CACF,CAAC,EACH,CAVSK,EAAAH,EAAA,yBAYF,SAASI,EAAeC,EAAY,CACzC,OAAIA,GAAO,WACF,IAAI,MAAML,EAAsBK,EAAM,UAAU,CAAC,EAGtDA,GAAO,OAAS,qBACX,IAAI,MAAM,oCAAoC,EAEhDA,CACT,CATgBF,EAAAC,EAAA,kBAWT,SAASE,GAAoB,CAKlC,IAAMC,EAAY,IAAI,IAEtB,OAAAA,EAAU,IAAIC,EAAS,SAAU,CAAE,QAASC,CAAkB,CAAC,EAC/DF,EAAU,IAAIC,EAAS,OAAQ,CAAE,QAASA,EAAS,MAAO,CAAC,EAEpDD,CACT,CAXgBJ,EAAAG,EAAA,qBAahB,eAAsBI,GAGnB,CACD,GAAI,CACF,IAAMC,EAAY,MAAMC,EAAiB,EAEnCC,EAAM,IAAK,KAAM,QAAO,mBAAsB,GAAG,QAAQF,CAAS,EAElEG,EAAqB,CAAC,EAEtBC,EAAS,MAAMF,EAAI,WAAWG,EAAkB,EAAG,GAAO,EAAI,EACpE,OAAAF,EAAS,KAAKC,EAAO,OAAO,EAErB,CACL,SAAUD,EACV,QAASL,CACX,CACF,OAASJ,EAAY,CACnB,MAAMD,EAAeC,CAAK,CAC5B,QAAE,CACA,MAAMY,EAAoB,CAC5B,CACF,CAvBsBd,EAAAO,EAAA,uBAyBtB,eAAsBQ,GAGnB,CACD,GAAI,CACF,IAAMP,EAAY,MAAMC,EAAiB,EAEnCO,EAAS,IAAK,KAAM,QAAO,sBAAyB,GAAG,QAC3DR,CACF,EAEMG,EAAqB,CAAC,EAEtBC,EAAS,MAAMI,EAAO,WAAWH,EAAkB,CAAC,EAC1D,OAAAF,EAAS,KAAKM,EAAK,OAAOL,EAAO,OAAO,CAAC,EAElC,CACL,SAAUD,EACV,QAASN,EAAS,MACpB,CACF,OAASH,EAAY,CACnB,MAAMD,EAAeC,CAAK,CAC5B,QAAE,CACA,MAAMY,EAAoB,CAC5B,CACF,CAzBsBd,EAAAe,EAAA,qBA2BtB,IAAIG,EAAwC,KAE5C,eAAsBT,GAAmB,CACvC,OAAAS,EAAsB,MACpB,KAAM,QAAO,+BAA+B,GAC5C,QAAQ,OAAO,EAEVA,CACT,CANsBlB,EAAAS,EAAA,oBAQtB,eAAsBK,GAAsB,CACtCI,IACF,MAAMA,EAAoB,MAAM,EAChCA,EAAsB,KAE1B,CALsBlB,EAAAc,EAAA",
6
+ "names": ["derivationPath", "setDerivationPath", "path", "__name", "getDerivationPath", "ETHEREUM_CHAIN_ID", "Networks", "bs58", "HEXADECIMAL_BASE", "ledgerFrequentErrorMessages", "getLedgerErrorMessage", "statusCode", "getAltStatusMessage", "__name", "getLedgerError", "error", "getLedgerInstance", "instances", "Networks", "ETHEREUM_CHAIN_ID", "getEthereumAccounts", "transport", "transportConnect", "eth", "accounts", "result", "getDerivationPath", "transportDisconnect", "getSolanaAccounts", "solana", "bs58", "transportConnection"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{b as i,c as p,g as s,h as d}from"./chunk-CXOSOL4T.js";import{a as m}from"./chunk-CVKDPNYM.js";import{DEFAULT_ETHEREUM_RPC_URL as T}from"@rango-dev/wallets-shared";import{JsonRpcProvider as v,Transaction as l}from"ethers";import{SignerError as P,SignerErrorCode as y}from"rango-types";var u=class{static{m(this,"EthereumSigner")}async signMessage(r){try{let n=await s(),t=await new(await import("./Eth-Y5JFGVQA.js")).default(n).signPersonalMessage(i(),Buffer.from(r).toString("hex")),a=(t.v-27).toString(16);return a.length<2&&(a="0"+a),"0x"+t.r+t.s+a}catch(n){throw new P(y.SIGN_TX_ERROR,void 0,n)}}async signAndSendTx(r,n,o){try{let t=new v(T),a=await t.getTransactionCount(n),c={to:r.to,gasPrice:r.gasPrice,gasLimit:r.gasLimit,nonce:a,chainId:o,data:r.data,value:r.value,maxPriorityFeePerGas:r.maxPriorityFeePerGas,maxFeePerGas:r.maxFeePerGas},g=l.from(c).unsignedSerialized.substring(2),f=await(await import("./Eth-Y5JFGVQA.js")).ledgerService.resolveTransaction(g,{},{}),h=await s(),e=await new(await import("./Eth-Y5JFGVQA.js")).default(h).signTransaction(i(),g,f),w=l.from({...c,signature:{r:"0x"+e.r,s:"0x"+e.s,v:parseInt(e.v)}}).serialized;return{hash:(await t.broadcastTransaction(w)).hash}}catch(t){throw p(t)}finally{await d()}}};export{u as EthereumSigner};
2
+ //# sourceMappingURL=ethereum-NHQEXUSA.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/signers/ethereum.ts"],
4
+ "sourcesContent": ["import type { TransactionLike } from 'ethers';\nimport type { GenericSigner } from 'rango-types';\nimport type { EvmTransaction } from 'rango-types/mainApi';\n\nimport { DEFAULT_ETHEREUM_RPC_URL } from '@rango-dev/wallets-shared';\nimport { JsonRpcProvider, Transaction } from 'ethers';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport {\n getLedgerError,\n transportConnect,\n transportDisconnect,\n} from '../helpers.js';\nimport { getDerivationPath } from '../state.js';\n\nexport class EthereumSigner implements GenericSigner<EvmTransaction> {\n async signMessage(msg: string): Promise<string> {\n try {\n const transport = await transportConnect();\n\n const eth = new (await import('@ledgerhq/hw-app-eth')).default(transport);\n const result = await eth.signPersonalMessage(\n getDerivationPath(),\n Buffer.from(msg).toString('hex')\n );\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n let v = (result['v'] - 27).toString(16);\n if (v.length < 2) {\n v = '0' + v;\n }\n return '0x' + result['r'] + result['s'] + v;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(\n tx: EvmTransaction,\n fromAddress: string,\n chainId: string | null\n ): Promise<{ hash: string }> {\n try {\n const provider = new JsonRpcProvider(DEFAULT_ETHEREUM_RPC_URL); // Provider to broadcast transaction\n\n const transactionCount = await provider.getTransactionCount(fromAddress); // Get nonce\n\n const transaction: TransactionLike<string> = {\n to: tx.to,\n gasPrice: tx.gasPrice,\n gasLimit: tx.gasLimit,\n nonce: transactionCount,\n chainId: chainId,\n data: tx.data,\n value: tx.value,\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas,\n maxFeePerGas: tx.maxFeePerGas,\n };\n\n const unsignedTx =\n Transaction.from(transaction).unsignedSerialized.substring(2); // Create unsigned transaction\n\n const resolution = await (\n await import('@ledgerhq/hw-app-eth')\n ).ledgerService.resolveTransaction(unsignedTx, {}, {}); // metadata necessary to allow the device to clear sign information\n\n const transport = await transportConnect();\n\n const eth = new (await import('@ledgerhq/hw-app-eth')).default(transport);\n\n const signature = await eth.signTransaction(\n getDerivationPath(),\n unsignedTx,\n resolution\n );\n\n const signedTx = Transaction.from({\n ...transaction,\n signature: {\n r: '0x' + signature.r,\n s: '0x' + signature.s,\n v: parseInt(signature.v),\n },\n }).serialized;\n\n const broadcastResult = await provider.broadcastTransaction(signedTx);\n\n return { hash: broadcastResult.hash };\n } catch (error) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n }\n}\n"],
5
+ "mappings": "qGAIA,OAAS,4BAAAA,MAAgC,4BACzC,OAAS,mBAAAC,EAAiB,eAAAC,MAAmB,SAC7C,OAAS,eAAAC,EAAa,mBAAAC,MAAuB,cAStC,IAAMC,EAAN,KAA8D,CAfrE,MAeqE,CAAAC,EAAA,uBACnE,MAAM,YAAYC,EAA8B,CAC9C,GAAI,CACF,IAAMC,EAAY,MAAMC,EAAiB,EAGnCC,EAAS,MADH,IAAK,KAAM,QAAO,mBAAsB,GAAG,QAAQF,CAAS,EAC/C,oBACvBG,EAAkB,EAClB,OAAO,KAAKJ,CAAG,EAAE,SAAS,KAAK,CACjC,EAEIK,GAAKF,EAAO,EAAO,IAAI,SAAS,EAAE,EACtC,OAAIE,EAAE,OAAS,IACbA,EAAI,IAAMA,GAEL,KAAOF,EAAO,EAAOA,EAAO,EAAOE,CAC5C,OAASC,EAAO,CACd,MAAM,IAAIC,EAAYC,EAAgB,cAAe,OAAWF,CAAK,CACvE,CACF,CAEA,MAAM,cACJG,EACAC,EACAC,EAC2B,CAC3B,GAAI,CACF,IAAMC,EAAW,IAAIC,EAAgBC,CAAwB,EAEvDC,EAAmB,MAAMH,EAAS,oBAAoBF,CAAW,EAEjEM,EAAuC,CAC3C,GAAIP,EAAG,GACP,SAAUA,EAAG,SACb,SAAUA,EAAG,SACb,MAAOM,EACP,QAASJ,EACT,KAAMF,EAAG,KACT,MAAOA,EAAG,MACV,qBAAsBA,EAAG,qBACzB,aAAcA,EAAG,YACnB,EAEMQ,EACJC,EAAY,KAAKF,CAAW,EAAE,mBAAmB,UAAU,CAAC,EAExDG,EAAa,MACjB,KAAM,QAAO,mBAAsB,GACnC,cAAc,mBAAmBF,EAAY,CAAC,EAAG,CAAC,CAAC,EAE/ChB,EAAY,MAAMC,EAAiB,EAInCkB,EAAY,MAFN,IAAK,KAAM,QAAO,mBAAsB,GAAG,QAAQnB,CAAS,EAE5C,gBAC1BG,EAAkB,EAClBa,EACAE,CACF,EAEME,EAAWH,EAAY,KAAK,CAChC,GAAGF,EACH,UAAW,CACT,EAAG,KAAOI,EAAU,EACpB,EAAG,KAAOA,EAAU,EACpB,EAAG,SAASA,EAAU,CAAC,CACzB,CACF,CAAC,EAAE,WAIH,MAAO,CAAE,MAFe,MAAMR,EAAS,qBAAqBS,CAAQ,GAErC,IAAK,CACtC,OAASf,EAAO,CACd,MAAMgB,EAAehB,CAAK,CAC5B,QAAE,CACA,MAAMiB,EAAoB,CAC5B,CACF,CACF",
6
+ "names": ["DEFAULT_ETHEREUM_RPC_URL", "JsonRpcProvider", "Transaction", "SignerError", "SignerErrorCode", "EthereumSigner", "__name", "msg", "transport", "transportConnect", "result", "getDerivationPath", "v", "error", "SignerError", "SignerErrorCode", "tx", "fromAddress", "chainId", "provider", "JsonRpcProvider", "DEFAULT_ETHEREUM_RPC_URL", "transactionCount", "transaction", "unsignedTx", "Transaction", "resolution", "signature", "signedTx", "getLedgerError", "transportDisconnect"]
7
+ }