simple-typed-fetch
Version:
Making HTTP requests human way
2 lines • 8.98 kB
JavaScript
;var stf=(()=>{var $=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var V=(t,r)=>{for(var e in r)$(t,e,{get:r[e],enumerable:!0})},J=(t,r,e,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of C(r))!H.call(t,s)&&s!==e&&$(t,s,{get:()=>r[s],enumerable:!(n=z(r,s))||n.enumerable});return t};var N=t=>J($({},"__esModule",{value:!0}),t);var B={};V(B,{fetchWithValidation:()=>S,simpleFetch:()=>U});var F={withStackTrace:!1},A=(t,r,e=F)=>{let n=r.isOk()?{type:"Ok",value:r.value}:{type:"Err",value:r.error},s=e.withStackTrace?new Error().stack:void 0;return{data:n,message:t,stack:s}};function b(t,r,e,n){function s(o){return o instanceof e?o:new e(function(c){c(o)})}return new(e||(e=Promise))(function(o,c){function a(h){try{y(n.next(h))}catch(l){c(l)}}function m(h){try{y(n.throw(h))}catch(l){c(l)}}function y(h){h.done?o(h.value):s(h.value).then(a,m)}y((n=n.apply(t,r||[])).next())})}function R(t){var r=typeof Symbol=="function"&&Symbol.iterator,e=r&&t[r],n=0;if(e)return e.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}function E(t){return this instanceof E?(this.v=t,this):new E(t)}function D(t,r,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=e.apply(t,r||[]),s,o=[];return s=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",c),s[Symbol.asyncIterator]=function(){return this},s;function c(i){return function(w){return Promise.resolve(w).then(i,l)}}function a(i,w){n[i]&&(s[i]=function(T){return new Promise(function(P,u){o.push([i,T,P,u])>1||m(i,T)})},w&&(s[i]=w(s[i])))}function m(i,w){try{y(n[i](w))}catch(T){_(o[0][3],T)}}function y(i){i.value instanceof E?Promise.resolve(i.value.v).then(h,l):_(o[0][2],i)}function h(i){m("next",i)}function l(i){m("throw",i)}function _(i,w){i(w),o.shift(),o.length&&m(o[0][0],o[0][1])}}function q(t){var r,e;return r={},n("next"),n("throw",function(s){throw s}),n("return"),r[Symbol.iterator]=function(){return this},r;function n(s,o){r[s]=t[s]?function(c){return(e=!e)?{value:E(t[s](c)),done:!1}:o?o(c):c}:o}}function M(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=t[Symbol.asyncIterator],e;return r?r.call(t):(t=typeof R=="function"?R(t):t[Symbol.iterator](),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(o){e[o]=t[o]&&function(c){return new Promise(function(a,m){c=t[o](c),s(a,m,c.done,c.value)})}}function s(o,c,a,m){Promise.resolve(m).then(function(y){o({value:y,done:a})},c)}}var O=class t{constructor(r){this._promise=r}static fromSafePromise(r){let e=r.then(n=>new d(n));return new t(e)}static fromPromise(r,e){let n=r.then(s=>new d(s)).catch(s=>new p(e(s)));return new t(n)}static fromThrowable(r,e){return(...n)=>new t(b(this,void 0,void 0,function*(){try{return new d(yield r(...n))}catch(s){return new p(e?e(s):s)}}))}static combine(r){return Z(r)}static combineWithAllErrors(r){return G(r)}map(r){return new t(this._promise.then(e=>b(this,void 0,void 0,function*(){return e.isErr()?new p(e.error):new d(yield r(e.value))})))}andThrough(r){return new t(this._promise.then(e=>b(this,void 0,void 0,function*(){if(e.isErr())return new p(e.error);let n=yield r(e.value);return n.isErr()?new p(n.error):new d(e.value)})))}andTee(r){return new t(this._promise.then(e=>b(this,void 0,void 0,function*(){if(e.isErr())return new p(e.error);try{yield r(e.value)}catch{}return new d(e.value)})))}mapErr(r){return new t(this._promise.then(e=>b(this,void 0,void 0,function*(){return e.isOk()?new d(e.value):new p(yield r(e.error))})))}andThen(r){return new t(this._promise.then(e=>{if(e.isErr())return new p(e.error);let n=r(e.value);return n instanceof t?n._promise:n}))}orElse(r){return new t(this._promise.then(e=>b(this,void 0,void 0,function*(){return e.isErr()?r(e.error):new d(e.value)})))}match(r,e){return this._promise.then(n=>n.match(r,e))}unwrapOr(r){return this._promise.then(e=>e.unwrapOr(r))}safeUnwrap(){return D(this,arguments,function*(){return yield E(yield E(yield*q(M(yield E(this._promise.then(e=>e.safeUnwrap()))))))})}then(r,e){return this._promise.then(r,e)}[Symbol.asyncIterator](){return D(this,arguments,function*(){let e=yield E(this._promise);return e.isErr()&&(yield yield E(g(e.error))),yield E(e.value)})}};var g=t=>new O(Promise.resolve(new p(t))),I=O.fromPromise,Q=O.fromSafePromise,X=O.fromThrowable,L=t=>{let r=v([]);for(let e of t)if(e.isErr()){r=f(e.error);break}else r.map(n=>n.push(e.value));return r},Z=t=>O.fromSafePromise(Promise.all(t)).andThen(L),W=t=>{let r=v([]);for(let e of t)e.isErr()&&r.isErr()?r.error.push(e.error):e.isErr()&&r.isOk()?r=f([e.error]):e.isOk()&&r.isOk()&&r.value.push(e.value);return r},G=t=>O.fromSafePromise(Promise.all(t)).andThen(W),k;(function(t){function r(s,o){return(...c)=>{try{let a=s(...c);return v(a)}catch(a){return f(o?o(a):a)}}}t.fromThrowable=r;function e(s){return L(s)}t.combine=e;function n(s){return W(s)}t.combineWithAllErrors=n})(k||(k={}));var v=t=>new d(t);function f(t){return new p(t)}var d=class{constructor(r){this.value=r}isOk(){return!0}isErr(){return!this.isOk()}map(r){return v(r(this.value))}mapErr(r){return v(this.value)}andThen(r){return r(this.value)}andThrough(r){return r(this.value).map(e=>this.value)}andTee(r){try{r(this.value)}catch{}return v(this.value)}orElse(r){return v(this.value)}asyncAndThen(r){return r(this.value)}asyncAndThrough(r){return r(this.value).map(()=>this.value)}asyncMap(r){return O.fromSafePromise(r(this.value))}unwrapOr(r){return this.value}match(r,e){return r(this.value)}safeUnwrap(){let r=this.value;return function*(){return r}()}_unsafeUnwrap(r){return this.value}_unsafeUnwrapErr(r){throw A("Called `_unsafeUnwrapErr` on an Ok",this,r)}*[Symbol.iterator](){return this.value}},p=class{constructor(r){this.error=r}isOk(){return!1}isErr(){return!this.isOk()}map(r){return f(this.error)}mapErr(r){return f(r(this.error))}andThrough(r){return f(this.error)}andTee(r){return f(this.error)}andThen(r){return f(this.error)}orElse(r){return r(this.error)}asyncAndThen(r){return g(this.error)}asyncAndThrough(r){return g(this.error)}asyncMap(r){return g(this.error)}unwrapOr(r){return r}match(r,e){return e(this.error)}safeUnwrap(){let r=this.error;return function*(){throw yield f(r),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(r){throw A("Called `_unsafeUnwrap` on an Err",this,r)}_unsafeUnwrapErr(r){return this.error}*[Symbol.iterator](){let r=this;return yield r,r}},j=k.fromThrowable;async function S(t,r,e,n){let s={...e,headers:e?.headers??{}},o={requestOptions:s,url:t},c=await I(fetch(t,s),u=>u instanceof Error?f({type:"fetchError",...o,message:`Fetch error: ${u.message}. URL: ${t}`,error:u}):f({type:"unknownFetchThrow",...o,message:`Unknown fetch error. URL: ${t}`,error:u}));if(c.isErr())return c.error;let a=c.value,m={...o,response:a},y=await I(a.text(),u=>u instanceof Error?f({type:"unknownGetTextError",...m,message:`Can't get response content: ${u.message}. URL: ${t}. HTTP ${a.status}`,error:u}):f({type:"unknownGetTextUnknownError",...m,message:`Can't get response content: Unknown error. URL: ${t}. HTTP ${a.status}`,error:u}));if(y.isErr())return y.error;let h=y.value,l={...m,text:h},i=j(JSON.parse,u=>u instanceof Error?f({type:"jsonParseError",...l,message:`Can't parse response as JSON: ${u.message}. URL: ${t}. HTTP ${a.status}. Original response: ${h}`,error:u}):f({type:"jsonParseUnknownError",...l,message:`Unknown JSON parse error. URL: ${t}. HTTP ${a.status}. Original response: ${h}`,error:u}))(h);if(i.isErr()){let u=r.safeParse(h);return u.success?v({...l,data:u.data}):f({type:"jsonParseError",...l,message:`Can't parse response as JSON: ${i.error.error.message}. URL: ${t}. HTTP ${a.status}. Original response: ${h}`,error:i.error.error})}let w=i.value,T;if(n){let u=n.safeParse(w);u.success&&(T=u.data)}if(a.status>=500)return f({type:"serverError",...l,message:`Server error. URL: ${t}. HTTP ${a.status} ${a.statusText}. Original response: ${h}. ${T?`Data: ${JSON.stringify(T)}`:""}`});if(a.status>=400)return f({type:"clientError",...l,message:`Error: ${a.status} ${a.statusText}. URL: ${t}. HTTP ${a.status}. Original response: ${h}`,errorMetadata:T});let P=r.safeParse(w);if(!P.success){let u=P.error.issues.map(x=>`[${x.path.join(".")}] ${x.message}`).join(", ");return f({type:"payloadParseError",...l,message:`Can't recognize response payload: ${u}. URL: ${t}. HTTP ${a.status}. Original response: ${h}`})}return v({...l,data:P.data})}function U(t){return async(...r)=>{let e=await t(...r);if(e.isErr()){let{message:n,url:s}=e.error;throw new Error(`${n} (${s})`)}return e.value.data}}return N(B);})();
//# sourceMappingURL=browser.global.js.map