get-it
Version:
Generic HTTP request library for node, browsers and workers
2 lines (1 loc) • 14.1 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./_chunks-cjs/_commonjsHelpers.cjs");function t(e){return{}}const s=/^\//,r=/\/$/;var o,n,i,a,c,u={exports:{}},l=(c||(c=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(r++,"%c"===e&&(o=r))}),t.splice(o,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch{}},t.load=function(){let e;try{e=t.storage.getItem("debug")||t.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){if(typeof window<"u"&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch{}}(),t.destroy=/* @__PURE__ */(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=(a?i:(a=1,i=function(e){function t(e){let r,o,n,i=null;function a(...e){if(!a.enabled)return;const s=a,o=Number(/* @__PURE__ */new Date),n=o-(r||o);s.diff=n,s.prev=r,s.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(r,o)=>{if("%%"===r)return"%";i++;const n=t.formatters[o];if("function"==typeof n){const t=e[i];r=n.call(s,t),e.splice(i,1),i--}return r}),t.formatArgs.call(s,e),(s.log||t.log).apply(s,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=s,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(o!==t.namespaces&&(o=t.namespaces,n=t.enabled(e)),n),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function s(e,s){const r=t(this.namespace+(typeof s>"u"?":":s)+e);return r.log=this.log,r}function r(e,t){let s=0,r=0,o=-1,n=0;for(;s<e.length;)if(r<t.length&&(t[r]===e[s]||"*"===t[r]))"*"===t[r]?(o=r,n=s,r++):(s++,r++);else{if(-1===o)return!1;r=o+1,n++,s=n}for(;r<t.length&&"*"===t[r];)r++;return r===t.length}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names,...t.skips.map(e=>"-"+e)].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const s=("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const e of s)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const s of t.skips)if(r(e,s))return!1;for(const s of t.names)if(r(e,s))return!0;return!1},t.humanize=function(){if(n)return o;n=1;var e=1e3,t=60*e,s=60*t,r=24*s,i=7*r;function a(e,t,s,r){var o=t>=1.5*s;return Math.round(e/s)+" "+r+(o?"s":"")}return o=function(o,n){n=n||{};var c,u,l=typeof o;if("string"===l&&o.length>0)return function(o){if(!((o=String(o)).length>100)){var n=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(o);if(n){var a=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return a*i;case"days":case"day":case"d":return a*r;case"hours":case"hour":case"hrs":case"hr":case"h":return a*s;case"minutes":case"minute":case"mins":case"min":case"m":return a*t;case"seconds":case"second":case"secs":case"sec":case"s":return a*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(o);if("number"===l&&isFinite(o))return n.long?(c=o,(u=Math.abs(c))>=r?a(c,u,r,"day"):u>=s?a(c,u,s,"hour"):u>=t?a(c,u,t,"minute"):u>=e?a(c,u,e,"second"):c+" ms"):function(o){var n=Math.abs(o);return n>=r?Math.round(o/r)+"d":n>=s?Math.round(o/s)+"h":n>=t?Math.round(o/t)+"m":n>=e?Math.round(o/e)+"s":o+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(s=>{t[s]=e[s]}),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t<e.length;t++)s=(s<<5)-s+e.charCodeAt(t),s|=0;return t.colors[Math.abs(s)%t.colors.length]},t.enable(t.load()),t}))(t);const{formatters:s}=e.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(u,u.exports)),u.exports),p=/* @__PURE__ */e.g(l);const d=["cookie","authorization"],f=Object.prototype.hasOwnProperty;class C extends Error{response;request;constructor(e,t){super();const s=e.url.length>400?`${e.url.slice(0,399)}…`:e.url;let r=`${e.method}-request to ${s} resulted in `;r+=`HTTP ${e.statusCode} ${e.statusMessage}`,this.message=r.trim(),this.response=e,this.request=t.options}}const m=typeof Buffer>"u"?()=>!1:e=>Buffer.isBuffer(e);function h(e){return"[object Object]"===Object.prototype.toString.call(e)}function g(e){if(!1===h(e))return!1;const t=e.constructor;if(void 0===t)return!0;const s=t.prototype;return!(!1===h(s)||!1===s.hasOwnProperty("isPrototypeOf"))}const b=["boolean","string","number"];let y={};typeof globalThis<"u"?y=globalThis:typeof window<"u"?y=window:typeof global<"u"?y=global:typeof self<"u"&&(y=self);var w=y;const F=(e={})=>{const t=e.implementation||Promise;if(!t)throw new Error("`Promise` is not available in global scope, and no implementation was passed");return{onReturn:(s,r)=>new t((t,o)=>{const n=r.options.cancelToken;n&&n.promise.then(e=>{s.abort.publish(e),o(e)}),s.error.subscribe(o),s.response.subscribe(s=>{t(e.onlyBody?s.body:s)}),setTimeout(()=>{try{s.request.publish(r)}catch(e){o(e)}},0)})}};class O{__CANCEL__=!0;message;constructor(e){this.message=e}toString(){return"Cancel"+(this.message?`: ${this.message}`:"")}}class x{promise;reason;constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t=null;this.promise=new Promise(e=>{t=e}),e(e=>{this.reason||(this.reason=new O(e),t(this.reason))})}static source=()=>{let e;return{token:new x(t=>{e=t}),cancel:e}}}F.Cancel=O,F.CancelToken=x,F.isCancel=e=>!(!e||!e?.__CANCEL__);var j=(e,t,s)=>("GET"===s.method||"HEAD"===s.method)&&(e.isNetworkError||!1);function v(e){return 100*Math.pow(2,e)+100*Math.random()}const E=(e={})=>(e=>{const t=e.maxRetries||5,s=e.retryDelay||v,r=e.shouldRetry;return{onError:(e,o)=>{const n=o.options,i=n.maxRetries||t,a=n.retryDelay||s,c=n.shouldRetry||r,u=n.attemptNumber||0;if(null!==(l=n.body)&&"object"==typeof l&&"function"==typeof l.pipe||!c(e,u,n)||u>=i)return e;var l;const p=Object.assign({},o,{options:Object.assign({},n,{attemptNumber:u+1})});return setTimeout(()=>o.channels.request.publish(p),a(u)),null}}})({shouldRetry:j,...e});function R(e){const t=new URLSearchParams,s=(e,r)=>{const o=r instanceof Set?Array.from(r):r;if(Array.isArray(o))if(o.length)for(const t in o)s(`${e}[${t}]`,o[t]);else t.append(`${e}[]`,"");else if("object"==typeof o&&null!==o)for(const[t,r]of Object.entries(o))s(`${e}[${t}]`,r);else t.append(e,o)};for(const[t,r]of Object.entries(e))s(t,r);return t.toString()}E.shouldRetry=j;class k extends Error{request;code;constructor(e,t){super(e.message),this.request=t,this.code=e.code}}const q=(A=t,function(e={}){const{maxRetries:t=3,ms:s=1e3,maxFree:r=256}=e,{finalizeOptions:o}=A({keepAlive:!0,keepAliveMsecs:s,maxFreeSockets:r});return{finalizeOptions:o,onError:(e,s)=>{if(("GET"===s.options.method||"POST"===s.options.method)&&e instanceof k&&"ECONNRESET"===e.code&&e.request.reusedSocket){const e=s.options.attemptNumber||0;if(e<t){const t=Object.assign({},s,{options:Object.assign({},s.options,{attemptNumber:e+1})});return setImmediate(()=>s.channels.request.publish(t)),null}}return e}}});var A;exports.processOptions=e.p,exports.validateOptions=e.v,exports.Cancel=O,exports.CancelToken=x,exports.agent=t,exports.base=function(e){const t=e.replace(r,"");return{processOptions:e=>{if(/^https?:\/\//i.test(e.url))return e;const r=[t,e.url.replace(s,"")].join("/");return Object.assign({},e,{url:r})}}},exports.debug=function(e={}){const t=e.verbose,s=e.namespace||"get-it",r=p(s),o=e.log||r,n=o===r&&!p.enabled(s);let i=0;return{processOptions:e=>(e.debug=o,e.requestId=e.requestId||++i,e),onRequest:s=>{if(n||!s)return s;const r=s.options;if(o("[%s] HTTP %s %s",r.requestId,r.method,r.url),t&&r.body&&"string"==typeof r.body&&o("[%s] Request body: %s",r.requestId,r.body),t&&r.headers){const t=!1===e.redactSensitiveHeaders?r.headers:((e,t)=>{const s={};for(const r in e)f.call(e,r)&&(s[r]=t.indexOf(r.toLowerCase())>-1?"<redacted>":e[r]);return s})(r.headers,d);o("[%s] Request headers: %s",r.requestId,JSON.stringify(t,null,2))}return s},onResponse:(e,s)=>{if(n||!e)return e;const r=s.options.requestId;return o("[%s] Response code: %s %s",r,e.statusCode,e.statusMessage),t&&e.body&&o("[%s] Response body: %s",r,function(e){return-1!==(e.headers["content-type"]||"").toLowerCase().indexOf("application/json")?function(e){try{const t="string"==typeof e?JSON.parse(e):e;return JSON.stringify(t,null,2)}catch{return e}}(e.body):e.body}(e)),e},onError:(e,t)=>{const s=t.options.requestId;return e?(o("[%s] ERROR: %s",s,e.message),e):(o("[%s] Error encountered, but handled by an earlier middleware",s),e)}}},exports.headers=function(e,t={}){return{processOptions:s=>{const r=s.headers||{};return s.headers=t.override?Object.assign({},r,e):Object.assign({},e,r),s}}},exports.httpErrors=function(){return{onResponse:(e,t)=>{if(!(e.statusCode>=400))return e;throw new C(e,t)}}},exports.injectResponse=function(e={}){if("function"!=typeof e.inject)throw new Error("`injectResponse` middleware requires a `inject` function");return{interceptRequest:function(t,s){const r=e.inject(s,t);if(!r)return t;const o=s.context.options;return{body:"",url:o.url,method:o.method,headers:{},statusCode:200,statusMessage:"OK",...r}}}},exports.jsonRequest=function(){return{processOptions:e=>{const t=e.body;return!t||"function"==typeof t.pipe||m(t)||-1===b.indexOf(typeof t)&&!Array.isArray(t)&&!g(t)?e:Object.assign({},e,{body:JSON.stringify(e.body),headers:Object.assign({},e.headers,{"Content-Type":"application/json"})})}}},exports.jsonResponse=function(e){return{onResponse:s=>{const r=s.headers["content-type"]||"",o=e&&e.force||-1!==r.indexOf("application/json");return s.body&&r&&o?Object.assign({},s,{body:t(s.body)}):s},processOptions:e=>Object.assign({},e,{headers:Object.assign({Accept:"application/json"},e.headers)})};function t(e){try{return JSON.parse(e)}catch(e){throw e.message=`Failed to parsed response body as JSON: ${e.message}`,e}}},exports.keepAlive=q,exports.mtls=function(e={}){if(!e.ca)throw new Error('Required mtls option "ca" is missing');if(!e.cert)throw new Error('Required mtls option "cert" is missing');if(!e.key)throw new Error('Required mtls option "key" is missing');return{finalizeOptions:t=>{if(function(e){return"object"==typeof e&&null!==e&&!("protocol"in e)}(t))return t;const s={cert:e.cert,key:e.key,ca:e.ca};return Object.assign({},t,s)}}},exports.observable=function(e={}){const t=e.implementation||w.Observable;if(!t)throw new Error("`Observable` is not available in global scope, and no implementation was passed");return{onReturn:(e,s)=>new t(t=>(e.error.subscribe(e=>t.error(e)),e.progress.subscribe(e=>t.next(Object.assign({type:"progress"},e))),e.response.subscribe(e=>{t.next(Object.assign({type:"response"},e)),t.complete()}),e.request.publish(s),()=>e.abort.publish()))}},exports.progress=function(){return{onRequest:e=>{if("xhr"!==e.adapter)return;const t=e.request,s=e.context;function r(e){return t=>{const r=t.lengthComputable?t.loaded/t.total*100:-1;s.channels.progress.publish({stage:e,percent:r,total:t.total,loaded:t.loaded,lengthComputable:t.lengthComputable})}}"upload"in t&&"onprogress"in t.upload&&(t.upload.onprogress=r("upload")),"onprogress"in t&&(t.onprogress=r("download"))}}},exports.promise=F,exports.proxy=function(e){if(!(!1===e||e&&e.host))throw new Error("Proxy middleware takes an object of host, port and auth properties");return{processOptions:t=>Object.assign({proxy:e},t)}},exports.retry=E,exports.urlEncoded=function(){return{processOptions:e=>{const t=e.body;return t&&"function"!=typeof t.pipe&&!m(t)&&g(t)?{...e,body:R(e.body),headers:{...e.headers,"Content-Type":"application/x-www-form-urlencoded"}}:e}}};//# sourceMappingURL=middleware.browser.cjs.map