UNPKG

eth-onekey-bridge-keyring

Version:
1 lines 12.5 kB
{"version":3,"file":"onekey-web-bridge.cjs","sourceRoot":"","sources":["../src/onekey-web-bridge.ts"],"names":[],"mappings":"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","sourcesContent":["import { UI_REQUEST, UI_RESPONSE } from '@onekeyfe/hd-core';\nimport type {\n ConnectSettings,\n CoreApi,\n EVMSignedTx,\n EVMSignMessageParams,\n EVMSignTransactionParams,\n EVMSignTypedDataParams,\n Params,\n UiEvent,\n Unsuccessful,\n} from '@onekeyfe/hd-core';\nimport { HardwareErrorCode } from '@onekeyfe/hd-shared';\nimport type { EthereumMessageSignature } from '@onekeyfe/hd-transport';\nimport hardwareWebSdk from '@onekeyfe/hd-web-sdk';\n\nimport type { OneKeyBridge } from './onekey-bridge';\n\nexport type OneKeyIframeBridgeOptions = {\n bridgeUrl: string;\n};\n\nexport class OneKeyWebBridge implements OneKeyBridge {\n isSDKInitialized = false;\n\n sdk: CoreApi | undefined = undefined;\n\n model?: string | undefined;\n\n #onUIEvent?: ((event: Unsuccessful['payload']) => void) | undefined;\n\n #handleBlockErrorEvent(payload: Unsuccessful): void {\n const { code } = payload.payload;\n const errorCodes: number[] = [\n HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission,\n HardwareErrorCode.BridgeNotInstalled,\n HardwareErrorCode.NewFirmwareForceUpdate,\n HardwareErrorCode.NotAllowInBootloaderMode,\n HardwareErrorCode.CallMethodNeedUpgradeFirmware,\n HardwareErrorCode.DeviceCheckPassphraseStateError,\n HardwareErrorCode.DeviceCheckUnlockTypeError,\n HardwareErrorCode.SelectDevice,\n ];\n\n if (code && typeof code === 'number' && errorCodes.includes(code)) {\n this.#onUIEvent?.(payload.payload);\n }\n }\n\n async updateTransportMethod(\n transportType: ConnectSettings['env'],\n ): Promise<void> {\n if (!this.sdk) {\n return;\n }\n await this.sdk.switchTransport(transportType);\n }\n\n setUiEventCallback(callback: (event: Unsuccessful['payload']) => void): void {\n this.#onUIEvent = callback;\n }\n\n async init(): Promise<void> {\n if (this.isSDKInitialized) {\n return;\n }\n\n const settings: Partial<ConnectSettings> = {\n debug: false,\n fetchConfig: false,\n connectSrc: 'https://jssdk.onekey.so/1.1.0/',\n env: 'webusb',\n };\n try {\n await hardwareWebSdk.HardwareWebSdk.init(\n settings,\n hardwareWebSdk.HardwareSDKLowLevel,\n );\n this.isSDKInitialized = true;\n this.sdk = hardwareWebSdk.HardwareWebSdk;\n\n this.sdk?.on('UI_EVENT', (originEvent: UiEvent) => {\n if (originEvent.type === UI_REQUEST.REQUEST_PIN) {\n this.sdk?.uiResponse({\n type: UI_RESPONSE.RECEIVE_PIN,\n payload: '@@ONEKEY_INPUT_PIN_IN_DEVICE',\n });\n }\n if (originEvent.type === UI_REQUEST.REQUEST_PASSPHRASE) {\n this.sdk?.uiResponse({\n type: UI_RESPONSE.RECEIVE_PASSPHRASE,\n payload: {\n value: '',\n passphraseOnDevice: true,\n save: false,\n },\n });\n }\n });\n } catch {\n this.isSDKInitialized = false;\n }\n }\n\n async destroy(): Promise<void> {\n this.isSDKInitialized = false;\n this.sdk = undefined;\n }\n\n async dispose(): Promise<void> {\n this.sdk?.dispose();\n return Promise.resolve();\n }\n\n getModel(): string | undefined {\n return this.model;\n }\n\n async getPublicKey(params: {\n path: string;\n coin: string;\n }): Promise<\n | { success: false; payload: { error: string; code?: string | number } }\n | { success: true; payload: { publicKey: string; chainCode: string } }\n > {\n if (!this.sdk) {\n return {\n success: false,\n payload: {\n error: 'SDK not initialized',\n code: HardwareErrorCode.NotInitialized,\n },\n };\n }\n return await this.sdk\n .evmGetPublicKey('', '', { ...params, skipPassphraseCheck: true })\n .then((result) => {\n if (result?.success) {\n return {\n success: true,\n payload: {\n publicKey: result.payload.pub,\n chainCode: result.payload.node.chain_code,\n },\n };\n }\n this.#handleBlockErrorEvent(result);\n return {\n success: false,\n payload: {\n error: result?.payload.error ?? '',\n code:\n typeof result?.payload?.code === 'number'\n ? result?.payload?.code\n : undefined,\n },\n };\n });\n }\n\n async getPassphraseState(): Promise<\n | { success: false; payload: { error: string; code?: string | number } }\n | { success: true; payload: string | undefined }\n > {\n if (!this.sdk) {\n return {\n success: false,\n payload: {\n error: 'SDK not initialized',\n code: HardwareErrorCode.NotInitialized,\n },\n };\n }\n return await this.sdk.getPassphraseState('').then((result) => {\n if (!result?.success) {\n this.#handleBlockErrorEvent(result);\n }\n return result;\n });\n }\n\n async ethereumSignTransaction(\n params: Params<EVMSignTransactionParams>,\n ): Promise<\n | { success: false; payload: { error: string; code?: string | number } }\n | { success: true; payload: EVMSignedTx }\n > {\n if (!this.sdk) {\n return {\n success: false,\n payload: {\n error: 'SDK not initialized',\n code: HardwareErrorCode.NotInitialized,\n },\n };\n }\n return await this.sdk\n .evmSignTransaction('', '', {\n ...params,\n skipPassphraseCheck: true,\n })\n .then((result) => {\n if (!result?.success) {\n this.#handleBlockErrorEvent(result);\n }\n return result;\n });\n }\n\n async ethereumSignMessage(\n params: Params<EVMSignMessageParams>,\n ): Promise<\n | { success: false; payload: { error: string; code?: string | number } }\n | { success: true; payload: EthereumMessageSignature }\n > {\n if (!this.sdk) {\n return {\n success: false,\n payload: {\n error: 'SDK not initialized',\n code: HardwareErrorCode.NotInitialized,\n },\n };\n }\n return await this.sdk\n .evmSignMessage('', '', {\n ...params,\n skipPassphraseCheck: true,\n })\n .then((result) => {\n if (!result?.success) {\n this.#handleBlockErrorEvent(result);\n }\n return result;\n });\n }\n\n async ethereumSignTypedData(\n params: Params<EVMSignTypedDataParams>,\n ): Promise<\n | { success: false; payload: { error: string; code?: string | number } }\n | { success: true; payload: EthereumMessageSignature }\n > {\n if (!this.sdk) {\n return {\n success: false,\n payload: {\n error: 'SDK not initialized',\n code: HardwareErrorCode.NotInitialized,\n },\n };\n }\n return await this.sdk\n .evmSignTypedData('', '', {\n ...params,\n skipPassphraseCheck: true,\n })\n .then((result) => {\n if (!result?.success) {\n this.#handleBlockErrorEvent(result);\n }\n return result;\n });\n }\n}\n"]}