UNPKG

@didtools/pkh-ethereum

Version:

Implements support to authenticate, authorize and verify with Ethereum accounts as a did:pkh with SIWE(X) and CACAO. Primarly used with `did-session` and `@didtools/cacao`.

47 lines (46 loc) 1.66 kB
/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-argument */ // TODO types import { AccountId } from 'caip'; export function safeSend(provider, method, params) { if (params == null) { params = []; } if (provider.request) { return provider.request({ method, params }).then((response)=>response, (error)=>{ throw error; }); } else if (provider.sendAsync || provider.send) { const sendFunc = (provider.sendAsync ? provider.sendAsync : provider.send).bind(provider); const request = encodeRpcMessage(method, params); return new Promise((resolve, reject)=>{ sendFunc(request, (error, response)=>{ if (error) reject(error); if (response.error) { const error = new Error(response.error.message); error.code = response.error.code; error.data = response.error.data; reject(error); } resolve(response.result); }); }); } else { throw new Error(`Unsupported provider; provider must implement one of the following methods: send, sendAsync, request`); } } export function encodeRpcMessage(method, params) { return { jsonrpc: '2.0', id: 1, method, params }; } export function normalizeAccountId(input) { return new AccountId({ address: input.address.toLowerCase(), chainId: input.chainId }); }