@metamask-previews/hw-wallet-sdk 0.8.0-e5bc458 → 0.9.0-5951828
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/CHANGELOG.md +9 -0
- package/dist/hardware-error-mappings.cjs +17 -1
- package/dist/hardware-error-mappings.cjs.map +1 -1
- package/dist/hardware-error-mappings.d.cts +8 -0
- package/dist/hardware-error-mappings.d.cts.map +1 -1
- package/dist/hardware-error-mappings.d.mts +8 -0
- package/dist/hardware-error-mappings.d.mts.map +1 -1
- package/dist/hardware-error-mappings.mjs +16 -0
- package/dist/hardware-error-mappings.mjs.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/user-rejection.cjs +116 -0
- package/dist/user-rejection.cjs.map +1 -0
- package/dist/user-rejection.d.cts +18 -0
- package/dist/user-rejection.d.cts.map +1 -0
- package/dist/user-rejection.d.mts +18 -0
- package/dist/user-rejection.d.mts.map +1 -0
- package/dist/user-rejection.mjs +111 -0
- package/dist/user-rejection.mjs.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Add `KEYRING_ERROR_MAPPINGS` with `DeviceStateOnlyV4Supported` for keyring-level typed data version validation ([#575](https://github.com/MetaMask/accounts/pull/575))
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Add shared user-rejection detection helpers so hardware wallet libraries can classify cancellation-like errors consistently ([#576](https://github.com/MetaMask/accounts/pull/576))
|
|
17
|
+
- Provider-style `4001` codes are distinguished from this SDK's `ConnectionClosed` error code.
|
|
18
|
+
|
|
10
19
|
## [0.8.0]
|
|
11
20
|
|
|
12
21
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TREZOR_ERROR_MAPPINGS = exports.QR_WALLET_ERROR_MAPPINGS = exports.MOBILE_ERROR_MAPPINGS = exports.BLE_ERROR_MAPPINGS = exports.LEDGER_ERROR_MAPPINGS = void 0;
|
|
3
|
+
exports.KEYRING_ERROR_MAPPINGS = exports.TREZOR_ERROR_MAPPINGS = exports.QR_WALLET_ERROR_MAPPINGS = exports.MOBILE_ERROR_MAPPINGS = exports.BLE_ERROR_MAPPINGS = exports.LEDGER_ERROR_MAPPINGS = void 0;
|
|
4
4
|
const hardware_errors_enums_1 = require("./hardware-errors-enums.cjs");
|
|
5
5
|
exports.LEDGER_ERROR_MAPPINGS = {
|
|
6
6
|
'0x9000': {
|
|
@@ -416,4 +416,20 @@ exports.TREZOR_ERROR_MAPPINGS = {
|
|
|
416
416
|
userMessage: 'Your Trezor device failed to initialize. Please unlock it and try again.',
|
|
417
417
|
},
|
|
418
418
|
};
|
|
419
|
+
/**
|
|
420
|
+
* Keyring error mappings - static error data for keyring-level validation errors
|
|
421
|
+
* that are not tied to a Ledger transport status code.
|
|
422
|
+
*
|
|
423
|
+
* TODO: Wire DeviceStateOnlyV4Supported into keyring-eth-trezor and keyring-eth-qr
|
|
424
|
+
* so all hardware keyrings throw HardwareWalletError for unsupported typed data versions.
|
|
425
|
+
*/
|
|
426
|
+
exports.KEYRING_ERROR_MAPPINGS = {
|
|
427
|
+
[hardware_errors_enums_1.ErrorCode.DeviceStateOnlyV4Supported]: {
|
|
428
|
+
code: hardware_errors_enums_1.ErrorCode.DeviceStateOnlyV4Supported,
|
|
429
|
+
message: 'Only version 4 of typed data signing is supported',
|
|
430
|
+
severity: hardware_errors_enums_1.Severity.Err,
|
|
431
|
+
category: hardware_errors_enums_1.Category.DeviceState,
|
|
432
|
+
userMessage: 'This device can only sign version 4 (V4) typed data. This site requested an older signature type that is not supported.',
|
|
433
|
+
},
|
|
434
|
+
};
|
|
419
435
|
//# sourceMappingURL=hardware-error-mappings.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hardware-error-mappings.cjs","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"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","sourcesContent":["import { ErrorCode, Severity, Category } from './hardware-errors-enums';\n\nexport type ErrorMapping = {\n code: ErrorCode;\n message: string;\n severity: Severity;\n category: Category;\n userMessage?: string;\n};\n\nexport const LEDGER_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n '0x9000': {\n code: ErrorCode.Success,\n message: 'Operation successful',\n severity: Severity.Info,\n category: Category.Success,\n },\n '0x6300': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Authentication failed. Please verify your credentials.',\n },\n '0x63c0': {\n code: ErrorCode.AuthenticationPinAttemptsRemaining,\n message: 'PIN attempts remaining',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'Incorrect PIN. Please try again.',\n },\n '0x6982': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Security conditions not satisfied',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage:\n 'Device is locked or access rights are insufficient. Please unlock your device.',\n },\n '0x6985': {\n code: ErrorCode.UserRejected,\n message: 'User rejected action on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n\n userMessage:\n 'Transaction was rejected. Please approve on your device to continue.',\n },\n '0x9804': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'App update required',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage: 'Please update your Ledger app to continue.',\n },\n '0x9808': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Contradiction in secret code status',\n severity: Severity.Err,\n category: Category.Authentication,\n },\n '0x9840': {\n code: ErrorCode.AuthenticationDeviceBlocked,\n message: 'Code blocked',\n severity: Severity.Critical,\n category: Category.Authentication,\n\n userMessage:\n 'Your device is blocked due to too many failed attempts. Please follow device recovery procedures.',\n },\n '0x650f': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Please open it on your Ledger device to continue.',\n },\n '0x5515': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device is locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x5501': {\n code: ErrorCode.UserRejected,\n message: 'User refused on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage:\n 'Operation was rejected. Please approve on your device to continue.',\n },\n '0x6a80': {\n code: ErrorCode.DeviceStateBlindSignNotSupported,\n message: 'Blind signing not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Blind signing is not supported on this device.',\n },\n '0x6a83': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on solana. Please open it to continue.',\n },\n '0x6d00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on bitcoin. Please open it to continue.',\n },\n '0x6e00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6501': {\n code: ErrorCode.DeviceStateEthAppOutOfDate,\n message: 'Ethereum app out of date',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is out of date. Please update it to continue.',\n },\n '0x6f00': {\n code: ErrorCode.DeviceUnresponsive,\n message: 'Device unresponsive',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your device is not responding. Please disconnect and reconnect your device.',\n },\n '0x6b0c': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x6a15': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6511': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n};\n\nexport const BLE_ERROR_MAPPINGS = {\n BLUETOOTH_PERMISSION_DENIED: {\n code: ErrorCode.PermissionBluetoothDenied,\n message: 'Bluetooth permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Bluetooth permission is required to connect to your hardware wallet. Please enable it in your device settings.',\n },\n LOCATION_PERMISSION_DENIED: {\n code: ErrorCode.PermissionLocationDenied,\n message: 'Location permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Location permission is required for Bluetooth scanning on Android. Please enable it in your device settings.',\n },\n NEARBY_DEVICES_PERMISSION_DENIED: {\n code: ErrorCode.PermissionNearbyDevicesDenied,\n message: 'Nearby devices permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Nearby devices permission is required to scan for your hardware wallet. Please enable it in your device settings.',\n },\n BLUETOOTH_DISABLED: {\n code: ErrorCode.BluetoothDisabled,\n message: 'Bluetooth is turned off',\n severity: Severity.Warning,\n category: Category.Connection,\n userMessage:\n 'Bluetooth is turned off. Please enable Bluetooth to connect to your hardware wallet.',\n },\n BLUETOOTH_SCAN_FAILED: {\n code: ErrorCode.BluetoothScanFailed,\n message: 'Bluetooth scanning failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Unable to scan for Bluetooth devices. Please try again.',\n },\n BLUETOOTH_CONNECTION_FAILED: {\n code: ErrorCode.BluetoothConnectionFailed,\n message: 'Bluetooth connection failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Failed to connect via Bluetooth. Please make sure your device is nearby and try again.',\n },\n};\n\nexport const MOBILE_ERROR_MAPPINGS = {\n CAMERA_PERMISSION_DENIED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Camera permission is required to scan QR codes. Please enable it in your device settings.',\n },\n NOT_SUPPORTED: {\n code: ErrorCode.MobileNotSupported,\n message: 'Operation not supported on mobile',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'This operation is not supported on mobile devices.',\n },\n};\n\n/**\n * QR error mappings - static error data for QR hardware wallets and their related flows.\n */\nexport const QR_WALLET_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n CAMERA_PERMISSION_PROMPT_DISMISSED: {\n code: ErrorCode.PermissionCameraPromptDismissed,\n message: 'Camera permission prompt dismissed without granting access',\n severity: Severity.Warning,\n category: Category.Configuration,\n userMessage:\n 'MetaMask needs camera access to scan the QR code on your device.',\n },\n CAMERA_PERMISSION_BLOCKED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission blocked by the browser',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage: 'To continue, allow camera access in your browser settings.',\n },\n};\n\n/**\n * Trezor error mappings - static error data for Trezor hardware wallets.\n * These mappings provide consistent error classification across Trezor integrations.\n */\nexport const TREZOR_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n Transport_Missing: {\n code: ErrorCode.ConnectionTransportMissing,\n message: 'Trezor transport is unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Unable to connect to your Trezor device. Please reconnect and try again.',\n },\n Device_Disconnected: {\n code: ErrorCode.DeviceDisconnected,\n message: 'Trezor device disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Your Trezor device was disconnected. Please reconnect and try again.',\n },\n Popup_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor popup connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Connection to your Trezor device popup failed. Please retry.',\n },\n Desktop_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor desktop connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to Trezor Suite failed. Please retry with your device connected.',\n },\n Method_Interrupted: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor action was interrupted',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device was closed. Please reconnect and try again.',\n },\n Method_Cancel: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Method_PermissionsNotGranted: {\n code: ErrorCode.UserRejected,\n message: 'Permission not granted on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Permission was rejected on your Trezor device.',\n },\n Failure_ActionCancelled: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Device_InvalidState: {\n code: ErrorCode.AuthenticationFailed,\n message: 'Trezor device authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Authentication failed on your Trezor device. Check your passphrase and retry.',\n },\n Device_CallInProgress: {\n code: ErrorCode.DeviceCallInProgress,\n message: 'Trezor device call already in progress',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy. Finish the current action and retry.',\n },\n Init_IframeTimeout: {\n code: ErrorCode.ConnectionTimeout,\n message: 'Trezor connection timed out',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device timed out. Please try again.',\n },\n Init_IframeBlocked: {\n code: ErrorCode.ConnectionBlocked,\n message: 'Trezor iframe blocked',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor connection popup was blocked. Please allow popups and try again.',\n },\n Init_ManifestMissing: {\n code: ErrorCode.Unknown,\n message: 'Trezor manifest is missing',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Trezor integration is not configured correctly. Please retry later.',\n },\n Device_NotFound: {\n code: ErrorCode.DeviceNotFound,\n message: 'Trezor device not found',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'No Trezor device found. Please connect your device and try again.',\n },\n Device_UsedElsewhere: {\n code: ErrorCode.DeviceUsedElsewhere,\n message: 'Trezor device is used elsewhere',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy in another window. Close the other flow and try again.',\n },\n Device_MultipleNotSupported: {\n code: ErrorCode.DeviceMultipleConnected,\n message: 'Multiple Trezor devices are not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Multiple Trezor devices are connected. Keep one connected and retry.',\n },\n Device_MissingCapability: {\n code: ErrorCode.DeviceMissingCapability,\n message: 'Trezor device is missing capability',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware does not support this action. Please update and retry.',\n },\n Device_MissingCapabilityBtcOnly: {\n code: ErrorCode.DeviceBtcOnlyFirmware,\n message: 'Trezor device firmware only supports BTC',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware currently supports BTC only. Update firmware and retry.',\n },\n Failure_PinCancelled: {\n code: ErrorCode.AuthenticationPinCancelled,\n message: 'Trezor PIN entry cancelled',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'PIN entry was cancelled on your Trezor device.',\n },\n Failure_PinInvalid: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN is invalid',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN is incorrect. Please try again.',\n },\n Failure_PinMismatch: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN does not match. Please try again.',\n },\n Failure_WipeCodeMismatch: {\n code: ErrorCode.AuthenticationWipeCodeMismatch,\n message: 'Trezor wipe code mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The wipe code does not match. Please verify and try again.',\n },\n Device_ModeException: {\n code: ErrorCode.DeviceIncompatibleMode,\n message: 'Trezor device mode is incompatible',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor is in an incompatible mode for this action. Check the device and retry.',\n },\n Device_ThpPairingTagInvalid: {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Trezor pairing security check failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'A security check failed on your Trezor device. Reconnect and try again.',\n },\n Backend_Disconnected: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor backend disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Trezor backend disconnected. Please retry.',\n },\n Method_NoResponse: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor call returned no response',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor did not return a response. Reconnect your device and try again.',\n },\n Device_InitializeFailed: {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Trezor device initialization failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Your Trezor device failed to initialize. Please unlock it and try again.',\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"hardware-error-mappings.cjs","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"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","sourcesContent":["import { ErrorCode, Severity, Category } from './hardware-errors-enums';\n\nexport type ErrorMapping = {\n code: ErrorCode;\n message: string;\n severity: Severity;\n category: Category;\n userMessage?: string;\n};\n\nexport const LEDGER_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n '0x9000': {\n code: ErrorCode.Success,\n message: 'Operation successful',\n severity: Severity.Info,\n category: Category.Success,\n },\n '0x6300': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Authentication failed. Please verify your credentials.',\n },\n '0x63c0': {\n code: ErrorCode.AuthenticationPinAttemptsRemaining,\n message: 'PIN attempts remaining',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'Incorrect PIN. Please try again.',\n },\n '0x6982': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Security conditions not satisfied',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage:\n 'Device is locked or access rights are insufficient. Please unlock your device.',\n },\n '0x6985': {\n code: ErrorCode.UserRejected,\n message: 'User rejected action on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n\n userMessage:\n 'Transaction was rejected. Please approve on your device to continue.',\n },\n '0x9804': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'App update required',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage: 'Please update your Ledger app to continue.',\n },\n '0x9808': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Contradiction in secret code status',\n severity: Severity.Err,\n category: Category.Authentication,\n },\n '0x9840': {\n code: ErrorCode.AuthenticationDeviceBlocked,\n message: 'Code blocked',\n severity: Severity.Critical,\n category: Category.Authentication,\n\n userMessage:\n 'Your device is blocked due to too many failed attempts. Please follow device recovery procedures.',\n },\n '0x650f': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Please open it on your Ledger device to continue.',\n },\n '0x5515': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device is locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x5501': {\n code: ErrorCode.UserRejected,\n message: 'User refused on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage:\n 'Operation was rejected. Please approve on your device to continue.',\n },\n '0x6a80': {\n code: ErrorCode.DeviceStateBlindSignNotSupported,\n message: 'Blind signing not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Blind signing is not supported on this device.',\n },\n '0x6a83': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on solana. Please open it to continue.',\n },\n '0x6d00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on bitcoin. Please open it to continue.',\n },\n '0x6e00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6501': {\n code: ErrorCode.DeviceStateEthAppOutOfDate,\n message: 'Ethereum app out of date',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is out of date. Please update it to continue.',\n },\n '0x6f00': {\n code: ErrorCode.DeviceUnresponsive,\n message: 'Device unresponsive',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your device is not responding. Please disconnect and reconnect your device.',\n },\n '0x6b0c': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x6a15': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6511': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n};\n\nexport const BLE_ERROR_MAPPINGS = {\n BLUETOOTH_PERMISSION_DENIED: {\n code: ErrorCode.PermissionBluetoothDenied,\n message: 'Bluetooth permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Bluetooth permission is required to connect to your hardware wallet. Please enable it in your device settings.',\n },\n LOCATION_PERMISSION_DENIED: {\n code: ErrorCode.PermissionLocationDenied,\n message: 'Location permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Location permission is required for Bluetooth scanning on Android. Please enable it in your device settings.',\n },\n NEARBY_DEVICES_PERMISSION_DENIED: {\n code: ErrorCode.PermissionNearbyDevicesDenied,\n message: 'Nearby devices permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Nearby devices permission is required to scan for your hardware wallet. Please enable it in your device settings.',\n },\n BLUETOOTH_DISABLED: {\n code: ErrorCode.BluetoothDisabled,\n message: 'Bluetooth is turned off',\n severity: Severity.Warning,\n category: Category.Connection,\n userMessage:\n 'Bluetooth is turned off. Please enable Bluetooth to connect to your hardware wallet.',\n },\n BLUETOOTH_SCAN_FAILED: {\n code: ErrorCode.BluetoothScanFailed,\n message: 'Bluetooth scanning failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Unable to scan for Bluetooth devices. Please try again.',\n },\n BLUETOOTH_CONNECTION_FAILED: {\n code: ErrorCode.BluetoothConnectionFailed,\n message: 'Bluetooth connection failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Failed to connect via Bluetooth. Please make sure your device is nearby and try again.',\n },\n};\n\nexport const MOBILE_ERROR_MAPPINGS = {\n CAMERA_PERMISSION_DENIED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Camera permission is required to scan QR codes. Please enable it in your device settings.',\n },\n NOT_SUPPORTED: {\n code: ErrorCode.MobileNotSupported,\n message: 'Operation not supported on mobile',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'This operation is not supported on mobile devices.',\n },\n};\n\n/**\n * QR error mappings - static error data for QR hardware wallets and their related flows.\n */\nexport const QR_WALLET_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n CAMERA_PERMISSION_PROMPT_DISMISSED: {\n code: ErrorCode.PermissionCameraPromptDismissed,\n message: 'Camera permission prompt dismissed without granting access',\n severity: Severity.Warning,\n category: Category.Configuration,\n userMessage:\n 'MetaMask needs camera access to scan the QR code on your device.',\n },\n CAMERA_PERMISSION_BLOCKED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission blocked by the browser',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage: 'To continue, allow camera access in your browser settings.',\n },\n};\n\n/**\n * Trezor error mappings - static error data for Trezor hardware wallets.\n * These mappings provide consistent error classification across Trezor integrations.\n */\nexport const TREZOR_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n Transport_Missing: {\n code: ErrorCode.ConnectionTransportMissing,\n message: 'Trezor transport is unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Unable to connect to your Trezor device. Please reconnect and try again.',\n },\n Device_Disconnected: {\n code: ErrorCode.DeviceDisconnected,\n message: 'Trezor device disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Your Trezor device was disconnected. Please reconnect and try again.',\n },\n Popup_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor popup connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Connection to your Trezor device popup failed. Please retry.',\n },\n Desktop_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor desktop connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to Trezor Suite failed. Please retry with your device connected.',\n },\n Method_Interrupted: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor action was interrupted',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device was closed. Please reconnect and try again.',\n },\n Method_Cancel: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Method_PermissionsNotGranted: {\n code: ErrorCode.UserRejected,\n message: 'Permission not granted on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Permission was rejected on your Trezor device.',\n },\n Failure_ActionCancelled: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Device_InvalidState: {\n code: ErrorCode.AuthenticationFailed,\n message: 'Trezor device authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Authentication failed on your Trezor device. Check your passphrase and retry.',\n },\n Device_CallInProgress: {\n code: ErrorCode.DeviceCallInProgress,\n message: 'Trezor device call already in progress',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy. Finish the current action and retry.',\n },\n Init_IframeTimeout: {\n code: ErrorCode.ConnectionTimeout,\n message: 'Trezor connection timed out',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device timed out. Please try again.',\n },\n Init_IframeBlocked: {\n code: ErrorCode.ConnectionBlocked,\n message: 'Trezor iframe blocked',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor connection popup was blocked. Please allow popups and try again.',\n },\n Init_ManifestMissing: {\n code: ErrorCode.Unknown,\n message: 'Trezor manifest is missing',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Trezor integration is not configured correctly. Please retry later.',\n },\n Device_NotFound: {\n code: ErrorCode.DeviceNotFound,\n message: 'Trezor device not found',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'No Trezor device found. Please connect your device and try again.',\n },\n Device_UsedElsewhere: {\n code: ErrorCode.DeviceUsedElsewhere,\n message: 'Trezor device is used elsewhere',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy in another window. Close the other flow and try again.',\n },\n Device_MultipleNotSupported: {\n code: ErrorCode.DeviceMultipleConnected,\n message: 'Multiple Trezor devices are not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Multiple Trezor devices are connected. Keep one connected and retry.',\n },\n Device_MissingCapability: {\n code: ErrorCode.DeviceMissingCapability,\n message: 'Trezor device is missing capability',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware does not support this action. Please update and retry.',\n },\n Device_MissingCapabilityBtcOnly: {\n code: ErrorCode.DeviceBtcOnlyFirmware,\n message: 'Trezor device firmware only supports BTC',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware currently supports BTC only. Update firmware and retry.',\n },\n Failure_PinCancelled: {\n code: ErrorCode.AuthenticationPinCancelled,\n message: 'Trezor PIN entry cancelled',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'PIN entry was cancelled on your Trezor device.',\n },\n Failure_PinInvalid: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN is invalid',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN is incorrect. Please try again.',\n },\n Failure_PinMismatch: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN does not match. Please try again.',\n },\n Failure_WipeCodeMismatch: {\n code: ErrorCode.AuthenticationWipeCodeMismatch,\n message: 'Trezor wipe code mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The wipe code does not match. Please verify and try again.',\n },\n Device_ModeException: {\n code: ErrorCode.DeviceIncompatibleMode,\n message: 'Trezor device mode is incompatible',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor is in an incompatible mode for this action. Check the device and retry.',\n },\n Device_ThpPairingTagInvalid: {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Trezor pairing security check failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'A security check failed on your Trezor device. Reconnect and try again.',\n },\n Backend_Disconnected: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor backend disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Trezor backend disconnected. Please retry.',\n },\n Method_NoResponse: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor call returned no response',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor did not return a response. Reconnect your device and try again.',\n },\n Device_InitializeFailed: {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Trezor device initialization failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Your Trezor device failed to initialize. Please unlock it and try again.',\n },\n};\n\n/**\n * Keyring error mappings - static error data for keyring-level validation errors\n * that are not tied to a Ledger transport status code.\n *\n * TODO: Wire DeviceStateOnlyV4Supported into keyring-eth-trezor and keyring-eth-qr\n * so all hardware keyrings throw HardwareWalletError for unsupported typed data versions.\n */\nexport const KEYRING_ERROR_MAPPINGS: Partial<Record<ErrorCode, ErrorMapping>> =\n {\n [ErrorCode.DeviceStateOnlyV4Supported]: {\n code: ErrorCode.DeviceStateOnlyV4Supported,\n message: 'Only version 4 of typed data signing is supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'This device can only sign version 4 (V4) typed data. This site requested an older signature type that is not supported.',\n },\n };\n"]}
|
|
@@ -76,4 +76,12 @@ export declare const QR_WALLET_ERROR_MAPPINGS: Record<string, ErrorMapping>;
|
|
|
76
76
|
* These mappings provide consistent error classification across Trezor integrations.
|
|
77
77
|
*/
|
|
78
78
|
export declare const TREZOR_ERROR_MAPPINGS: Record<string, ErrorMapping>;
|
|
79
|
+
/**
|
|
80
|
+
* Keyring error mappings - static error data for keyring-level validation errors
|
|
81
|
+
* that are not tied to a Ledger transport status code.
|
|
82
|
+
*
|
|
83
|
+
* TODO: Wire DeviceStateOnlyV4Supported into keyring-eth-trezor and keyring-eth-qr
|
|
84
|
+
* so all hardware keyrings throw HardwareWalletError for unsupported typed data versions.
|
|
85
|
+
*/
|
|
86
|
+
export declare const KEYRING_ERROR_MAPPINGS: Partial<Record<ErrorCode, ErrorMapping>>;
|
|
79
87
|
//# sourceMappingURL=hardware-error-mappings.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hardware-error-mappings.d.cts","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAgC;AAExE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuJ9D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;CAgBjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgBjE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgN9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"hardware-error-mappings.d.cts","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAgC;AAExE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuJ9D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;CAgBjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgBjE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgN9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAUzE,CAAC"}
|
|
@@ -76,4 +76,12 @@ export declare const QR_WALLET_ERROR_MAPPINGS: Record<string, ErrorMapping>;
|
|
|
76
76
|
* These mappings provide consistent error classification across Trezor integrations.
|
|
77
77
|
*/
|
|
78
78
|
export declare const TREZOR_ERROR_MAPPINGS: Record<string, ErrorMapping>;
|
|
79
|
+
/**
|
|
80
|
+
* Keyring error mappings - static error data for keyring-level validation errors
|
|
81
|
+
* that are not tied to a Ledger transport status code.
|
|
82
|
+
*
|
|
83
|
+
* TODO: Wire DeviceStateOnlyV4Supported into keyring-eth-trezor and keyring-eth-qr
|
|
84
|
+
* so all hardware keyrings throw HardwareWalletError for unsupported typed data versions.
|
|
85
|
+
*/
|
|
86
|
+
export declare const KEYRING_ERROR_MAPPINGS: Partial<Record<ErrorCode, ErrorMapping>>;
|
|
79
87
|
//# sourceMappingURL=hardware-error-mappings.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hardware-error-mappings.d.mts","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAgC;AAExE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuJ9D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;CAgBjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgBjE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgN9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"hardware-error-mappings.d.mts","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAgC;AAExE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuJ9D,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;CAgBjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgBjE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgN9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAUzE,CAAC"}
|
|
@@ -413,4 +413,20 @@ export const TREZOR_ERROR_MAPPINGS = {
|
|
|
413
413
|
userMessage: 'Your Trezor device failed to initialize. Please unlock it and try again.',
|
|
414
414
|
},
|
|
415
415
|
};
|
|
416
|
+
/**
|
|
417
|
+
* Keyring error mappings - static error data for keyring-level validation errors
|
|
418
|
+
* that are not tied to a Ledger transport status code.
|
|
419
|
+
*
|
|
420
|
+
* TODO: Wire DeviceStateOnlyV4Supported into keyring-eth-trezor and keyring-eth-qr
|
|
421
|
+
* so all hardware keyrings throw HardwareWalletError for unsupported typed data versions.
|
|
422
|
+
*/
|
|
423
|
+
export const KEYRING_ERROR_MAPPINGS = {
|
|
424
|
+
[ErrorCode.DeviceStateOnlyV4Supported]: {
|
|
425
|
+
code: ErrorCode.DeviceStateOnlyV4Supported,
|
|
426
|
+
message: 'Only version 4 of typed data signing is supported',
|
|
427
|
+
severity: Severity.Err,
|
|
428
|
+
category: Category.DeviceState,
|
|
429
|
+
userMessage: 'This device can only sign version 4 (V4) typed data. This site requested an older signature type that is not supported.',
|
|
430
|
+
},
|
|
431
|
+
};
|
|
416
432
|
//# sourceMappingURL=hardware-error-mappings.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hardware-error-mappings.mjs","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"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","sourcesContent":["import { ErrorCode, Severity, Category } from './hardware-errors-enums';\n\nexport type ErrorMapping = {\n code: ErrorCode;\n message: string;\n severity: Severity;\n category: Category;\n userMessage?: string;\n};\n\nexport const LEDGER_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n '0x9000': {\n code: ErrorCode.Success,\n message: 'Operation successful',\n severity: Severity.Info,\n category: Category.Success,\n },\n '0x6300': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Authentication failed. Please verify your credentials.',\n },\n '0x63c0': {\n code: ErrorCode.AuthenticationPinAttemptsRemaining,\n message: 'PIN attempts remaining',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'Incorrect PIN. Please try again.',\n },\n '0x6982': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Security conditions not satisfied',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage:\n 'Device is locked or access rights are insufficient. Please unlock your device.',\n },\n '0x6985': {\n code: ErrorCode.UserRejected,\n message: 'User rejected action on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n\n userMessage:\n 'Transaction was rejected. Please approve on your device to continue.',\n },\n '0x9804': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'App update required',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage: 'Please update your Ledger app to continue.',\n },\n '0x9808': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Contradiction in secret code status',\n severity: Severity.Err,\n category: Category.Authentication,\n },\n '0x9840': {\n code: ErrorCode.AuthenticationDeviceBlocked,\n message: 'Code blocked',\n severity: Severity.Critical,\n category: Category.Authentication,\n\n userMessage:\n 'Your device is blocked due to too many failed attempts. Please follow device recovery procedures.',\n },\n '0x650f': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Please open it on your Ledger device to continue.',\n },\n '0x5515': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device is locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x5501': {\n code: ErrorCode.UserRejected,\n message: 'User refused on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage:\n 'Operation was rejected. Please approve on your device to continue.',\n },\n '0x6a80': {\n code: ErrorCode.DeviceStateBlindSignNotSupported,\n message: 'Blind signing not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Blind signing is not supported on this device.',\n },\n '0x6a83': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on solana. Please open it to continue.',\n },\n '0x6d00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on bitcoin. Please open it to continue.',\n },\n '0x6e00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6501': {\n code: ErrorCode.DeviceStateEthAppOutOfDate,\n message: 'Ethereum app out of date',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is out of date. Please update it to continue.',\n },\n '0x6f00': {\n code: ErrorCode.DeviceUnresponsive,\n message: 'Device unresponsive',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your device is not responding. Please disconnect and reconnect your device.',\n },\n '0x6b0c': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x6a15': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6511': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n};\n\nexport const BLE_ERROR_MAPPINGS = {\n BLUETOOTH_PERMISSION_DENIED: {\n code: ErrorCode.PermissionBluetoothDenied,\n message: 'Bluetooth permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Bluetooth permission is required to connect to your hardware wallet. Please enable it in your device settings.',\n },\n LOCATION_PERMISSION_DENIED: {\n code: ErrorCode.PermissionLocationDenied,\n message: 'Location permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Location permission is required for Bluetooth scanning on Android. Please enable it in your device settings.',\n },\n NEARBY_DEVICES_PERMISSION_DENIED: {\n code: ErrorCode.PermissionNearbyDevicesDenied,\n message: 'Nearby devices permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Nearby devices permission is required to scan for your hardware wallet. Please enable it in your device settings.',\n },\n BLUETOOTH_DISABLED: {\n code: ErrorCode.BluetoothDisabled,\n message: 'Bluetooth is turned off',\n severity: Severity.Warning,\n category: Category.Connection,\n userMessage:\n 'Bluetooth is turned off. Please enable Bluetooth to connect to your hardware wallet.',\n },\n BLUETOOTH_SCAN_FAILED: {\n code: ErrorCode.BluetoothScanFailed,\n message: 'Bluetooth scanning failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Unable to scan for Bluetooth devices. Please try again.',\n },\n BLUETOOTH_CONNECTION_FAILED: {\n code: ErrorCode.BluetoothConnectionFailed,\n message: 'Bluetooth connection failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Failed to connect via Bluetooth. Please make sure your device is nearby and try again.',\n },\n};\n\nexport const MOBILE_ERROR_MAPPINGS = {\n CAMERA_PERMISSION_DENIED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Camera permission is required to scan QR codes. Please enable it in your device settings.',\n },\n NOT_SUPPORTED: {\n code: ErrorCode.MobileNotSupported,\n message: 'Operation not supported on mobile',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'This operation is not supported on mobile devices.',\n },\n};\n\n/**\n * QR error mappings - static error data for QR hardware wallets and their related flows.\n */\nexport const QR_WALLET_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n CAMERA_PERMISSION_PROMPT_DISMISSED: {\n code: ErrorCode.PermissionCameraPromptDismissed,\n message: 'Camera permission prompt dismissed without granting access',\n severity: Severity.Warning,\n category: Category.Configuration,\n userMessage:\n 'MetaMask needs camera access to scan the QR code on your device.',\n },\n CAMERA_PERMISSION_BLOCKED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission blocked by the browser',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage: 'To continue, allow camera access in your browser settings.',\n },\n};\n\n/**\n * Trezor error mappings - static error data for Trezor hardware wallets.\n * These mappings provide consistent error classification across Trezor integrations.\n */\nexport const TREZOR_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n Transport_Missing: {\n code: ErrorCode.ConnectionTransportMissing,\n message: 'Trezor transport is unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Unable to connect to your Trezor device. Please reconnect and try again.',\n },\n Device_Disconnected: {\n code: ErrorCode.DeviceDisconnected,\n message: 'Trezor device disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Your Trezor device was disconnected. Please reconnect and try again.',\n },\n Popup_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor popup connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Connection to your Trezor device popup failed. Please retry.',\n },\n Desktop_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor desktop connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to Trezor Suite failed. Please retry with your device connected.',\n },\n Method_Interrupted: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor action was interrupted',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device was closed. Please reconnect and try again.',\n },\n Method_Cancel: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Method_PermissionsNotGranted: {\n code: ErrorCode.UserRejected,\n message: 'Permission not granted on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Permission was rejected on your Trezor device.',\n },\n Failure_ActionCancelled: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Device_InvalidState: {\n code: ErrorCode.AuthenticationFailed,\n message: 'Trezor device authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Authentication failed on your Trezor device. Check your passphrase and retry.',\n },\n Device_CallInProgress: {\n code: ErrorCode.DeviceCallInProgress,\n message: 'Trezor device call already in progress',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy. Finish the current action and retry.',\n },\n Init_IframeTimeout: {\n code: ErrorCode.ConnectionTimeout,\n message: 'Trezor connection timed out',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device timed out. Please try again.',\n },\n Init_IframeBlocked: {\n code: ErrorCode.ConnectionBlocked,\n message: 'Trezor iframe blocked',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor connection popup was blocked. Please allow popups and try again.',\n },\n Init_ManifestMissing: {\n code: ErrorCode.Unknown,\n message: 'Trezor manifest is missing',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Trezor integration is not configured correctly. Please retry later.',\n },\n Device_NotFound: {\n code: ErrorCode.DeviceNotFound,\n message: 'Trezor device not found',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'No Trezor device found. Please connect your device and try again.',\n },\n Device_UsedElsewhere: {\n code: ErrorCode.DeviceUsedElsewhere,\n message: 'Trezor device is used elsewhere',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy in another window. Close the other flow and try again.',\n },\n Device_MultipleNotSupported: {\n code: ErrorCode.DeviceMultipleConnected,\n message: 'Multiple Trezor devices are not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Multiple Trezor devices are connected. Keep one connected and retry.',\n },\n Device_MissingCapability: {\n code: ErrorCode.DeviceMissingCapability,\n message: 'Trezor device is missing capability',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware does not support this action. Please update and retry.',\n },\n Device_MissingCapabilityBtcOnly: {\n code: ErrorCode.DeviceBtcOnlyFirmware,\n message: 'Trezor device firmware only supports BTC',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware currently supports BTC only. Update firmware and retry.',\n },\n Failure_PinCancelled: {\n code: ErrorCode.AuthenticationPinCancelled,\n message: 'Trezor PIN entry cancelled',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'PIN entry was cancelled on your Trezor device.',\n },\n Failure_PinInvalid: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN is invalid',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN is incorrect. Please try again.',\n },\n Failure_PinMismatch: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN does not match. Please try again.',\n },\n Failure_WipeCodeMismatch: {\n code: ErrorCode.AuthenticationWipeCodeMismatch,\n message: 'Trezor wipe code mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The wipe code does not match. Please verify and try again.',\n },\n Device_ModeException: {\n code: ErrorCode.DeviceIncompatibleMode,\n message: 'Trezor device mode is incompatible',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor is in an incompatible mode for this action. Check the device and retry.',\n },\n Device_ThpPairingTagInvalid: {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Trezor pairing security check failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'A security check failed on your Trezor device. Reconnect and try again.',\n },\n Backend_Disconnected: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor backend disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Trezor backend disconnected. Please retry.',\n },\n Method_NoResponse: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor call returned no response',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor did not return a response. Reconnect your device and try again.',\n },\n Device_InitializeFailed: {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Trezor device initialization failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Your Trezor device failed to initialize. Please unlock it and try again.',\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"hardware-error-mappings.mjs","sourceRoot":"","sources":["../src/hardware-error-mappings.ts"],"names":[],"mappings":"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","sourcesContent":["import { ErrorCode, Severity, Category } from './hardware-errors-enums';\n\nexport type ErrorMapping = {\n code: ErrorCode;\n message: string;\n severity: Severity;\n category: Category;\n userMessage?: string;\n};\n\nexport const LEDGER_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n '0x9000': {\n code: ErrorCode.Success,\n message: 'Operation successful',\n severity: Severity.Info,\n category: Category.Success,\n },\n '0x6300': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Authentication failed. Please verify your credentials.',\n },\n '0x63c0': {\n code: ErrorCode.AuthenticationPinAttemptsRemaining,\n message: 'PIN attempts remaining',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'Incorrect PIN. Please try again.',\n },\n '0x6982': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Security conditions not satisfied',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage:\n 'Device is locked or access rights are insufficient. Please unlock your device.',\n },\n '0x6985': {\n code: ErrorCode.UserRejected,\n message: 'User rejected action on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n\n userMessage:\n 'Transaction was rejected. Please approve on your device to continue.',\n },\n '0x9804': {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'App update required',\n severity: Severity.Err,\n category: Category.Authentication,\n\n userMessage: 'Please update your Ledger app to continue.',\n },\n '0x9808': {\n code: ErrorCode.AuthenticationFailed,\n message: 'Contradiction in secret code status',\n severity: Severity.Err,\n category: Category.Authentication,\n },\n '0x9840': {\n code: ErrorCode.AuthenticationDeviceBlocked,\n message: 'Code blocked',\n severity: Severity.Critical,\n category: Category.Authentication,\n\n userMessage:\n 'Your device is blocked due to too many failed attempts. Please follow device recovery procedures.',\n },\n '0x650f': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Please open it on your Ledger device to continue.',\n },\n '0x5515': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device is locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x5501': {\n code: ErrorCode.UserRejected,\n message: 'User refused on device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage:\n 'Operation was rejected. Please approve on your device to continue.',\n },\n '0x6a80': {\n code: ErrorCode.DeviceStateBlindSignNotSupported,\n message: 'Blind signing not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Blind signing is not supported on this device.',\n },\n '0x6a83': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on solana. Please open it to continue.',\n },\n '0x6d00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Ethereum app is closed. Currently on bitcoin. Please open it to continue.',\n },\n '0x6e00': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6501': {\n code: ErrorCode.DeviceStateEthAppOutOfDate,\n message: 'Ethereum app out of date',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is out of date. Please update it to continue.',\n },\n '0x6f00': {\n code: ErrorCode.DeviceUnresponsive,\n message: 'Device unresponsive',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your device is not responding. Please disconnect and reconnect your device.',\n },\n '0x6b0c': {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Device locked',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'Please unlock your Ledger device to continue.',\n },\n '0x6a15': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n '0x6511': {\n code: ErrorCode.DeviceStateEthAppClosed,\n message: 'Ethereum app closed',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'Ethereum app is closed. Please open it to continue.',\n },\n};\n\nexport const BLE_ERROR_MAPPINGS = {\n BLUETOOTH_PERMISSION_DENIED: {\n code: ErrorCode.PermissionBluetoothDenied,\n message: 'Bluetooth permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Bluetooth permission is required to connect to your hardware wallet. Please enable it in your device settings.',\n },\n LOCATION_PERMISSION_DENIED: {\n code: ErrorCode.PermissionLocationDenied,\n message: 'Location permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Location permission is required for Bluetooth scanning on Android. Please enable it in your device settings.',\n },\n NEARBY_DEVICES_PERMISSION_DENIED: {\n code: ErrorCode.PermissionNearbyDevicesDenied,\n message: 'Nearby devices permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Nearby devices permission is required to scan for your hardware wallet. Please enable it in your device settings.',\n },\n BLUETOOTH_DISABLED: {\n code: ErrorCode.BluetoothDisabled,\n message: 'Bluetooth is turned off',\n severity: Severity.Warning,\n category: Category.Connection,\n userMessage:\n 'Bluetooth is turned off. Please enable Bluetooth to connect to your hardware wallet.',\n },\n BLUETOOTH_SCAN_FAILED: {\n code: ErrorCode.BluetoothScanFailed,\n message: 'Bluetooth scanning failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Unable to scan for Bluetooth devices. Please try again.',\n },\n BLUETOOTH_CONNECTION_FAILED: {\n code: ErrorCode.BluetoothConnectionFailed,\n message: 'Bluetooth connection failed',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Failed to connect via Bluetooth. Please make sure your device is nearby and try again.',\n },\n};\n\nexport const MOBILE_ERROR_MAPPINGS = {\n CAMERA_PERMISSION_DENIED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission denied',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Camera permission is required to scan QR codes. Please enable it in your device settings.',\n },\n NOT_SUPPORTED: {\n code: ErrorCode.MobileNotSupported,\n message: 'Operation not supported on mobile',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage: 'This operation is not supported on mobile devices.',\n },\n};\n\n/**\n * QR error mappings - static error data for QR hardware wallets and their related flows.\n */\nexport const QR_WALLET_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n CAMERA_PERMISSION_PROMPT_DISMISSED: {\n code: ErrorCode.PermissionCameraPromptDismissed,\n message: 'Camera permission prompt dismissed without granting access',\n severity: Severity.Warning,\n category: Category.Configuration,\n userMessage:\n 'MetaMask needs camera access to scan the QR code on your device.',\n },\n CAMERA_PERMISSION_BLOCKED: {\n code: ErrorCode.PermissionCameraDenied,\n message: 'Camera permission blocked by the browser',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage: 'To continue, allow camera access in your browser settings.',\n },\n};\n\n/**\n * Trezor error mappings - static error data for Trezor hardware wallets.\n * These mappings provide consistent error classification across Trezor integrations.\n */\nexport const TREZOR_ERROR_MAPPINGS: Record<string, ErrorMapping> = {\n Transport_Missing: {\n code: ErrorCode.ConnectionTransportMissing,\n message: 'Trezor transport is unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Unable to connect to your Trezor device. Please reconnect and try again.',\n },\n Device_Disconnected: {\n code: ErrorCode.DeviceDisconnected,\n message: 'Trezor device disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Your Trezor device was disconnected. Please reconnect and try again.',\n },\n Popup_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor popup connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Connection to your Trezor device popup failed. Please retry.',\n },\n Desktop_ConnectionMissing: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor desktop connection unavailable',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to Trezor Suite failed. Please retry with your device connected.',\n },\n Method_Interrupted: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor action was interrupted',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device was closed. Please reconnect and try again.',\n },\n Method_Cancel: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Method_PermissionsNotGranted: {\n code: ErrorCode.UserRejected,\n message: 'Permission not granted on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Permission was rejected on your Trezor device.',\n },\n Failure_ActionCancelled: {\n code: ErrorCode.UserCancelled,\n message: 'User cancelled action on Trezor device',\n severity: Severity.Warning,\n category: Category.UserAction,\n userMessage: 'Action was cancelled on your Trezor device.',\n },\n Device_InvalidState: {\n code: ErrorCode.AuthenticationFailed,\n message: 'Trezor device authentication failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Authentication failed on your Trezor device. Check your passphrase and retry.',\n },\n Device_CallInProgress: {\n code: ErrorCode.DeviceCallInProgress,\n message: 'Trezor device call already in progress',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy. Finish the current action and retry.',\n },\n Init_IframeTimeout: {\n code: ErrorCode.ConnectionTimeout,\n message: 'Trezor connection timed out',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Connection to your Trezor device timed out. Please try again.',\n },\n Init_IframeBlocked: {\n code: ErrorCode.ConnectionBlocked,\n message: 'Trezor iframe blocked',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor connection popup was blocked. Please allow popups and try again.',\n },\n Init_ManifestMissing: {\n code: ErrorCode.Unknown,\n message: 'Trezor manifest is missing',\n severity: Severity.Err,\n category: Category.Configuration,\n userMessage:\n 'Trezor integration is not configured correctly. Please retry later.',\n },\n Device_NotFound: {\n code: ErrorCode.DeviceNotFound,\n message: 'Trezor device not found',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'No Trezor device found. Please connect your device and try again.',\n },\n Device_UsedElsewhere: {\n code: ErrorCode.DeviceUsedElsewhere,\n message: 'Trezor device is used elsewhere',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor device is busy in another window. Close the other flow and try again.',\n },\n Device_MultipleNotSupported: {\n code: ErrorCode.DeviceMultipleConnected,\n message: 'Multiple Trezor devices are not supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Multiple Trezor devices are connected. Keep one connected and retry.',\n },\n Device_MissingCapability: {\n code: ErrorCode.DeviceMissingCapability,\n message: 'Trezor device is missing capability',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware does not support this action. Please update and retry.',\n },\n Device_MissingCapabilityBtcOnly: {\n code: ErrorCode.DeviceBtcOnlyFirmware,\n message: 'Trezor device firmware only supports BTC',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor firmware currently supports BTC only. Update firmware and retry.',\n },\n Failure_PinCancelled: {\n code: ErrorCode.AuthenticationPinCancelled,\n message: 'Trezor PIN entry cancelled',\n severity: Severity.Warning,\n category: Category.Authentication,\n userMessage: 'PIN entry was cancelled on your Trezor device.',\n },\n Failure_PinInvalid: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN is invalid',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN is incorrect. Please try again.',\n },\n Failure_PinMismatch: {\n code: ErrorCode.AuthenticationIncorrectPin,\n message: 'Trezor PIN mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The PIN does not match. Please try again.',\n },\n Failure_WipeCodeMismatch: {\n code: ErrorCode.AuthenticationWipeCodeMismatch,\n message: 'Trezor wipe code mismatch',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage: 'The wipe code does not match. Please verify and try again.',\n },\n Device_ModeException: {\n code: ErrorCode.DeviceIncompatibleMode,\n message: 'Trezor device mode is incompatible',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'Your Trezor is in an incompatible mode for this action. Check the device and retry.',\n },\n Device_ThpPairingTagInvalid: {\n code: ErrorCode.AuthenticationSecurityCondition,\n message: 'Trezor pairing security check failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'A security check failed on your Trezor device. Reconnect and try again.',\n },\n Backend_Disconnected: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor backend disconnected',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage: 'Trezor backend disconnected. Please retry.',\n },\n Method_NoResponse: {\n code: ErrorCode.ConnectionClosed,\n message: 'Trezor call returned no response',\n severity: Severity.Err,\n category: Category.Connection,\n userMessage:\n 'Trezor did not return a response. Reconnect your device and try again.',\n },\n Device_InitializeFailed: {\n code: ErrorCode.AuthenticationDeviceLocked,\n message: 'Trezor device initialization failed',\n severity: Severity.Err,\n category: Category.Authentication,\n userMessage:\n 'Your Trezor device failed to initialize. Please unlock it and try again.',\n },\n};\n\n/**\n * Keyring error mappings - static error data for keyring-level validation errors\n * that are not tied to a Ledger transport status code.\n *\n * TODO: Wire DeviceStateOnlyV4Supported into keyring-eth-trezor and keyring-eth-qr\n * so all hardware keyrings throw HardwareWalletError for unsupported typed data versions.\n */\nexport const KEYRING_ERROR_MAPPINGS: Partial<Record<ErrorCode, ErrorMapping>> =\n {\n [ErrorCode.DeviceStateOnlyV4Supported]: {\n code: ErrorCode.DeviceStateOnlyV4Supported,\n message: 'Only version 4 of typed data signing is supported',\n severity: Severity.Err,\n category: Category.DeviceState,\n userMessage:\n 'This device can only sign version 4 (V4) typed data. This site requested an older signature type that is not supported.',\n },\n };\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./hardware-errors-enums.cjs"), exports);
|
|
|
18
18
|
__exportStar(require("./hardware-error-mappings.cjs"), exports);
|
|
19
19
|
__exportStar(require("./hardware-error.cjs"), exports);
|
|
20
20
|
__exportStar(require("./types.cjs"), exports);
|
|
21
|
+
__exportStar(require("./user-rejection.cjs"), exports);
|
|
21
22
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAAwC;AACxC,gEAA0C;AAC1C,uDAAiC;AACjC,8CAAwB","sourcesContent":["export * from './hardware-errors-enums';\nexport * from './hardware-error-mappings';\nexport * from './hardware-error';\nexport * from './types';\n"]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAAwC;AACxC,gEAA0C;AAC1C,uDAAiC;AACjC,8CAAwB;AACxB,uDAAiC","sourcesContent":["export * from './hardware-errors-enums';\nexport * from './hardware-error-mappings';\nexport * from './hardware-error';\nexport * from './types';\nexport * from './user-rejection';\n"]}
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAAwC;AACxC,8CAA0C;AAC1C,qCAAiC;AACjC,4BAAwB"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAAwC;AACxC,8CAA0C;AAC1C,qCAAiC;AACjC,4BAAwB;AACxB,qCAAiC"}
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAAwC;AACxC,8CAA0C;AAC1C,qCAAiC;AACjC,4BAAwB"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAAwC;AACxC,8CAA0C;AAC1C,qCAAiC;AACjC,4BAAwB;AACxB,qCAAiC"}
|
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAAwC;AACxC,8CAA0C;AAC1C,qCAAiC;AACjC,4BAAwB","sourcesContent":["export * from './hardware-errors-enums';\nexport * from './hardware-error-mappings';\nexport * from './hardware-error';\nexport * from './types';\n"]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAAwC;AACxC,8CAA0C;AAC1C,qCAAiC;AACjC,4BAAwB;AACxB,qCAAiC","sourcesContent":["export * from './hardware-errors-enums';\nexport * from './hardware-error-mappings';\nexport * from './hardware-error';\nexport * from './types';\nexport * from './user-rejection';\n"]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveUserRejectionErrorCode = exports.isUserRejectionLikeError = void 0;
|
|
4
|
+
const hardware_error_1 = require("./hardware-error.cjs");
|
|
5
|
+
const hardware_errors_enums_1 = require("./hardware-errors-enums.cjs");
|
|
6
|
+
const PROVIDER_USER_REJECTED_CODE = 4001;
|
|
7
|
+
const USER_REJECTION_PATTERN = /(?:\buser rejected\b|\baction cancelled\b|\bcancelled\b|\bcanceled\b|failure_actioncancelled)/iu;
|
|
8
|
+
const USER_REJECTED_PATTERN = /\buser rejected\b/iu;
|
|
9
|
+
const PERMISSIONS_NOT_GRANTED_PATTERN = /\bpermissions? not granted\b/iu;
|
|
10
|
+
const USER_REJECTION_CODES = new Set([
|
|
11
|
+
'Method_PermissionsNotGranted',
|
|
12
|
+
'Method_Cancel',
|
|
13
|
+
'Failure_ActionCancelled',
|
|
14
|
+
]);
|
|
15
|
+
function isUserRejectionString(value) {
|
|
16
|
+
return (USER_REJECTION_PATTERN.test(value) ||
|
|
17
|
+
PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||
|
|
18
|
+
USER_REJECTION_CODES.has(value));
|
|
19
|
+
}
|
|
20
|
+
function isUserRejectedString(value) {
|
|
21
|
+
return (USER_REJECTED_PATTERN.test(value) ||
|
|
22
|
+
PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||
|
|
23
|
+
value === 'Method_PermissionsNotGranted');
|
|
24
|
+
}
|
|
25
|
+
function isHardwareWalletConnectionClosedError(error) {
|
|
26
|
+
if (error instanceof hardware_error_1.HardwareWalletError) {
|
|
27
|
+
return error.code === hardware_errors_enums_1.ErrorCode.ConnectionClosed;
|
|
28
|
+
}
|
|
29
|
+
const errorObject = error;
|
|
30
|
+
return (errorObject.name === 'HardwareWalletError' &&
|
|
31
|
+
errorObject.code === hardware_errors_enums_1.ErrorCode.ConnectionClosed);
|
|
32
|
+
}
|
|
33
|
+
function isProviderUserRejectedCode(code) {
|
|
34
|
+
return code === PROVIDER_USER_REJECTED_CODE;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Recursively checks whether an error value represents a user rejection or
|
|
38
|
+
* cancellation, mirroring detection used in MetaMask core signing flows.
|
|
39
|
+
*
|
|
40
|
+
* @param error - The error value to inspect.
|
|
41
|
+
* @param visited - Set of already-visited objects to avoid infinite recursion.
|
|
42
|
+
* @returns True when the error looks like a user rejection or cancellation.
|
|
43
|
+
*/
|
|
44
|
+
function isUserRejectionLikeError(error, visited = new Set()) {
|
|
45
|
+
if (!error || visited.has(error)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
visited.add(error);
|
|
49
|
+
if (typeof error === 'string') {
|
|
50
|
+
return isUserRejectionString(error);
|
|
51
|
+
}
|
|
52
|
+
if (typeof error !== 'object') {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const errorObject = error;
|
|
56
|
+
if (isHardwareWalletConnectionClosedError(error)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (isProviderUserRejectedCode(errorObject.code)) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
return (isUserRejectionLikeError(errorObject.code, visited) ||
|
|
63
|
+
isUserRejectionLikeError(errorObject.message, visited) ||
|
|
64
|
+
isUserRejectionLikeError(errorObject.stack, visited) ||
|
|
65
|
+
isUserRejectionLikeError(errorObject.cause, visited) ||
|
|
66
|
+
isUserRejectionLikeError(errorObject.originalError, visited));
|
|
67
|
+
}
|
|
68
|
+
exports.isUserRejectionLikeError = isUserRejectionLikeError;
|
|
69
|
+
/**
|
|
70
|
+
* Resolves a hardware-wallet error code for user rejection-like errors.
|
|
71
|
+
*
|
|
72
|
+
* @param error - The error value to inspect.
|
|
73
|
+
* @returns `UserRejected` or `UserCancelled` when detected, otherwise `undefined`.
|
|
74
|
+
*/
|
|
75
|
+
function resolveUserRejectionErrorCode(error) {
|
|
76
|
+
if (!isUserRejectionLikeError(error)) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
if (typeof error === 'string') {
|
|
80
|
+
return isUserRejectedString(error)
|
|
81
|
+
? hardware_errors_enums_1.ErrorCode.UserRejected
|
|
82
|
+
: hardware_errors_enums_1.ErrorCode.UserCancelled;
|
|
83
|
+
}
|
|
84
|
+
const errorObject = error;
|
|
85
|
+
if (typeof errorObject.message === 'string') {
|
|
86
|
+
if (isUserRejectedString(errorObject.message)) {
|
|
87
|
+
return hardware_errors_enums_1.ErrorCode.UserRejected;
|
|
88
|
+
}
|
|
89
|
+
if (isUserRejectionString(errorObject.message)) {
|
|
90
|
+
return hardware_errors_enums_1.ErrorCode.UserCancelled;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (typeof errorObject.code === 'string') {
|
|
94
|
+
if (isUserRejectedString(errorObject.code)) {
|
|
95
|
+
return hardware_errors_enums_1.ErrorCode.UserRejected;
|
|
96
|
+
}
|
|
97
|
+
if (isUserRejectionString(errorObject.code)) {
|
|
98
|
+
return hardware_errors_enums_1.ErrorCode.UserCancelled;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (errorObject.cause !== undefined) {
|
|
102
|
+
const causeCode = resolveUserRejectionErrorCode(errorObject.cause);
|
|
103
|
+
if (causeCode !== undefined) {
|
|
104
|
+
return causeCode;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (errorObject.originalError !== undefined) {
|
|
108
|
+
const originalCode = resolveUserRejectionErrorCode(errorObject.originalError);
|
|
109
|
+
if (originalCode !== undefined) {
|
|
110
|
+
return originalCode;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return hardware_errors_enums_1.ErrorCode.UserCancelled;
|
|
114
|
+
}
|
|
115
|
+
exports.resolveUserRejectionErrorCode = resolveUserRejectionErrorCode;
|
|
116
|
+
//# sourceMappingURL=user-rejection.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-rejection.cjs","sourceRoot":"","sources":["../src/user-rejection.ts"],"names":[],"mappings":"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","sourcesContent":["import { HardwareWalletError } from './hardware-error';\nimport { ErrorCode } from './hardware-errors-enums';\n\nconst PROVIDER_USER_REJECTED_CODE = 4001;\n\nconst USER_REJECTION_PATTERN =\n /(?:\\buser rejected\\b|\\baction cancelled\\b|\\bcancelled\\b|\\bcanceled\\b|failure_actioncancelled)/iu;\n\nconst USER_REJECTED_PATTERN = /\\buser rejected\\b/iu;\nconst PERMISSIONS_NOT_GRANTED_PATTERN = /\\bpermissions? not granted\\b/iu;\n\nconst USER_REJECTION_CODES = new Set<string>([\n 'Method_PermissionsNotGranted',\n 'Method_Cancel',\n 'Failure_ActionCancelled',\n]);\n\nfunction isUserRejectionString(value: string): boolean {\n return (\n USER_REJECTION_PATTERN.test(value) ||\n PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||\n USER_REJECTION_CODES.has(value)\n );\n}\n\nfunction isUserRejectedString(value: string): boolean {\n return (\n USER_REJECTED_PATTERN.test(value) ||\n PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||\n value === 'Method_PermissionsNotGranted'\n );\n}\n\ntype ErrorLikeObject = {\n code?: unknown;\n message?: unknown;\n name?: unknown;\n stack?: unknown;\n cause?: unknown;\n originalError?: unknown;\n};\n\nfunction isHardwareWalletConnectionClosedError(error: object): boolean {\n if (error instanceof HardwareWalletError) {\n return error.code === ErrorCode.ConnectionClosed;\n }\n\n const errorObject = error as ErrorLikeObject;\n return (\n errorObject.name === 'HardwareWalletError' &&\n errorObject.code === ErrorCode.ConnectionClosed\n );\n}\n\nfunction isProviderUserRejectedCode(code: unknown): boolean {\n return code === PROVIDER_USER_REJECTED_CODE;\n}\n\n/**\n * Recursively checks whether an error value represents a user rejection or\n * cancellation, mirroring detection used in MetaMask core signing flows.\n *\n * @param error - The error value to inspect.\n * @param visited - Set of already-visited objects to avoid infinite recursion.\n * @returns True when the error looks like a user rejection or cancellation.\n */\nexport function isUserRejectionLikeError(\n error: unknown,\n visited = new Set<unknown>(),\n): boolean {\n if (!error || visited.has(error)) {\n return false;\n }\n visited.add(error);\n\n if (typeof error === 'string') {\n return isUserRejectionString(error);\n }\n\n if (typeof error !== 'object') {\n return false;\n }\n\n const errorObject = error as ErrorLikeObject;\n\n if (isHardwareWalletConnectionClosedError(error)) {\n return false;\n }\n\n if (isProviderUserRejectedCode(errorObject.code)) {\n return true;\n }\n\n return (\n isUserRejectionLikeError(errorObject.code, visited) ||\n isUserRejectionLikeError(errorObject.message, visited) ||\n isUserRejectionLikeError(errorObject.stack, visited) ||\n isUserRejectionLikeError(errorObject.cause, visited) ||\n isUserRejectionLikeError(errorObject.originalError, visited)\n );\n}\n\n/**\n * Resolves a hardware-wallet error code for user rejection-like errors.\n *\n * @param error - The error value to inspect.\n * @returns `UserRejected` or `UserCancelled` when detected, otherwise `undefined`.\n */\nexport function resolveUserRejectionErrorCode(\n error: unknown,\n): ErrorCode.UserCancelled | ErrorCode.UserRejected | undefined {\n if (!isUserRejectionLikeError(error)) {\n return undefined;\n }\n\n if (typeof error === 'string') {\n return isUserRejectedString(error)\n ? ErrorCode.UserRejected\n : ErrorCode.UserCancelled;\n }\n\n const errorObject = error as ErrorLikeObject;\n\n if (typeof errorObject.message === 'string') {\n if (isUserRejectedString(errorObject.message)) {\n return ErrorCode.UserRejected;\n }\n if (isUserRejectionString(errorObject.message)) {\n return ErrorCode.UserCancelled;\n }\n }\n\n if (typeof errorObject.code === 'string') {\n if (isUserRejectedString(errorObject.code)) {\n return ErrorCode.UserRejected;\n }\n if (isUserRejectionString(errorObject.code)) {\n return ErrorCode.UserCancelled;\n }\n }\n\n if (errorObject.cause !== undefined) {\n const causeCode = resolveUserRejectionErrorCode(errorObject.cause);\n if (causeCode !== undefined) {\n return causeCode;\n }\n }\n\n if (errorObject.originalError !== undefined) {\n const originalCode = resolveUserRejectionErrorCode(\n errorObject.originalError,\n );\n if (originalCode !== undefined) {\n return originalCode;\n }\n }\n\n return ErrorCode.UserCancelled;\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ErrorCode } from "./hardware-errors-enums.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* Recursively checks whether an error value represents a user rejection or
|
|
4
|
+
* cancellation, mirroring detection used in MetaMask core signing flows.
|
|
5
|
+
*
|
|
6
|
+
* @param error - The error value to inspect.
|
|
7
|
+
* @param visited - Set of already-visited objects to avoid infinite recursion.
|
|
8
|
+
* @returns True when the error looks like a user rejection or cancellation.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isUserRejectionLikeError(error: unknown, visited?: Set<unknown>): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Resolves a hardware-wallet error code for user rejection-like errors.
|
|
13
|
+
*
|
|
14
|
+
* @param error - The error value to inspect.
|
|
15
|
+
* @returns `UserRejected` or `UserCancelled` when detected, otherwise `undefined`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveUserRejectionErrorCode(error: unknown): ErrorCode.UserCancelled | ErrorCode.UserRejected | undefined;
|
|
18
|
+
//# sourceMappingURL=user-rejection.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-rejection.d.cts","sourceRoot":"","sources":["../src/user-rejection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,oCAAgC;AAyDpD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,eAAqB,GAC3B,OAAO,CA+BT;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAgD9D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ErrorCode } from "./hardware-errors-enums.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Recursively checks whether an error value represents a user rejection or
|
|
4
|
+
* cancellation, mirroring detection used in MetaMask core signing flows.
|
|
5
|
+
*
|
|
6
|
+
* @param error - The error value to inspect.
|
|
7
|
+
* @param visited - Set of already-visited objects to avoid infinite recursion.
|
|
8
|
+
* @returns True when the error looks like a user rejection or cancellation.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isUserRejectionLikeError(error: unknown, visited?: Set<unknown>): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Resolves a hardware-wallet error code for user rejection-like errors.
|
|
13
|
+
*
|
|
14
|
+
* @param error - The error value to inspect.
|
|
15
|
+
* @returns `UserRejected` or `UserCancelled` when detected, otherwise `undefined`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveUserRejectionErrorCode(error: unknown): ErrorCode.UserCancelled | ErrorCode.UserRejected | undefined;
|
|
18
|
+
//# sourceMappingURL=user-rejection.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-rejection.d.mts","sourceRoot":"","sources":["../src/user-rejection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,oCAAgC;AAyDpD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,eAAqB,GAC3B,OAAO,CA+BT;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAgD9D"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { HardwareWalletError } from "./hardware-error.mjs";
|
|
2
|
+
import { ErrorCode } from "./hardware-errors-enums.mjs";
|
|
3
|
+
const PROVIDER_USER_REJECTED_CODE = 4001;
|
|
4
|
+
const USER_REJECTION_PATTERN = /(?:\buser rejected\b|\baction cancelled\b|\bcancelled\b|\bcanceled\b|failure_actioncancelled)/iu;
|
|
5
|
+
const USER_REJECTED_PATTERN = /\buser rejected\b/iu;
|
|
6
|
+
const PERMISSIONS_NOT_GRANTED_PATTERN = /\bpermissions? not granted\b/iu;
|
|
7
|
+
const USER_REJECTION_CODES = new Set([
|
|
8
|
+
'Method_PermissionsNotGranted',
|
|
9
|
+
'Method_Cancel',
|
|
10
|
+
'Failure_ActionCancelled',
|
|
11
|
+
]);
|
|
12
|
+
function isUserRejectionString(value) {
|
|
13
|
+
return (USER_REJECTION_PATTERN.test(value) ||
|
|
14
|
+
PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||
|
|
15
|
+
USER_REJECTION_CODES.has(value));
|
|
16
|
+
}
|
|
17
|
+
function isUserRejectedString(value) {
|
|
18
|
+
return (USER_REJECTED_PATTERN.test(value) ||
|
|
19
|
+
PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||
|
|
20
|
+
value === 'Method_PermissionsNotGranted');
|
|
21
|
+
}
|
|
22
|
+
function isHardwareWalletConnectionClosedError(error) {
|
|
23
|
+
if (error instanceof HardwareWalletError) {
|
|
24
|
+
return error.code === ErrorCode.ConnectionClosed;
|
|
25
|
+
}
|
|
26
|
+
const errorObject = error;
|
|
27
|
+
return (errorObject.name === 'HardwareWalletError' &&
|
|
28
|
+
errorObject.code === ErrorCode.ConnectionClosed);
|
|
29
|
+
}
|
|
30
|
+
function isProviderUserRejectedCode(code) {
|
|
31
|
+
return code === PROVIDER_USER_REJECTED_CODE;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Recursively checks whether an error value represents a user rejection or
|
|
35
|
+
* cancellation, mirroring detection used in MetaMask core signing flows.
|
|
36
|
+
*
|
|
37
|
+
* @param error - The error value to inspect.
|
|
38
|
+
* @param visited - Set of already-visited objects to avoid infinite recursion.
|
|
39
|
+
* @returns True when the error looks like a user rejection or cancellation.
|
|
40
|
+
*/
|
|
41
|
+
export function isUserRejectionLikeError(error, visited = new Set()) {
|
|
42
|
+
if (!error || visited.has(error)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
visited.add(error);
|
|
46
|
+
if (typeof error === 'string') {
|
|
47
|
+
return isUserRejectionString(error);
|
|
48
|
+
}
|
|
49
|
+
if (typeof error !== 'object') {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const errorObject = error;
|
|
53
|
+
if (isHardwareWalletConnectionClosedError(error)) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
if (isProviderUserRejectedCode(errorObject.code)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return (isUserRejectionLikeError(errorObject.code, visited) ||
|
|
60
|
+
isUserRejectionLikeError(errorObject.message, visited) ||
|
|
61
|
+
isUserRejectionLikeError(errorObject.stack, visited) ||
|
|
62
|
+
isUserRejectionLikeError(errorObject.cause, visited) ||
|
|
63
|
+
isUserRejectionLikeError(errorObject.originalError, visited));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolves a hardware-wallet error code for user rejection-like errors.
|
|
67
|
+
*
|
|
68
|
+
* @param error - The error value to inspect.
|
|
69
|
+
* @returns `UserRejected` or `UserCancelled` when detected, otherwise `undefined`.
|
|
70
|
+
*/
|
|
71
|
+
export function resolveUserRejectionErrorCode(error) {
|
|
72
|
+
if (!isUserRejectionLikeError(error)) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
if (typeof error === 'string') {
|
|
76
|
+
return isUserRejectedString(error)
|
|
77
|
+
? ErrorCode.UserRejected
|
|
78
|
+
: ErrorCode.UserCancelled;
|
|
79
|
+
}
|
|
80
|
+
const errorObject = error;
|
|
81
|
+
if (typeof errorObject.message === 'string') {
|
|
82
|
+
if (isUserRejectedString(errorObject.message)) {
|
|
83
|
+
return ErrorCode.UserRejected;
|
|
84
|
+
}
|
|
85
|
+
if (isUserRejectionString(errorObject.message)) {
|
|
86
|
+
return ErrorCode.UserCancelled;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (typeof errorObject.code === 'string') {
|
|
90
|
+
if (isUserRejectedString(errorObject.code)) {
|
|
91
|
+
return ErrorCode.UserRejected;
|
|
92
|
+
}
|
|
93
|
+
if (isUserRejectionString(errorObject.code)) {
|
|
94
|
+
return ErrorCode.UserCancelled;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (errorObject.cause !== undefined) {
|
|
98
|
+
const causeCode = resolveUserRejectionErrorCode(errorObject.cause);
|
|
99
|
+
if (causeCode !== undefined) {
|
|
100
|
+
return causeCode;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (errorObject.originalError !== undefined) {
|
|
104
|
+
const originalCode = resolveUserRejectionErrorCode(errorObject.originalError);
|
|
105
|
+
if (originalCode !== undefined) {
|
|
106
|
+
return originalCode;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return ErrorCode.UserCancelled;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=user-rejection.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-rejection.mjs","sourceRoot":"","sources":["../src/user-rejection.ts"],"names":[],"mappings":"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","sourcesContent":["import { HardwareWalletError } from './hardware-error';\nimport { ErrorCode } from './hardware-errors-enums';\n\nconst PROVIDER_USER_REJECTED_CODE = 4001;\n\nconst USER_REJECTION_PATTERN =\n /(?:\\buser rejected\\b|\\baction cancelled\\b|\\bcancelled\\b|\\bcanceled\\b|failure_actioncancelled)/iu;\n\nconst USER_REJECTED_PATTERN = /\\buser rejected\\b/iu;\nconst PERMISSIONS_NOT_GRANTED_PATTERN = /\\bpermissions? not granted\\b/iu;\n\nconst USER_REJECTION_CODES = new Set<string>([\n 'Method_PermissionsNotGranted',\n 'Method_Cancel',\n 'Failure_ActionCancelled',\n]);\n\nfunction isUserRejectionString(value: string): boolean {\n return (\n USER_REJECTION_PATTERN.test(value) ||\n PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||\n USER_REJECTION_CODES.has(value)\n );\n}\n\nfunction isUserRejectedString(value: string): boolean {\n return (\n USER_REJECTED_PATTERN.test(value) ||\n PERMISSIONS_NOT_GRANTED_PATTERN.test(value) ||\n value === 'Method_PermissionsNotGranted'\n );\n}\n\ntype ErrorLikeObject = {\n code?: unknown;\n message?: unknown;\n name?: unknown;\n stack?: unknown;\n cause?: unknown;\n originalError?: unknown;\n};\n\nfunction isHardwareWalletConnectionClosedError(error: object): boolean {\n if (error instanceof HardwareWalletError) {\n return error.code === ErrorCode.ConnectionClosed;\n }\n\n const errorObject = error as ErrorLikeObject;\n return (\n errorObject.name === 'HardwareWalletError' &&\n errorObject.code === ErrorCode.ConnectionClosed\n );\n}\n\nfunction isProviderUserRejectedCode(code: unknown): boolean {\n return code === PROVIDER_USER_REJECTED_CODE;\n}\n\n/**\n * Recursively checks whether an error value represents a user rejection or\n * cancellation, mirroring detection used in MetaMask core signing flows.\n *\n * @param error - The error value to inspect.\n * @param visited - Set of already-visited objects to avoid infinite recursion.\n * @returns True when the error looks like a user rejection or cancellation.\n */\nexport function isUserRejectionLikeError(\n error: unknown,\n visited = new Set<unknown>(),\n): boolean {\n if (!error || visited.has(error)) {\n return false;\n }\n visited.add(error);\n\n if (typeof error === 'string') {\n return isUserRejectionString(error);\n }\n\n if (typeof error !== 'object') {\n return false;\n }\n\n const errorObject = error as ErrorLikeObject;\n\n if (isHardwareWalletConnectionClosedError(error)) {\n return false;\n }\n\n if (isProviderUserRejectedCode(errorObject.code)) {\n return true;\n }\n\n return (\n isUserRejectionLikeError(errorObject.code, visited) ||\n isUserRejectionLikeError(errorObject.message, visited) ||\n isUserRejectionLikeError(errorObject.stack, visited) ||\n isUserRejectionLikeError(errorObject.cause, visited) ||\n isUserRejectionLikeError(errorObject.originalError, visited)\n );\n}\n\n/**\n * Resolves a hardware-wallet error code for user rejection-like errors.\n *\n * @param error - The error value to inspect.\n * @returns `UserRejected` or `UserCancelled` when detected, otherwise `undefined`.\n */\nexport function resolveUserRejectionErrorCode(\n error: unknown,\n): ErrorCode.UserCancelled | ErrorCode.UserRejected | undefined {\n if (!isUserRejectionLikeError(error)) {\n return undefined;\n }\n\n if (typeof error === 'string') {\n return isUserRejectedString(error)\n ? ErrorCode.UserRejected\n : ErrorCode.UserCancelled;\n }\n\n const errorObject = error as ErrorLikeObject;\n\n if (typeof errorObject.message === 'string') {\n if (isUserRejectedString(errorObject.message)) {\n return ErrorCode.UserRejected;\n }\n if (isUserRejectionString(errorObject.message)) {\n return ErrorCode.UserCancelled;\n }\n }\n\n if (typeof errorObject.code === 'string') {\n if (isUserRejectedString(errorObject.code)) {\n return ErrorCode.UserRejected;\n }\n if (isUserRejectionString(errorObject.code)) {\n return ErrorCode.UserCancelled;\n }\n }\n\n if (errorObject.cause !== undefined) {\n const causeCode = resolveUserRejectionErrorCode(errorObject.cause);\n if (causeCode !== undefined) {\n return causeCode;\n }\n }\n\n if (errorObject.originalError !== undefined) {\n const originalCode = resolveUserRejectionErrorCode(\n errorObject.originalError,\n );\n if (originalCode !== undefined) {\n return originalCode;\n }\n }\n\n return ErrorCode.UserCancelled;\n}\n"]}
|