UNPKG

request-json-rpc2

Version:

Simplified JSON-RPC2 request nodejs and browser client

3 lines (2 loc) 1.15 kB
import{Buffer as e}from"buffer";var r=async({url:r,body:a,headers:s={},auth:t,signature:o,dev:n=!1,credentials:d="omit"},p)=>{let i=new Headers;if(Object.keys(s).forEach(e=>{i.append(e,s[e])}),i.has("Accept")||i.append("Accept","application/json"),i.has("Content-Type")||i.append("Content-Type","application/json"),o&&i.append("Signature",JSON.stringify(o)),t&&t.user&&t.pass){let r="Basic "+e.from(t.user+":"+t.pass).toString("base64");i.set("Authorization",r)}let c={jsonrpc:"2.0",method:a.method};return(a.id&&(c.id=a.id),a.params&&"object"!=typeof a.params)?{jsonrpc:"2.0",error:{code:-32602,message:"Invalid params"},id:null}:(a.params&&(c.params=a.params),fetch(r,{body:JSON.stringify(c),headers:i,method:"POST",credentials:d,signal:AbortSignal.timeout(3e4)}).then(e=>{if(e.status>=400)throw Error(e.statusText);return e.json()}).then(e=>"InternalServerError"===e.name?{jsonrpc:"2.0",error:{code:e.code,message:e.message},id:null}:e).catch(({message:e})=>"Not Found"===e?{jsonrpc:"2.0",error:{code:-32603,message:e},id:null}:{jsonrpc:"2.0",error:{code:-32099,message:e},id:null}))};export{r as default}; //# sourceMappingURL=index.mjs.map