@pbpeterson/typed-fetch
Version:
A type-safe HTTP client that never throws. Inspired by Go's error handling pattern.
2 lines • 10.7 kB
JavaScript
'use strict';var ie=require('is-network-error');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ie__default=/*#__PURE__*/_interopDefault(ie);var t=class extends Error{constructor(r){super();this.response=r;this.headers=r.headers;}async json(){return this.response.json()}async text(){return this.response.text()}async blob(){return this.response.blob()}async arrayBuffer(){return this.response.arrayBuffer()}};var Xr=500,Dr="Internal Server Error",Y=class Y extends t{constructor(r){super(r);this.status=Xr;this.statusText=Dr;}clone(){return new Y(this.response.clone())}};Y.status=Xr,Y.statusText=Dr;var s=Y;var Fr=400,Pr="Bad Request",W=class W extends t{constructor(r){super(r);this.status=Fr;this.statusText=Pr;}clone(){return new W(this.response.clone())}};W.status=Fr,W.statusText=Pr;var n=W;var qr=402,Cr="Payment Required",j=class j extends t{constructor(r){super(r);this.status=qr;this.statusText=Cr;}clone(){return new j(this.response.clone())}};j.status=qr,j.statusText=Cr;var a=j;var Mr=401,Gr="Unauthorized",z=class z extends t{constructor(r){super(r);this.status=Mr;this.statusText=Gr;}clone(){return new z(this.response.clone())}};z.status=Mr,z.statusText=Gr;var p=z;var kr=403,vr="Forbidden",K=class K extends t{constructor(r){super(r);this.status=kr;this.statusText=vr;}clone(){return new K(this.response.clone())}};K.status=kr,K.statusText=vr;var i=K;var Qr=404,Vr="Not Found",Z=class Z extends t{constructor(r){super(r);this.status=Qr;this.statusText=Vr;}clone(){return new Z(this.response.clone())}};Z.status=Qr,Z.statusText=Vr;var u=Z;var Jr=405,Yr="Method Not Allowed",$=class $ extends t{constructor(r){super(r);this.status=Jr;this.statusText=Yr;}clone(){return new $(this.response.clone())}};$.status=Jr,$.statusText=Yr;var c=$;var Wr=406,jr="Not Acceptable",rr=class rr extends t{constructor(r){super(r);this.status=Wr;this.statusText=jr;}clone(){return new rr(this.response.clone())}};rr.status=Wr,rr.statusText=jr;var l=rr;var zr=407,Kr="Proxy Authentication Required",tr=class tr extends t{constructor(r){super(r);this.status=zr;this.statusText=Kr;}clone(){return new tr(this.response.clone())}};tr.status=zr,tr.statusText=Kr;var T=tr;var Zr=408,$r="Request Timeout",er=class er extends t{constructor(r){super(r);this.status=Zr;this.statusText=$r;}clone(){return new er(this.response.clone())}};er.status=Zr,er.statusText=$r;var m=er;var rt=409,tt="Conflict",or=class or extends t{constructor(r){super(r);this.status=rt;this.statusText=tt;}clone(){return new or(this.response.clone())}};or.status=rt,or.statusText=tt;var E=or;var et=410,ot="Gone",sr=class sr extends t{constructor(r){super(r);this.status=et;this.statusText=ot;}clone(){return new sr(this.response.clone())}};sr.status=et,sr.statusText=ot;var R=sr;var st=411,nt="Length Required",nr=class nr extends t{constructor(r){super(r);this.status=st;this.statusText=nt;}clone(){return new nr(this.response.clone())}};nr.status=st,nr.statusText=nt;var d=nr;var at=412,pt="Precondition Failed",ar=class ar extends t{constructor(r){super(r);this.status=at;this.statusText=pt;}clone(){return new ar(this.response.clone())}};ar.status=at,ar.statusText=pt;var y=ar;var it=413,ut="Payload Too Large",pr=class pr extends t{constructor(r){super(r);this.status=it;this.statusText=ut;}clone(){return new pr(this.response.clone())}};pr.status=it,pr.statusText=ut;var x=pr;var ct=414,lt="URI Too Long",ir=class ir extends t{constructor(r){super(r);this.status=ct;this.statusText=lt;}clone(){return new ir(this.response.clone())}};ir.status=ct,ir.statusText=lt;var f=ir;var Tt=415,mt="Unsupported Media Type",ur=class ur extends t{constructor(r){super(r);this.status=Tt;this.statusText=mt;}clone(){return new ur(this.response.clone())}};ur.status=Tt,ur.statusText=mt;var S=ur;var Et=416,Rt="Range Not Satisfiable",cr=class cr extends t{constructor(r){super(r);this.status=Et;this.statusText=Rt;}clone(){return new cr(this.response.clone())}};cr.status=Et,cr.statusText=Rt;var b=cr;var dt=417,yt="Expectation Failed",lr=class lr extends t{constructor(r){super(r);this.status=dt;this.statusText=yt;}clone(){return new lr(this.response.clone())}};lr.status=dt,lr.statusText=yt;var A=lr;var xt=418,ft="I'm a teapot",Tr=class Tr extends t{constructor(r){super(r);this.status=xt;this.statusText=ft;}clone(){return new Tr(this.response.clone())}};Tr.status=xt,Tr.statusText=ft;var U=Tr;var St=421,bt="Misdirected Request",mr=class mr extends t{constructor(r){super(r);this.status=St;this.statusText=bt;}clone(){return new mr(this.response.clone())}};mr.status=St,mr.statusText=bt;var O=mr;var At=422,Ut="Unprocessable Entity",Er=class Er extends t{constructor(r){super(r);this.status=At;this.statusText=Ut;}clone(){return new Er(this.response.clone())}};Er.status=At,Er.statusText=Ut;var g=Er;var Ot=423,gt="Locked",Rr=class Rr extends t{constructor(r){super(r);this.status=Ot;this.statusText=gt;}clone(){return new Rr(this.response.clone())}};Rr.status=Ot,Rr.statusText=gt;var _=Rr;var _t=424,ht="Failed Dependency",dr=class dr extends t{constructor(r){super(r);this.status=_t;this.statusText=ht;}clone(){return new dr(this.response.clone())}};dr.status=_t,dr.statusText=ht;var h=dr;var Nt=425,wt="Too Early",yr=class yr extends t{constructor(r){super(r);this.status=Nt;this.statusText=wt;}clone(){return new yr(this.response.clone())}};yr.status=Nt,yr.statusText=wt;var N=yr;var Ht=426,Bt="Upgrade Required",xr=class xr extends t{constructor(r){super(r);this.status=Ht;this.statusText=Bt;}clone(){return new xr(this.response.clone())}};xr.status=Ht,xr.statusText=Bt;var w=xr;var It=428,Lt="Precondition Required",fr=class fr extends t{constructor(r){super(r);this.status=It;this.statusText=Lt;}clone(){return new fr(this.response.clone())}};fr.status=It,fr.statusText=Lt;var H=fr;var Xt=429,Dt="Too Many Requests",Sr=class Sr extends t{constructor(r){super(r);this.status=Xt;this.statusText=Dt;}clone(){return new Sr(this.response.clone())}};Sr.status=Xt,Sr.statusText=Dt;var B=Sr;var Ft=431,Pt="Request Header Fields Too Large",br=class br extends t{constructor(r){super(r);this.status=Ft;this.statusText=Pt;}clone(){return new br(this.response.clone())}};br.status=Ft,br.statusText=Pt;var I=br;var qt=451,Ct="Unavailable For Legal Reasons",Ar=class Ar extends t{constructor(r){super(r);this.status=qt;this.statusText=Ct;}clone(){return new Ar(this.response.clone())}};Ar.status=qt,Ar.statusText=Ct;var L=Ar;var Mt=501,Gt="Not Implemented",Ur=class Ur extends t{constructor(r){super(r);this.status=Mt;this.statusText=Gt;}clone(){return new Ur(this.response.clone())}};Ur.status=Mt,Ur.statusText=Gt;var X=Ur;var kt=502,vt="Bad Gateway",Or=class Or extends t{constructor(r){super(r);this.status=kt;this.statusText=vt;}clone(){return new Or(this.response.clone())}};Or.status=kt,Or.statusText=vt;var D=Or;var Qt=503,Vt="Service Unavailable",gr=class gr extends t{constructor(r){super(r);this.status=Qt;this.statusText=Vt;}clone(){return new gr(this.response.clone())}};gr.status=Qt,gr.statusText=Vt;var F=gr;var Jt=504,Yt="Gateway Timeout",_r=class _r extends t{constructor(r){super(r);this.status=Jt;this.statusText=Yt;}clone(){return new _r(this.response.clone())}};_r.status=Jt,_r.statusText=Yt;var P=_r;var Wt=505,jt="HTTP Version Not Supported",hr=class hr extends t{constructor(r){super(r);this.status=Wt;this.statusText=jt;}clone(){return new hr(this.response.clone())}};hr.status=Wt,hr.statusText=jt;var q=hr;var zt=506,Kt="Variant Also Negotiates",Nr=class Nr extends t{constructor(r){super(r);this.status=zt;this.statusText=Kt;}clone(){return new Nr(this.response.clone())}};Nr.status=zt,Nr.statusText=Kt;var C=Nr;var Zt=507,$t="Insufficient Storage",wr=class wr extends t{constructor(r){super(r);this.status=Zt;this.statusText=$t;}clone(){return new wr(this.response.clone())}};wr.status=Zt,wr.statusText=$t;var M=wr;var re=508,te="Loop Detected",Hr=class Hr extends t{constructor(r){super(r);this.status=re;this.statusText=te;}clone(){return new Hr(this.response.clone())}};Hr.status=re,Hr.statusText=te;var G=Hr;var ee=510,oe="Not Extended",Br=class Br extends t{constructor(r){super(r);this.status=ee;this.statusText=oe;}clone(){return new Br(this.response.clone())}};Br.status=ee,Br.statusText=oe;var k=Br;var se=511,ne="Network Authentication Required",Ir=class Ir extends t{constructor(r){super(r);this.status=se;this.statusText=ne;}clone(){return new Ir(this.response.clone())}};Ir.status=se,Ir.statusText=ne;var v=Ir;var ae=[D,n,E,A,h,i,P,R,q,U,M,s,d,_,G,c,O,v,l,k,u,X,a,y,H,T,b,I,m,x,f,F,N,B,p,L,g,S,w,C];var pe=new Map([[400,n],[401,p],[402,a],[403,i],[404,u],[405,c],[406,l],[407,T],[408,m],[409,E],[410,R],[411,d],[412,y],[413,x],[414,f],[415,S],[416,b],[417,A],[418,U],[421,O],[422,g],[423,_],[424,h],[425,N],[426,w],[428,H],[429,B],[431,I],[451,L],[500,s],[501,X],[502,D],[503,F],[504,P],[505,q],[506,C],[507,M],[508,G],[510,k],[511,v]]);var Q=class extends Error{constructor(e="Network error"){super(e);}};function ue(V){return ae.some(e=>V instanceof e)}async function ce(V,e={}){let r=null,J=null;try{let o=await fetch(V,e);if(!o.ok){let Lr=pe.get(o.status);if(Lr)throw new Lr(o)}r=o;}catch(o){return ue(o)||o instanceof Q?J=o:ie__default.default(o)?J=new Q(o instanceof Error?o.message:"Network error"):J=new Q(o instanceof Error?o.message:"Unknown error"),{response:null,error:J}}return {response:r,error:J}}exports.BadGatewayError=D;exports.BadRequestError=n;exports.ConflictError=E;exports.ExpectationFailedError=A;exports.FailedDependencyError=h;exports.ForbiddenError=i;exports.GatewayTimeoutError=P;exports.GoneError=R;exports.HttpVersionNotSupportedError=q;exports.ImATeapotError=U;exports.InsufficientStorageError=M;exports.InternalServerError=s;exports.LengthRequiredError=d;exports.LockedError=_;exports.LoopDetectedError=G;exports.MethodNotAllowedError=c;exports.MisdirectedRequestError=O;exports.NetworkAuthenticationRequiredError=v;exports.NetworkError=Q;exports.NotAcceptableError=l;exports.NotExtendedError=k;exports.NotFoundError=u;exports.NotImplementedError=X;exports.PaymentRequiredError=a;exports.PreconditionFailedError=y;exports.PreconditionRequiredError=H;exports.ProxyAuthenticationRequiredError=T;exports.RequestHeaderFieldsTooLargeError=I;exports.RequestTimeoutError=m;exports.RequestTooLongError=x;exports.RequestUriTooLongError=f;exports.RequestedRangeNotSatisfiableError=b;exports.ServiceUnavailableError=F;exports.TooEarlyError=N;exports.TooManyRequestsError=B;exports.UnauthorizedError=p;exports.UnavailableForLegalReasonsError=L;exports.UnprocessableEntityError=g;exports.UnsupportedMediaTypeError=S;exports.UpgradeRequiredError=w;exports.VariantAlsoNegotiatesError=C;exports.typedFetch=ce;//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map