@musallam/ffs-substance-3d-client 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ var e=class extends Error{response;request;options;constructor(e,t,n){let r=`${e.status||e.status===0?e.status:``} ${e.statusText??``}`.trim(),i=r?`status code ${r}`:`an unknown error`;super(`Request failed with ${i}: ${t.method} ${t.url}`),this.name=`HTTPError`,this.response=e,this.request=t,this.options=n}},t=class extends Error{name=`NonError`;value;constructor(e){let t=`Non-error value was thrown`;try{typeof e==`string`?t=e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`&&(t=e.message)}catch{}super(t),this.value=e}},n=class extends Error{name=`ForceRetryError`;customDelay;code;customRequest;constructor(e){let n=e?.cause?e.cause instanceof Error?e.cause:new t(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:`Forced retry`,n?{cause:n}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}};const r=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream==`function`,r=typeof globalThis.Request==`function`;if(n&&r)try{t=new globalThis.Request(`https://empty.invalid`,{body:new globalThis.ReadableStream,method:`POST`,get duplex(){return e=!0,`half`}}).headers.has(`Content-Type`)}catch(e){if(e instanceof Error&&e.message===`unsupported BodyInit type`)return!1;throw e}return e&&!t})(),i=typeof globalThis.AbortController==`function`,a=typeof globalThis.AbortSignal==`function`&&typeof globalThis.AbortSignal.any==`function`,o=typeof globalThis.ReadableStream==`function`,s=typeof globalThis.FormData==`function`,c=[`get`,`post`,`put`,`patch`,`head`,`delete`],l={json:`application/json`,text:`text/*`,formData:`multipart/form-data`,arrayBuffer:`*/*`,blob:`*/*`,bytes:`*/*`},u=2147483647,d=new TextEncoder().encode(`------WebKitFormBoundaryaxpyiPgbbPti10Rw`).length,f=Symbol(`stop`);var p=class{options;constructor(e){this.options=e}};const m=e=>new p(e),h={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},g={next:!0},_={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0},v=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,r]of e)t+=d,t+=new TextEncoder().encode(`Content-Disposition: form-data; name="${n}"`).length,t+=typeof r==`string`?new TextEncoder().encode(r).length:r.size;return t}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength;if(typeof e==`string`)return new TextEncoder().encode(e).length;if(e instanceof URLSearchParams)return new TextEncoder().encode(e.toString()).length;if(`byteLength`in e)return e.byteLength;if(typeof e==`object`&&e)try{let t=JSON.stringify(e);return new TextEncoder().encode(t).length}catch{return 0}return 0},y=(e,t,n)=>{let r,i=0;return e.pipeThrough(new TransformStream({transform(e,a){if(a.enqueue(e),r){i+=r.byteLength;let e=t===0?0:i/t;e>=1&&(e=1-2**-52),n?.({percent:e,totalBytes:Math.max(t,i),transferredBytes:i},r)}r=e},flush(){r&&(i+=r.byteLength,n?.({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},r))}}))},b=(e,t)=>{if(!e.body)return e;if(e.status===204)return new Response(null,{status:e.status,statusText:e.statusText,headers:e.headers});let n=Math.max(0,Number(e.headers.get(`content-length`))||0);return new Response(y(e.body,n,t),{status:e.status,statusText:e.statusText,headers:e.headers})},x=(e,t,n)=>{if(!e.body)return e;let r=v(n??e.body);return new Request(e,{duplex:`half`,body:y(e.body,r,t)})},S=e=>typeof e==`object`&&!!e,C=(...e)=>{for(let t of e)if((!S(t)||Array.isArray(t))&&t!==void 0)throw TypeError("The `options` argument must be an object");return O({},...e)},w=(e={},t={})=>{let n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[e,t]of i.entries())r&&t===`undefined`||t===void 0?n.delete(e):n.set(e,t);return n};function T(e,t,n){return Object.hasOwn(t,n)&&t[n]===void 0?[]:O(e[n]??[],t[n]??[])}const E=(e={},t={})=>({beforeRequest:T(e,t,`beforeRequest`),beforeRetry:T(e,t,`beforeRetry`),afterResponse:T(e,t,`afterResponse`),beforeError:T(e,t,`beforeError`)}),D=(e,t)=>{let n=new URLSearchParams;for(let r of[e,t])if(r!==void 0)if(r instanceof URLSearchParams)for(let[e,t]of r.entries())n.append(e,t);else if(Array.isArray(r))for(let e of r){if(!Array.isArray(e)||e.length!==2)throw TypeError(`Array search parameters must be provided in [[key, value], ...] format`);n.append(String(e[0]),String(e[1]))}else if(S(r))for(let[e,t]of Object.entries(r))t!==void 0&&n.append(e,String(t));else{let e=new URLSearchParams(r);for(let[t,r]of e.entries())n.append(t,r)}return n},O=(...e)=>{let t={},n={},r={},i,o=[];for(let a of e)if(Array.isArray(a))Array.isArray(t)||(t=[]),t=[...t,...a];else if(S(a)){for(let[e,n]of Object.entries(a)){if(e===`signal`&&n instanceof globalThis.AbortSignal){o.push(n);continue}if(e===`context`){if(n!=null&&(!S(n)||Array.isArray(n)))throw TypeError("The `context` option must be an object");t={...t,context:n==null?{}:{...t.context,...n}};continue}if(e===`searchParams`){i=n==null?void 0:i===void 0?n:D(i,n);continue}S(n)&&e in t&&(n=O(t[e],n)),t={...t,[e]:n}}S(a.hooks)&&(r=E(r,a.hooks),t.hooks=r),S(a.headers)&&(n=w(n,a.headers),t.headers=n)}return i!==void 0&&(t.searchParams=i),o.length>0&&(o.length===1?t.signal=o[0]:a?t.signal=AbortSignal.any(o):t.signal=o.at(-1)),t},k=e=>c.includes(e)?e.toUpperCase():e,A={limit:2,methods:[`get`,`put`,`head`,`delete`,`options`,`trace`],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:1/0,backoffLimit:1/0,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},j=(e={})=>{if(typeof e==`number`)return{...A,limit:e};if(e.methods&&!Array.isArray(e.methods))throw Error(`retry.methods must be an array`);if(e.methods&&=e.methods.map(e=>e.toLowerCase()),e.statusCodes&&!Array.isArray(e.statusCodes))throw Error(`retry.statusCodes must be an array`);let t=Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));return{...A,...t}};var M=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name=`TimeoutError`,this.request=e}};async function N(e,t,n,r){return new Promise((i,a)=>{let o=setTimeout(()=>{n&&n.abort(),a(new M(e))},r.timeout);r.fetch(e,t).then(i).catch(a).then(()=>{clearTimeout(o)})})}async function P(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener(`abort`,i,{once:!0}));function i(){clearTimeout(a),r(t.reason)}let a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e)})}const F=(e,t)=>{let n={};for(let r in t)Object.hasOwn(t,r)&&!(r in _)&&!(r in h)&&(!(r in e)||r in g)&&(n[r]=t[r]);return n},I=e=>e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!!e;function L(t){return t instanceof e||t?.name===e.name}function R(e){return e instanceof M||e?.name===M.name}var z=class c{static create(t,r){let i=new c(t,r),a=i.#p(async()=>{if(typeof i.#i.timeout==`number`&&i.#i.timeout>2147483647)throw RangeError(`The \`timeout\` option cannot be greater than ${u}`);await Promise.resolve();let t=await i.#m();for(let e of i.#i.hooks.afterResponse){let r=i.#u(t.clone()),a;try{a=await e(i.request,i.#h(),r,{retryCount:i.#n})}catch(e){throw i.#f(r),i.#f(t),e}if(a instanceof p)throw i.#f(r),i.#f(t),new n(a.options);let o=a instanceof globalThis.Response?a:t;r!==o&&i.#f(r),t!==o&&i.#f(t),t=o}if(i.#u(t),!t.ok&&(typeof i.#i.throwHttpErrors==`function`?i.#i.throwHttpErrors(t.status):i.#i.throwHttpErrors)){let n=new e(t,i.request,i.#h());for(let e of i.#i.hooks.beforeError)n=await e(n,{retryCount:i.#n});throw n}if(i.#i.onDownloadProgress){if(typeof i.#i.onDownloadProgress!=`function`)throw TypeError("The `onDownloadProgress` option must be a function");if(!o)throw Error("Streams are not supported in your environment. `ReadableStream` is missing.");let e=t.clone();return i.#f(t),b(e,i.#i.onDownloadProgress)}return t}).finally(()=>{let e=i.#a;i.#d(e?.body??void 0),i.#d(i.request.body??void 0)});for(let[e,t]of Object.entries(l))e===`bytes`&&typeof globalThis.Response?.prototype?.bytes!=`function`||(a[e]=async()=>{i.request.headers.set(`accept`,i.request.headers.get(`accept`)||t);let n=await a;if(e===`json`){if(n.status===204)return``;let e=await n.text();return e===``?``:r.parseJson?r.parseJson(e):JSON.parse(e)}return n[e]()});return a}static#e(e){return e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):e}request;#t;#n=0;#r;#i;#a;#o;#s;constructor(e,t={}){if(this.#r=e,this.#i={...t,headers:w(this.#r.headers,t.headers),hooks:E({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:k(t.method??this.#r.method??`GET`),prefixUrl:String(t.prefixUrl||``),retry:j(t.retry),throwHttpErrors:t.throwHttpErrors??!0,timeout:t.timeout??1e4,fetch:t.fetch??globalThis.fetch.bind(globalThis),context:t.context??{}},typeof this.#r!=`string`&&!(this.#r instanceof URL||this.#r instanceof globalThis.Request))throw TypeError("`input` must be a string, URL, or Request");if(this.#i.prefixUrl&&typeof this.#r==`string`){if(this.#r.startsWith(`/`))throw Error("`input` must not begin with a slash when using `prefixUrl`");this.#i.prefixUrl.endsWith(`/`)||(this.#i.prefixUrl+=`/`),this.#r=this.#i.prefixUrl+this.#r}i&&a&&(this.#o=this.#i.signal??this.#r.signal,this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal),r&&(this.#i.duplex=`half`),this.#i.json!==void 0&&(this.#i.body=this.#i.stringifyJson?.(this.#i.json)??JSON.stringify(this.#i.json),this.#i.headers.set(`content-type`,this.#i.headers.get(`content-type`)??`application/json`));let n=t.headers&&new globalThis.Headers(t.headers).has(`content-type`);if(this.#r instanceof globalThis.Request&&(s&&this.#i.body instanceof globalThis.FormData||this.#i.body instanceof URLSearchParams)&&!n&&this.#i.headers.delete(`content-type`),this.request=new globalThis.Request(this.#r,this.#i),I(this.#i.searchParams)){let e=`?`+(typeof this.#i.searchParams==`string`?this.#i.searchParams.replace(/^\?/,``):new URLSearchParams(c.#e(this.#i.searchParams)).toString()),t=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,e);this.request=new globalThis.Request(t,this.#i)}if(this.#i.onUploadProgress){if(typeof this.#i.onUploadProgress!=`function`)throw TypeError("The `onUploadProgress` option must be a function");if(!r)throw Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request=this.#_(this.request,this.#i.body??void 0)}}#c(){let e=this.#i.retry.delay(this.#n),t=e;this.#i.retry.jitter===!0?t=Math.random()*e:typeof this.#i.retry.jitter==`function`&&(t=this.#i.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e));let n=this.#i.retry.backoffLimit??1/0;return Math.min(n,t)}async#l(e){if(this.#n++,this.#n>this.#i.retry.limit)throw e;let r=e instanceof Error?e:new t(e);if(r instanceof n)return r.customDelay??this.#c();if(!this.#i.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#i.retry.shouldRetry!==void 0){let t=await this.#i.retry.shouldRetry({error:r,retryCount:this.#n});if(t===!1)throw e;if(t===!0)return this.#c()}if(R(e)&&!this.#i.retry.retryOnTimeout)throw e;if(L(e)){if(!this.#i.retry.statusCodes.includes(e.response.status))throw e;let t=e.response.headers.get(`Retry-After`)??e.response.headers.get(`RateLimit-Reset`)??e.response.headers.get(`X-RateLimit-Retry-After`)??e.response.headers.get(`X-RateLimit-Reset`)??e.response.headers.get(`X-Rate-Limit-Reset`);if(t&&this.#i.retry.afterStatusCodes.includes(e.response.status)){let e=Number(t)*1e3;Number.isNaN(e)?e=Date.parse(t)-Date.now():e>=Date.parse(`2024-01-01`)&&(e-=Date.now());let n=this.#i.retry.maxRetryAfter??e;return e<n?e:n}if(e.response.status===413)throw e}return this.#c()}#u(e){return this.#i.parseJson&&(e.json=async()=>this.#i.parseJson(await e.text())),e}#d(e){e&&e.cancel().catch(()=>void 0)}#f(e){this.#d(e.body??void 0)}async#p(e){try{return await e()}catch(t){let r=Math.min(await this.#l(t),u);if(this.#n<1)throw t;if(await P(r,this.#o?{signal:this.#o}:{}),t instanceof n&&t.customRequest){let e=this.#i.signal?new globalThis.Request(t.customRequest,{signal:this.#i.signal}):new globalThis.Request(t.customRequest);this.#g(e)}for(let e of this.#i.hooks.beforeRetry){let n=await e({request:this.request,options:this.#h(),error:t,retryCount:this.#n});if(n instanceof globalThis.Request){this.#g(n);break}if(n instanceof globalThis.Response)return n;if(n===f)return}return this.#p(e)}}async#m(){this.#t?.signal.aborted&&(this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal,this.request=new globalThis.Request(this.request,{signal:this.#i.signal}));for(let e of this.#i.hooks.beforeRequest){let t=await e(this.request,this.#h(),{retryCount:this.#n});if(t instanceof Response)return t;if(t instanceof globalThis.Request){this.#g(t);break}}let e=F(this.request,this.#i);return this.#a=this.request,this.request=this.#a.clone(),this.#i.timeout===!1?this.#i.fetch(this.#a,e):N(this.#a,e,this.#t,this.#i)}#h(){if(!this.#s){let{hooks:e,...t}=this.#i;this.#s=Object.freeze(t)}return this.#s}#g(e){this.#s=void 0,this.request=this.#_(e)}#_(e,t){return!this.#i.onUploadProgress||!e.body?e:x(e,this.#i.onUploadProgress,t??this.#i.body??void 0)}};
2
+ /*! MIT License © Sindre Sorhus */
3
+ const B=e=>{let t=(t,n)=>z.create(t,C(e,n));for(let n of c)t[n]=(t,r)=>z.create(t,C(e,r,{method:n}));return t.create=e=>B(C(e)),t.extend=t=>(typeof t==`function`&&(t=t(e??{})),B(C(e,t))),t.stop=f,t.retry=m,t},V=B();Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return V}});
@@ -0,0 +1,4 @@
1
+ var e=class extends Error{response;request;options;constructor(e,t,n){let r=`${e.status||e.status===0?e.status:``} ${e.statusText??``}`.trim(),i=r?`status code ${r}`:`an unknown error`;super(`Request failed with ${i}: ${t.method} ${t.url}`),this.name=`HTTPError`,this.response=e,this.request=t,this.options=n}},t=class extends Error{name=`NonError`;value;constructor(e){let t=`Non-error value was thrown`;try{typeof e==`string`?t=e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`&&(t=e.message)}catch{}super(t),this.value=e}},n=class extends Error{name=`ForceRetryError`;customDelay;code;customRequest;constructor(e){let n=e?.cause?e.cause instanceof Error?e.cause:new t(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:`Forced retry`,n?{cause:n}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}};const r=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream==`function`,r=typeof globalThis.Request==`function`;if(n&&r)try{t=new globalThis.Request(`https://empty.invalid`,{body:new globalThis.ReadableStream,method:`POST`,get duplex(){return e=!0,`half`}}).headers.has(`Content-Type`)}catch(e){if(e instanceof Error&&e.message===`unsupported BodyInit type`)return!1;throw e}return e&&!t})(),i=typeof globalThis.AbortController==`function`,a=typeof globalThis.AbortSignal==`function`&&typeof globalThis.AbortSignal.any==`function`,o=typeof globalThis.ReadableStream==`function`,s=typeof globalThis.FormData==`function`,c=[`get`,`post`,`put`,`patch`,`head`,`delete`],l={json:`application/json`,text:`text/*`,formData:`multipart/form-data`,arrayBuffer:`*/*`,blob:`*/*`,bytes:`*/*`},u=2147483647,d=new TextEncoder().encode(`------WebKitFormBoundaryaxpyiPgbbPti10Rw`).length,f=Symbol(`stop`);var p=class{options;constructor(e){this.options=e}};const m=e=>new p(e),h={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},g={next:!0},_={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0},v=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,r]of e)t+=d,t+=new TextEncoder().encode(`Content-Disposition: form-data; name="${n}"`).length,t+=typeof r==`string`?new TextEncoder().encode(r).length:r.size;return t}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength;if(typeof e==`string`)return new TextEncoder().encode(e).length;if(e instanceof URLSearchParams)return new TextEncoder().encode(e.toString()).length;if(`byteLength`in e)return e.byteLength;if(typeof e==`object`&&e)try{let t=JSON.stringify(e);return new TextEncoder().encode(t).length}catch{return 0}return 0},y=(e,t,n)=>{let r,i=0;return e.pipeThrough(new TransformStream({transform(e,a){if(a.enqueue(e),r){i+=r.byteLength;let e=t===0?0:i/t;e>=1&&(e=1-2**-52),n?.({percent:e,totalBytes:Math.max(t,i),transferredBytes:i},r)}r=e},flush(){r&&(i+=r.byteLength,n?.({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},r))}}))},b=(e,t)=>{if(!e.body)return e;if(e.status===204)return new Response(null,{status:e.status,statusText:e.statusText,headers:e.headers});let n=Math.max(0,Number(e.headers.get(`content-length`))||0);return new Response(y(e.body,n,t),{status:e.status,statusText:e.statusText,headers:e.headers})},x=(e,t,n)=>{if(!e.body)return e;let r=v(n??e.body);return new Request(e,{duplex:`half`,body:y(e.body,r,t)})},S=e=>typeof e==`object`&&!!e,C=(...e)=>{for(let t of e)if((!S(t)||Array.isArray(t))&&t!==void 0)throw TypeError("The `options` argument must be an object");return O({},...e)},w=(e={},t={})=>{let n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[e,t]of i.entries())r&&t===`undefined`||t===void 0?n.delete(e):n.set(e,t);return n};function T(e,t,n){return Object.hasOwn(t,n)&&t[n]===void 0?[]:O(e[n]??[],t[n]??[])}const E=(e={},t={})=>({beforeRequest:T(e,t,`beforeRequest`),beforeRetry:T(e,t,`beforeRetry`),afterResponse:T(e,t,`afterResponse`),beforeError:T(e,t,`beforeError`)}),D=(e,t)=>{let n=new URLSearchParams;for(let r of[e,t])if(r!==void 0)if(r instanceof URLSearchParams)for(let[e,t]of r.entries())n.append(e,t);else if(Array.isArray(r))for(let e of r){if(!Array.isArray(e)||e.length!==2)throw TypeError(`Array search parameters must be provided in [[key, value], ...] format`);n.append(String(e[0]),String(e[1]))}else if(S(r))for(let[e,t]of Object.entries(r))t!==void 0&&n.append(e,String(t));else{let e=new URLSearchParams(r);for(let[t,r]of e.entries())n.append(t,r)}return n},O=(...e)=>{let t={},n={},r={},i,o=[];for(let a of e)if(Array.isArray(a))Array.isArray(t)||(t=[]),t=[...t,...a];else if(S(a)){for(let[e,n]of Object.entries(a)){if(e===`signal`&&n instanceof globalThis.AbortSignal){o.push(n);continue}if(e===`context`){if(n!=null&&(!S(n)||Array.isArray(n)))throw TypeError("The `context` option must be an object");t={...t,context:n==null?{}:{...t.context,...n}};continue}if(e===`searchParams`){i=n==null?void 0:i===void 0?n:D(i,n);continue}S(n)&&e in t&&(n=O(t[e],n)),t={...t,[e]:n}}S(a.hooks)&&(r=E(r,a.hooks),t.hooks=r),S(a.headers)&&(n=w(n,a.headers),t.headers=n)}return i!==void 0&&(t.searchParams=i),o.length>0&&(o.length===1?t.signal=o[0]:a?t.signal=AbortSignal.any(o):t.signal=o.at(-1)),t},k=e=>c.includes(e)?e.toUpperCase():e,A={limit:2,methods:[`get`,`put`,`head`,`delete`,`options`,`trace`],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:1/0,backoffLimit:1/0,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},j=(e={})=>{if(typeof e==`number`)return{...A,limit:e};if(e.methods&&!Array.isArray(e.methods))throw Error(`retry.methods must be an array`);if(e.methods&&=e.methods.map(e=>e.toLowerCase()),e.statusCodes&&!Array.isArray(e.statusCodes))throw Error(`retry.statusCodes must be an array`);let t=Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));return{...A,...t}};var M=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name=`TimeoutError`,this.request=e}};async function N(e,t,n,r){return new Promise((i,a)=>{let o=setTimeout(()=>{n&&n.abort(),a(new M(e))},r.timeout);r.fetch(e,t).then(i).catch(a).then(()=>{clearTimeout(o)})})}async function P(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener(`abort`,i,{once:!0}));function i(){clearTimeout(a),r(t.reason)}let a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e)})}const F=(e,t)=>{let n={};for(let r in t)Object.hasOwn(t,r)&&!(r in _)&&!(r in h)&&(!(r in e)||r in g)&&(n[r]=t[r]);return n},I=e=>e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!!e;function L(t){return t instanceof e||t?.name===e.name}function R(e){return e instanceof M||e?.name===M.name}var z=class c{static create(t,r){let i=new c(t,r),a=i.#p(async()=>{if(typeof i.#i.timeout==`number`&&i.#i.timeout>2147483647)throw RangeError(`The \`timeout\` option cannot be greater than ${u}`);await Promise.resolve();let t=await i.#m();for(let e of i.#i.hooks.afterResponse){let r=i.#u(t.clone()),a;try{a=await e(i.request,i.#h(),r,{retryCount:i.#n})}catch(e){throw i.#f(r),i.#f(t),e}if(a instanceof p)throw i.#f(r),i.#f(t),new n(a.options);let o=a instanceof globalThis.Response?a:t;r!==o&&i.#f(r),t!==o&&i.#f(t),t=o}if(i.#u(t),!t.ok&&(typeof i.#i.throwHttpErrors==`function`?i.#i.throwHttpErrors(t.status):i.#i.throwHttpErrors)){let n=new e(t,i.request,i.#h());for(let e of i.#i.hooks.beforeError)n=await e(n,{retryCount:i.#n});throw n}if(i.#i.onDownloadProgress){if(typeof i.#i.onDownloadProgress!=`function`)throw TypeError("The `onDownloadProgress` option must be a function");if(!o)throw Error("Streams are not supported in your environment. `ReadableStream` is missing.");let e=t.clone();return i.#f(t),b(e,i.#i.onDownloadProgress)}return t}).finally(()=>{let e=i.#a;i.#d(e?.body??void 0),i.#d(i.request.body??void 0)});for(let[e,t]of Object.entries(l))e===`bytes`&&typeof globalThis.Response?.prototype?.bytes!=`function`||(a[e]=async()=>{i.request.headers.set(`accept`,i.request.headers.get(`accept`)||t);let n=await a;if(e===`json`){if(n.status===204)return``;let e=await n.text();return e===``?``:r.parseJson?r.parseJson(e):JSON.parse(e)}return n[e]()});return a}static#e(e){return e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):e}request;#t;#n=0;#r;#i;#a;#o;#s;constructor(e,t={}){if(this.#r=e,this.#i={...t,headers:w(this.#r.headers,t.headers),hooks:E({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:k(t.method??this.#r.method??`GET`),prefixUrl:String(t.prefixUrl||``),retry:j(t.retry),throwHttpErrors:t.throwHttpErrors??!0,timeout:t.timeout??1e4,fetch:t.fetch??globalThis.fetch.bind(globalThis),context:t.context??{}},typeof this.#r!=`string`&&!(this.#r instanceof URL||this.#r instanceof globalThis.Request))throw TypeError("`input` must be a string, URL, or Request");if(this.#i.prefixUrl&&typeof this.#r==`string`){if(this.#r.startsWith(`/`))throw Error("`input` must not begin with a slash when using `prefixUrl`");this.#i.prefixUrl.endsWith(`/`)||(this.#i.prefixUrl+=`/`),this.#r=this.#i.prefixUrl+this.#r}i&&a&&(this.#o=this.#i.signal??this.#r.signal,this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal),r&&(this.#i.duplex=`half`),this.#i.json!==void 0&&(this.#i.body=this.#i.stringifyJson?.(this.#i.json)??JSON.stringify(this.#i.json),this.#i.headers.set(`content-type`,this.#i.headers.get(`content-type`)??`application/json`));let n=t.headers&&new globalThis.Headers(t.headers).has(`content-type`);if(this.#r instanceof globalThis.Request&&(s&&this.#i.body instanceof globalThis.FormData||this.#i.body instanceof URLSearchParams)&&!n&&this.#i.headers.delete(`content-type`),this.request=new globalThis.Request(this.#r,this.#i),I(this.#i.searchParams)){let e=`?`+(typeof this.#i.searchParams==`string`?this.#i.searchParams.replace(/^\?/,``):new URLSearchParams(c.#e(this.#i.searchParams)).toString()),t=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,e);this.request=new globalThis.Request(t,this.#i)}if(this.#i.onUploadProgress){if(typeof this.#i.onUploadProgress!=`function`)throw TypeError("The `onUploadProgress` option must be a function");if(!r)throw Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request=this.#_(this.request,this.#i.body??void 0)}}#c(){let e=this.#i.retry.delay(this.#n),t=e;this.#i.retry.jitter===!0?t=Math.random()*e:typeof this.#i.retry.jitter==`function`&&(t=this.#i.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e));let n=this.#i.retry.backoffLimit??1/0;return Math.min(n,t)}async#l(e){if(this.#n++,this.#n>this.#i.retry.limit)throw e;let r=e instanceof Error?e:new t(e);if(r instanceof n)return r.customDelay??this.#c();if(!this.#i.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#i.retry.shouldRetry!==void 0){let t=await this.#i.retry.shouldRetry({error:r,retryCount:this.#n});if(t===!1)throw e;if(t===!0)return this.#c()}if(R(e)&&!this.#i.retry.retryOnTimeout)throw e;if(L(e)){if(!this.#i.retry.statusCodes.includes(e.response.status))throw e;let t=e.response.headers.get(`Retry-After`)??e.response.headers.get(`RateLimit-Reset`)??e.response.headers.get(`X-RateLimit-Retry-After`)??e.response.headers.get(`X-RateLimit-Reset`)??e.response.headers.get(`X-Rate-Limit-Reset`);if(t&&this.#i.retry.afterStatusCodes.includes(e.response.status)){let e=Number(t)*1e3;Number.isNaN(e)?e=Date.parse(t)-Date.now():e>=Date.parse(`2024-01-01`)&&(e-=Date.now());let n=this.#i.retry.maxRetryAfter??e;return e<n?e:n}if(e.response.status===413)throw e}return this.#c()}#u(e){return this.#i.parseJson&&(e.json=async()=>this.#i.parseJson(await e.text())),e}#d(e){e&&e.cancel().catch(()=>void 0)}#f(e){this.#d(e.body??void 0)}async#p(e){try{return await e()}catch(t){let r=Math.min(await this.#l(t),u);if(this.#n<1)throw t;if(await P(r,this.#o?{signal:this.#o}:{}),t instanceof n&&t.customRequest){let e=this.#i.signal?new globalThis.Request(t.customRequest,{signal:this.#i.signal}):new globalThis.Request(t.customRequest);this.#g(e)}for(let e of this.#i.hooks.beforeRetry){let n=await e({request:this.request,options:this.#h(),error:t,retryCount:this.#n});if(n instanceof globalThis.Request){this.#g(n);break}if(n instanceof globalThis.Response)return n;if(n===f)return}return this.#p(e)}}async#m(){this.#t?.signal.aborted&&(this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal,this.request=new globalThis.Request(this.request,{signal:this.#i.signal}));for(let e of this.#i.hooks.beforeRequest){let t=await e(this.request,this.#h(),{retryCount:this.#n});if(t instanceof Response)return t;if(t instanceof globalThis.Request){this.#g(t);break}}let e=F(this.request,this.#i);return this.#a=this.request,this.request=this.#a.clone(),this.#i.timeout===!1?this.#i.fetch(this.#a,e):N(this.#a,e,this.#t,this.#i)}#h(){if(!this.#s){let{hooks:e,...t}=this.#i;this.#s=Object.freeze(t)}return this.#s}#g(e){this.#s=void 0,this.request=this.#_(e)}#_(e,t){return!this.#i.onUploadProgress||!e.body?e:x(e,this.#i.onUploadProgress,t??this.#i.body??void 0)}};
2
+ /*! MIT License © Sindre Sorhus */
3
+ const B=e=>{let t=(t,n)=>z.create(t,C(e,n));for(let n of c)t[n]=(t,r)=>z.create(t,C(e,r,{method:n}));return t.create=e=>B(C(e)),t.extend=t=>(typeof t==`function`&&(t=t(e??{})),B(C(e,t))),t.stop=f,t.retry=m,t},V=B();export{V as t};
4
+ //# sourceMappingURL=distribution-WitwksSh.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution-WitwksSh.mjs","names":["#options","#fetch","#decorateResponse","#getNormalizedOptions","#retryCount","#cancelResponseBody","#retry","#originalRequest","#cancelBody","#normalizeSearchParams","#input","#userProvidedAbortSignal","#abortController","#wrapRequestWithUploadProgress","#calculateRetryDelay","#calculateDelay","#assignRequest","#cachedNormalizedOptions"],"sources":["../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/errors/HTTPError.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/errors/NonError.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/errors/ForceRetryError.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/core/constants.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/body.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/is.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/merge.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/normalize.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/errors/TimeoutError.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/timeout.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/delay.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/options.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/utils/type-guards.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/core/Ky.js","../../../node_modules/.pnpm/ky@1.14.3/node_modules/ky/distribution/index.js"],"sourcesContent":["export class HTTPError extends Error {\n response;\n request;\n options;\n constructor(response, request, options) {\n const code = (response.status || response.status === 0) ? response.status : '';\n const title = response.statusText ?? '';\n const status = `${code} ${title}`.trim();\n const reason = status ? `status code ${status}` : 'an unknown error';\n super(`Request failed with ${reason}: ${request.method} ${request.url}`);\n this.name = 'HTTPError';\n this.response = response;\n this.request = request;\n this.options = options;\n }\n}\n//# sourceMappingURL=HTTPError.js.map","/**\nWrapper for non-Error values that were thrown.\n\nIn JavaScript, any value can be thrown (not just Error instances). This class wraps such values to ensure consistent error handling.\n*/\nexport class NonError extends Error {\n name = 'NonError';\n value;\n constructor(value) {\n let message = 'Non-error value was thrown';\n // Intentionally minimal as this error is just an edge-case.\n try {\n if (typeof value === 'string') {\n message = value;\n }\n else if (value && typeof value === 'object' && 'message' in value && typeof value.message === 'string') {\n message = value.message;\n }\n }\n catch {\n // Use default message if accessing properties throws\n }\n super(message);\n this.value = value;\n }\n}\n//# sourceMappingURL=NonError.js.map","import { NonError } from './NonError.js';\n/**\nInternal error used to signal a forced retry from afterResponse hooks.\nThis is thrown when a user returns ky.retry() from an afterResponse hook.\n*/\nexport class ForceRetryError extends Error {\n name = 'ForceRetryError';\n customDelay;\n code;\n customRequest;\n constructor(options) {\n // Runtime protection: wrap non-Error causes in NonError\n // TypeScript type is Error for guidance, but JS users can pass anything\n const cause = options?.cause\n ? (options.cause instanceof Error ? options.cause : new NonError(options.cause))\n : undefined;\n super(options?.code ? `Forced retry: ${options.code}` : 'Forced retry', cause ? { cause } : undefined);\n this.customDelay = options?.delay;\n this.code = options?.code;\n this.customRequest = options?.request;\n }\n}\n//# sourceMappingURL=ForceRetryError.js.map","export const supportsRequestStreams = (() => {\n let duplexAccessed = false;\n let hasContentType = false;\n const supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n const supportsRequest = typeof globalThis.Request === 'function';\n if (supportsReadableStream && supportsRequest) {\n try {\n hasContentType = new globalThis.Request('https://empty.invalid', {\n body: new globalThis.ReadableStream(),\n method: 'POST',\n // @ts-expect-error - Types are outdated.\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n }\n catch (error) {\n // QQBrowser on iOS throws \"unsupported BodyInit type\" error (see issue #581)\n if (error instanceof Error && error.message === 'unsupported BodyInit type') {\n return false;\n }\n throw error;\n }\n }\n return duplexAccessed && !hasContentType;\n})();\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsAbortSignal = typeof globalThis.AbortSignal === 'function' && typeof globalThis.AbortSignal.any === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'];\nconst validate = () => undefined;\nvalidate();\nexport const responseTypes = {\n json: 'application/json',\n text: 'text/*',\n formData: 'multipart/form-data',\n arrayBuffer: '*/*',\n blob: '*/*',\n // Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).\n // We still feature-check at runtime before exposing the shortcut.\n bytes: '*/*',\n};\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2_147_483_647;\n// Size in bytes of a typical form boundary, used to help estimate upload size\nexport const usualFormBoundarySize = new TextEncoder().encode('------WebKitFormBoundaryaxpyiPgbbPti10Rw').length;\nexport const stop = Symbol('stop');\n/**\nMarker returned by ky.retry() to signal a forced retry from afterResponse hooks.\n*/\nexport class RetryMarker {\n options;\n constructor(options) {\n this.options = options;\n }\n}\n/**\nForce a retry from an `afterResponse` hook.\n\nThis allows you to retry a request based on the response content, even if the response has a successful status code. The retry will respect the `retry.limit` option and skip the `shouldRetry` check. The forced retry is observable in `beforeRetry` hooks, where the error will be a `ForceRetryError`.\n\n@param options - Optional configuration for the retry.\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n hooks: {\n afterResponse: [\n async (request, options, response) => {\n // Retry based on response body content\n if (response.status === 200) {\n const data = await response.clone().json();\n\n // Simple retry with default delay\n if (data.error?.code === 'TEMPORARY_ERROR') {\n return ky.retry();\n }\n\n // Retry with custom delay from API response\n if (data.error?.code === 'RATE_LIMIT') {\n return ky.retry({\n delay: data.error.retryAfter * 1000,\n code: 'RATE_LIMIT'\n });\n }\n\n // Retry with a modified request (e.g., fallback endpoint)\n if (data.error?.code === 'FALLBACK_TO_BACKUP') {\n return ky.retry({\n request: new Request('https://backup-api.com/endpoint', {\n method: request.method,\n headers: request.headers,\n }),\n code: 'BACKUP_ENDPOINT'\n });\n }\n\n // Retry with refreshed authentication\n if (data.error?.code === 'TOKEN_REFRESH' && data.newToken) {\n return ky.retry({\n request: new Request(request, {\n headers: {\n ...Object.fromEntries(request.headers),\n 'Authorization': `Bearer ${data.newToken}`\n }\n }),\n code: 'TOKEN_REFRESHED'\n });\n }\n\n // Retry with cause to preserve error chain\n try {\n validateResponse(data);\n } catch (error) {\n return ky.retry({\n code: 'VALIDATION_FAILED',\n cause: error\n });\n }\n }\n }\n ],\n beforeRetry: [\n ({error, retryCount}) => {\n // Observable in beforeRetry hooks\n if (isForceRetryError(error)) {\n console.log(`Forced retry #${retryCount}: ${error.message}`);\n // Example output: \"Forced retry #1: Forced retry: RATE_LIMIT\"\n }\n }\n ]\n }\n});\n\nconst response = await api.get('https://example.com/api');\n```\n*/\nexport const retry = (options) => new RetryMarker(options);\nexport const kyOptionKeys = {\n json: true,\n parseJson: true,\n stringifyJson: true,\n searchParams: true,\n prefixUrl: true,\n retry: true,\n timeout: true,\n hooks: true,\n throwHttpErrors: true,\n onDownloadProgress: true,\n onUploadProgress: true,\n fetch: true,\n context: true,\n};\n// Vendor-specific fetch options that should always be passed to fetch()\n// even if they appear on the Request object due to vendor patching.\n// See: https://github.com/sindresorhus/ky/issues/541\nexport const vendorSpecificOptions = {\n next: true, // Next.js cache revalidation (revalidate, tags)\n};\n// Standard RequestInit options that should NOT be passed separately to fetch()\n// because they're already applied to the Request object.\n// Note: `dispatcher` and `priority` are NOT included here - they're fetch-only\n// options that the Request constructor doesn't accept, so they need to be passed\n// separately to fetch().\nexport const requestOptionsRegistry = {\n method: true,\n headers: true,\n body: true,\n mode: true,\n credentials: true,\n cache: true,\n redirect: true,\n referrer: true,\n referrerPolicy: true,\n integrity: true,\n keepalive: true,\n signal: true,\n window: true,\n duplex: true,\n};\n//# sourceMappingURL=constants.js.map","import { usualFormBoundarySize } from '../core/constants.js';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getBodySize = (body) => {\n if (!body) {\n return 0;\n }\n if (body instanceof FormData) {\n // This is an approximation, as FormData size calculation is not straightforward\n let size = 0;\n for (const [key, value] of body) {\n size += usualFormBoundarySize;\n size += new TextEncoder().encode(`Content-Disposition: form-data; name=\"${key}\"`).length;\n size += typeof value === 'string'\n ? new TextEncoder().encode(value).length\n : value.size;\n }\n return size;\n }\n if (body instanceof Blob) {\n return body.size;\n }\n if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n if (typeof body === 'string') {\n return new TextEncoder().encode(body).length;\n }\n if (body instanceof URLSearchParams) {\n return new TextEncoder().encode(body.toString()).length;\n }\n if ('byteLength' in body) {\n return (body).byteLength;\n }\n if (typeof body === 'object' && body !== null) {\n try {\n const jsonString = JSON.stringify(body);\n return new TextEncoder().encode(jsonString).length;\n }\n catch {\n return 0;\n }\n }\n return 0; // Default case, unable to determine size\n};\nconst withProgress = (stream, totalBytes, onProgress) => {\n let previousChunk;\n let transferredBytes = 0;\n return stream.pipeThrough(new TransformStream({\n transform(currentChunk, controller) {\n controller.enqueue(currentChunk);\n if (previousChunk) {\n transferredBytes += previousChunk.byteLength;\n let percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n // Avoid reporting 100% progress before the stream is actually finished (in case totalBytes is inaccurate)\n if (percent >= 1) {\n // Epsilon is used here to get as close as possible to 100% without reaching it.\n // If we were to use 0.99 here, percent could potentially go backwards.\n percent = 1 - Number.EPSILON;\n }\n onProgress?.({ percent, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes }, previousChunk);\n }\n previousChunk = currentChunk;\n },\n flush() {\n if (previousChunk) {\n transferredBytes += previousChunk.byteLength;\n onProgress?.({ percent: 1, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes }, previousChunk);\n }\n },\n }));\n};\nexport const streamResponse = (response, onDownloadProgress) => {\n if (!response.body) {\n return response;\n }\n if (response.status === 204) {\n return new Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n const totalBytes = Math.max(0, Number(response.headers.get('content-length')) || 0);\n return new Response(withProgress(response.body, totalBytes, onDownloadProgress), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const streamRequest = (request, onUploadProgress, originalBody) => {\n if (!request.body) {\n return request;\n }\n // Use original body for size calculation since request.body is already a stream\n const totalBytes = getBodySize(originalBody ?? request.body);\n return new Request(request, {\n // @ts-expect-error - Types are outdated.\n duplex: 'half',\n body: withProgress(request.body, totalBytes, onUploadProgress),\n });\n};\n//# sourceMappingURL=body.js.map","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (value) => value !== null && typeof value === 'object';\n//# sourceMappingURL=is.js.map","import { supportsAbortSignal } from '../core/constants.js';\nimport { isObject } from './is.js';\nexport const validateAndMerge = (...sources) => {\n for (const source of sources) {\n if ((!isObject(source) || Array.isArray(source)) && source !== undefined) {\n throw new TypeError('The `options` argument must be an object');\n }\n }\n return deepMerge({}, ...sources);\n};\nexport const mergeHeaders = (source1 = {}, source2 = {}) => {\n const result = new globalThis.Headers(source1);\n const isHeadersInstance = source2 instanceof globalThis.Headers;\n const source = new globalThis.Headers(source2);\n for (const [key, value] of source.entries()) {\n if ((isHeadersInstance && value === 'undefined') || value === undefined) {\n result.delete(key);\n }\n else {\n result.set(key, value);\n }\n }\n return result;\n};\nfunction newHookValue(original, incoming, property) {\n return (Object.hasOwn(incoming, property) && incoming[property] === undefined)\n ? []\n : deepMerge(original[property] ?? [], incoming[property] ?? []);\n}\nexport const mergeHooks = (original = {}, incoming = {}) => ({\n beforeRequest: newHookValue(original, incoming, 'beforeRequest'),\n beforeRetry: newHookValue(original, incoming, 'beforeRetry'),\n afterResponse: newHookValue(original, incoming, 'afterResponse'),\n beforeError: newHookValue(original, incoming, 'beforeError'),\n});\nconst appendSearchParameters = (target, source) => {\n const result = new URLSearchParams();\n for (const input of [target, source]) {\n if (input === undefined) {\n continue;\n }\n if (input instanceof URLSearchParams) {\n for (const [key, value] of input.entries()) {\n result.append(key, value);\n }\n }\n else if (Array.isArray(input)) {\n for (const pair of input) {\n if (!Array.isArray(pair) || pair.length !== 2) {\n throw new TypeError('Array search parameters must be provided in [[key, value], ...] format');\n }\n result.append(String(pair[0]), String(pair[1]));\n }\n }\n else if (isObject(input)) {\n for (const [key, value] of Object.entries(input)) {\n if (value !== undefined) {\n result.append(key, String(value));\n }\n }\n }\n else {\n // String\n const parameters = new URLSearchParams(input);\n for (const [key, value] of parameters.entries()) {\n result.append(key, value);\n }\n }\n }\n return result;\n};\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = (...sources) => {\n let returnValue = {};\n let headers = {};\n let hooks = {};\n let searchParameters;\n const signals = [];\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n }\n else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n // Special handling for AbortSignal instances\n if (key === 'signal' && value instanceof globalThis.AbortSignal) {\n signals.push(value);\n continue;\n }\n // Special handling for context - shallow merge only\n if (key === 'context') {\n if (value !== undefined && value !== null && (!isObject(value) || Array.isArray(value))) {\n throw new TypeError('The `context` option must be an object');\n }\n // Shallow merge: always create a new object to prevent mutation bugs\n returnValue = {\n ...returnValue,\n context: (value === undefined || value === null)\n ? {}\n : { ...returnValue.context, ...value },\n };\n continue;\n }\n // Special handling for searchParams\n if (key === 'searchParams') {\n if (value === undefined || value === null) {\n // Explicit undefined or null removes searchParams\n searchParameters = undefined;\n }\n else {\n // First source: keep as-is to preserve type (string/object/URLSearchParams)\n // Subsequent sources: merge and convert to URLSearchParams\n searchParameters = searchParameters === undefined ? value : appendSearchParameters(searchParameters, value);\n }\n continue;\n }\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n if (isObject(source.hooks)) {\n hooks = mergeHooks(hooks, source.hooks);\n returnValue.hooks = hooks;\n }\n if (isObject(source.headers)) {\n headers = mergeHeaders(headers, source.headers);\n returnValue.headers = headers;\n }\n }\n }\n if (searchParameters !== undefined) {\n returnValue.searchParams = searchParameters;\n }\n if (signals.length > 0) {\n if (signals.length === 1) {\n returnValue.signal = signals[0];\n }\n else if (supportsAbortSignal) {\n returnValue.signal = AbortSignal.any(signals);\n }\n else {\n // When AbortSignal.any is not available, use the last signal\n // This maintains the previous behavior before signal merging was added\n // This can be remove when the `supportsAbortSignal` check is removed.`\n returnValue.signal = signals.at(-1);\n }\n }\n return returnValue;\n};\n//# sourceMappingURL=merge.js.map","import { requestMethods } from '../core/constants.js';\nexport const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n limit: 2,\n methods: retryMethods,\n statusCodes: retryStatusCodes,\n afterStatusCodes: retryAfterStatusCodes,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n delay: attemptCount => 0.3 * (2 ** (attemptCount - 1)) * 1000,\n jitter: undefined,\n retryOnTimeout: false,\n};\nexport const normalizeRetryOptions = (retry = {}) => {\n if (typeof retry === 'number') {\n return {\n ...defaultRetryOptions,\n limit: retry,\n };\n }\n if (retry.methods && !Array.isArray(retry.methods)) {\n throw new Error('retry.methods must be an array');\n }\n retry.methods &&= retry.methods.map(method => method.toLowerCase());\n if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n throw new Error('retry.statusCodes must be an array');\n }\n const normalizedRetry = Object.fromEntries(Object.entries(retry).filter(([, value]) => value !== undefined));\n return {\n ...defaultRetryOptions,\n ...normalizedRetry,\n };\n};\n//# sourceMappingURL=normalize.js.map","export class TimeoutError extends Error {\n request;\n constructor(request) {\n super(`Request timed out: ${request.method} ${request.url}`);\n this.name = 'TimeoutError';\n this.request = request;\n }\n}\n//# sourceMappingURL=TimeoutError.js.map","import { TimeoutError } from '../errors/TimeoutError.js';\n// `Promise.race()` workaround (#91)\nexport default async function timeout(request, init, abortController, options) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (abortController) {\n abortController.abort();\n }\n reject(new TimeoutError(request));\n }, options.timeout);\n void options\n .fetch(request, init)\n .then(resolve)\n .catch(reject)\n .then(() => {\n clearTimeout(timeoutId);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\nexport default async function delay(ms, { signal }) {\n return new Promise((resolve, reject) => {\n if (signal) {\n signal.throwIfAborted();\n signal.addEventListener('abort', abortHandler, { once: true });\n }\n function abortHandler() {\n clearTimeout(timeoutId);\n reject(signal.reason);\n }\n const timeoutId = setTimeout(() => {\n signal?.removeEventListener('abort', abortHandler);\n resolve();\n }, ms);\n });\n}\n//# sourceMappingURL=delay.js.map","import { kyOptionKeys, requestOptionsRegistry, vendorSpecificOptions } from '../core/constants.js';\nexport const findUnknownOptions = (request, options) => {\n const unknownOptions = {};\n for (const key in options) {\n // Skip inherited properties\n if (!Object.hasOwn(options, key)) {\n continue;\n }\n // An option is passed to fetch() if:\n // 1. It's not a standard RequestInit option (not in requestOptionsRegistry)\n // 2. It's not a ky-specific option (not in kyOptionKeys)\n // 3. Either:\n // a. It's not on the Request object, OR\n // b. It's a vendor-specific option that should always be passed (in vendorSpecificOptions)\n if (!(key in requestOptionsRegistry) && !(key in kyOptionKeys) && (!(key in request) || key in vendorSpecificOptions)) {\n unknownOptions[key] = options[key];\n }\n }\n return unknownOptions;\n};\nexport const hasSearchParameters = (search) => {\n if (search === undefined) {\n return false;\n }\n // The `typeof array` still gives \"object\", so we need different checking for array.\n if (Array.isArray(search)) {\n return search.length > 0;\n }\n if (search instanceof URLSearchParams) {\n return search.size > 0;\n }\n // Record\n if (typeof search === 'object') {\n return Object.keys(search).length > 0;\n }\n if (typeof search === 'string') {\n return search.trim().length > 0;\n }\n return Boolean(search);\n};\n//# sourceMappingURL=options.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { TimeoutError } from '../errors/TimeoutError.js';\nimport { ForceRetryError } from '../errors/ForceRetryError.js';\n/**\nType guard to check if an error is a Ky error.\n\n@param error - The error to check\n@returns `true` if the error is a Ky error, `false` otherwise\n\n@example\n```\nimport ky, {isKyError} from 'ky';\ntry {\n const response = await ky.get('/api/data');\n} catch (error) {\n if (isKyError(error)) {\n // Handle Ky-specific errors\n console.log('Ky error occurred:', error.message);\n } else {\n // Handle other errors\n console.log('Unknown error:', error);\n }\n}\n```\n*/\nexport function isKyError(error) {\n return isHTTPError(error) || isTimeoutError(error) || isForceRetryError(error);\n}\n/**\nType guard to check if an error is an HTTPError.\n\n@param error - The error to check\n@returns `true` if the error is an HTTPError, `false` otherwise\n\n@example\n```\nimport ky, {isHTTPError} from 'ky';\ntry {\n const response = await ky.get('/api/data');\n} catch (error) {\n if (isHTTPError(error)) {\n console.log('HTTP error status:', error.response.status);\n }\n}\n```\n*/\nexport function isHTTPError(error) {\n return error instanceof HTTPError || (error?.name === HTTPError.name);\n}\n/**\nType guard to check if an error is a TimeoutError.\n\n@param error - The error to check\n@returns `true` if the error is a TimeoutError, `false` otherwise\n\n@example\n```\nimport ky, {isTimeoutError} from 'ky';\ntry {\n const response = await ky.get('/api/data', { timeout: 1000 });\n} catch (error) {\n if (isTimeoutError(error)) {\n console.log('Request timed out:', error.request.url);\n }\n}\n```\n*/\nexport function isTimeoutError(error) {\n return error instanceof TimeoutError || (error?.name === TimeoutError.name);\n}\n/**\nType guard to check if an error is a ForceRetryError.\n\n@param error - The error to check\n@returns `true` if the error is a ForceRetryError, `false` otherwise\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n hooks: {\n beforeRetry: [\n ({error, retryCount}) => {\n if (isForceRetryError(error)) {\n console.log(`Forced retry #${retryCount}: ${error.code}`);\n }\n }\n ]\n }\n});\n```\n*/\nexport function isForceRetryError(error) {\n return error instanceof ForceRetryError || (error?.name === ForceRetryError.name);\n}\n//# sourceMappingURL=type-guards.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { NonError } from '../errors/NonError.js';\nimport { ForceRetryError } from '../errors/ForceRetryError.js';\nimport { streamRequest, streamResponse } from '../utils/body.js';\nimport { mergeHeaders, mergeHooks } from '../utils/merge.js';\nimport { normalizeRequestMethod, normalizeRetryOptions } from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport { findUnknownOptions, hasSearchParameters } from '../utils/options.js';\nimport { isHTTPError, isTimeoutError } from '../utils/type-guards.js';\nimport { maxSafeTimeout, responseTypes, stop, RetryMarker, supportsAbortController, supportsAbortSignal, supportsFormData, supportsResponseStreams, supportsRequestStreams, } from './constants.js';\nexport class Ky {\n static create(input, options) {\n const ky = new Ky(input, options);\n const function_ = async () => {\n if (typeof ky.#options.timeout === 'number' && ky.#options.timeout > maxSafeTimeout) {\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n }\n // Delay the fetch so that body method shortcuts can set the Accept header\n await Promise.resolve();\n // Before using ky.request, _fetch clones it and saves the clone for future retries to use.\n // If retry is not needed, close the cloned request's ReadableStream for memory safety.\n let response = await ky.#fetch();\n for (const hook of ky.#options.hooks.afterResponse) {\n // Clone the response before passing to hook so we can cancel it if needed\n const clonedResponse = ky.#decorateResponse(response.clone());\n let modifiedResponse;\n try {\n // eslint-disable-next-line no-await-in-loop\n modifiedResponse = await hook(ky.request, ky.#getNormalizedOptions(), clonedResponse, { retryCount: ky.#retryCount });\n }\n catch (error) {\n // Cancel both responses to prevent memory leaks when hook throws\n ky.#cancelResponseBody(clonedResponse);\n ky.#cancelResponseBody(response);\n throw error;\n }\n if (modifiedResponse instanceof RetryMarker) {\n // Cancel both the cloned response passed to the hook and the current response to prevent resource leaks (especially important in Deno/Bun).\n // Do not await cancellation since hooks can clone the response, leaving extra tee branches that keep cancel promises pending per the Streams spec.\n ky.#cancelResponseBody(clonedResponse);\n ky.#cancelResponseBody(response);\n throw new ForceRetryError(modifiedResponse.options);\n }\n // Determine which response to use going forward\n const nextResponse = modifiedResponse instanceof globalThis.Response ? modifiedResponse : response;\n // Cancel any response bodies we won't use to prevent memory leaks.\n // Uses fire-and-forget since hooks may have cloned the response, creating tee branches that block cancellation.\n if (clonedResponse !== nextResponse) {\n ky.#cancelResponseBody(clonedResponse);\n }\n if (response !== nextResponse) {\n ky.#cancelResponseBody(response);\n }\n response = nextResponse;\n }\n ky.#decorateResponse(response);\n if (!response.ok && (typeof ky.#options.throwHttpErrors === 'function'\n ? ky.#options.throwHttpErrors(response.status)\n : ky.#options.throwHttpErrors)) {\n let error = new HTTPError(response, ky.request, ky.#getNormalizedOptions());\n for (const hook of ky.#options.hooks.beforeError) {\n // eslint-disable-next-line no-await-in-loop\n error = await hook(error, { retryCount: ky.#retryCount });\n }\n throw error;\n }\n // If `onDownloadProgress` is passed, it uses the stream API internally\n if (ky.#options.onDownloadProgress) {\n if (typeof ky.#options.onDownloadProgress !== 'function') {\n throw new TypeError('The `onDownloadProgress` option must be a function');\n }\n if (!supportsResponseStreams) {\n throw new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n }\n const progressResponse = response.clone();\n ky.#cancelResponseBody(response);\n return streamResponse(progressResponse, ky.#options.onDownloadProgress);\n }\n return response;\n };\n // Always wrap in #retry to catch forced retries from afterResponse hooks\n // Method retriability is checked in #calculateRetryDelay for non-forced retries\n const result = ky.#retry(function_)\n .finally(() => {\n const originalRequest = ky.#originalRequest;\n // Ignore cancellation errors from already-locked or already-consumed streams.\n ky.#cancelBody(originalRequest?.body ?? undefined);\n ky.#cancelBody(ky.request.body ?? undefined);\n });\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n // Only expose `.bytes()` when the environment implements it.\n if (type === 'bytes'\n && typeof globalThis.Response?.prototype?.bytes !== 'function') {\n continue;\n }\n result[type] = async () => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n ky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n const response = await result;\n if (type === 'json') {\n if (response.status === 204) {\n return '';\n }\n const text = await response.text();\n if (text === '') {\n return '';\n }\n if (options.parseJson) {\n return options.parseJson(text);\n }\n return JSON.parse(text);\n }\n return response[type]();\n };\n }\n return result;\n }\n // eslint-disable-next-line unicorn/prevent-abbreviations\n static #normalizeSearchParams(searchParams) {\n // Filter out undefined values from plain objects\n if (searchParams && typeof searchParams === 'object' && !Array.isArray(searchParams) && !(searchParams instanceof URLSearchParams)) {\n return Object.fromEntries(Object.entries(searchParams).filter(([, value]) => value !== undefined));\n }\n return searchParams;\n }\n request;\n #abortController;\n #retryCount = 0;\n // eslint-disable-next-line @typescript-eslint/prefer-readonly -- False positive: #input is reassigned on line 202\n #input;\n #options;\n #originalRequest;\n #userProvidedAbortSignal;\n #cachedNormalizedOptions;\n // eslint-disable-next-line complexity\n constructor(input, options = {}) {\n this.#input = input;\n this.#options = {\n ...options,\n headers: mergeHeaders(this.#input.headers, options.headers),\n hooks: mergeHooks({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: [],\n }, options.hooks),\n method: normalizeRequestMethod(options.method ?? this.#input.method ?? 'GET'),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(options.prefixUrl || ''),\n retry: normalizeRetryOptions(options.retry),\n throwHttpErrors: options.throwHttpErrors ?? true,\n timeout: options.timeout ?? 10_000,\n fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n context: options.context ?? {},\n };\n if (typeof this.#input !== 'string' && !(this.#input instanceof URL || this.#input instanceof globalThis.Request)) {\n throw new TypeError('`input` must be a string, URL, or Request');\n }\n if (this.#options.prefixUrl && typeof this.#input === 'string') {\n if (this.#input.startsWith('/')) {\n throw new Error('`input` must not begin with a slash when using `prefixUrl`');\n }\n if (!this.#options.prefixUrl.endsWith('/')) {\n this.#options.prefixUrl += '/';\n }\n this.#input = this.#options.prefixUrl + this.#input;\n }\n if (supportsAbortController && supportsAbortSignal) {\n this.#userProvidedAbortSignal = this.#options.signal ?? this.#input.signal;\n this.#abortController = new globalThis.AbortController();\n this.#options.signal = this.#userProvidedAbortSignal ? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController.signal]) : this.#abortController.signal;\n }\n if (supportsRequestStreams) {\n // @ts-expect-error - Types are outdated.\n this.#options.duplex = 'half';\n }\n if (this.#options.json !== undefined) {\n this.#options.body = this.#options.stringifyJson?.(this.#options.json) ?? JSON.stringify(this.#options.json);\n this.#options.headers.set('content-type', this.#options.headers.get('content-type') ?? 'application/json');\n }\n // To provide correct form boundary, Content-Type header should be deleted when creating Request from another Request with FormData/URLSearchParams body\n // Only delete if user didn't explicitly provide a custom content-type\n const userProvidedContentType = options.headers && new globalThis.Headers(options.headers).has('content-type');\n if (this.#input instanceof globalThis.Request\n && ((supportsFormData && this.#options.body instanceof globalThis.FormData) || this.#options.body instanceof URLSearchParams)\n && !userProvidedContentType) {\n this.#options.headers.delete('content-type');\n }\n this.request = new globalThis.Request(this.#input, this.#options);\n if (hasSearchParameters(this.#options.searchParams)) {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const textSearchParams = typeof this.#options.searchParams === 'string'\n ? this.#options.searchParams.replace(/^\\?/, '')\n : new URLSearchParams(Ky.#normalizeSearchParams(this.#options.searchParams)).toString();\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const searchParams = '?' + textSearchParams;\n const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n // Recreate request with the updated URL. We already have all options in this.#options, including duplex.\n this.request = new globalThis.Request(url, this.#options);\n }\n // If `onUploadProgress` is passed, it uses the stream API internally\n if (this.#options.onUploadProgress) {\n if (typeof this.#options.onUploadProgress !== 'function') {\n throw new TypeError('The `onUploadProgress` option must be a function');\n }\n if (!supportsRequestStreams) {\n throw new Error('Request streams are not supported in your environment. The `duplex` option for `Request` is not available.');\n }\n this.request = this.#wrapRequestWithUploadProgress(this.request, this.#options.body ?? undefined);\n }\n }\n #calculateDelay() {\n const retryDelay = this.#options.retry.delay(this.#retryCount);\n let jitteredDelay = retryDelay;\n if (this.#options.retry.jitter === true) {\n jitteredDelay = Math.random() * retryDelay;\n }\n else if (typeof this.#options.retry.jitter === 'function') {\n jitteredDelay = this.#options.retry.jitter(retryDelay);\n if (!Number.isFinite(jitteredDelay) || jitteredDelay < 0) {\n jitteredDelay = retryDelay;\n }\n }\n // Handle undefined backoffLimit by treating it as no limit (Infinity)\n const backoffLimit = this.#options.retry.backoffLimit ?? Number.POSITIVE_INFINITY;\n return Math.min(backoffLimit, jitteredDelay);\n }\n async #calculateRetryDelay(error) {\n this.#retryCount++;\n if (this.#retryCount > this.#options.retry.limit) {\n throw error;\n }\n // Wrap non-Error throws to ensure consistent error handling\n const errorObject = error instanceof Error ? error : new NonError(error);\n // Handle forced retry from afterResponse hook - skip method check and shouldRetry\n if (errorObject instanceof ForceRetryError) {\n return errorObject.customDelay ?? this.#calculateDelay();\n }\n // Check if method is retriable for non-forced retries\n if (!this.#options.retry.methods.includes(this.request.method.toLowerCase())) {\n throw error;\n }\n // User-provided shouldRetry function takes precedence over all other checks\n if (this.#options.retry.shouldRetry !== undefined) {\n const result = await this.#options.retry.shouldRetry({ error: errorObject, retryCount: this.#retryCount });\n // Strict boolean checking - only exact true/false are handled specially\n if (result === false) {\n throw error;\n }\n if (result === true) {\n // Force retry - skip all other validation and return delay\n return this.#calculateDelay();\n }\n // If undefined or any other value, fall through to default behavior\n }\n // Default timeout behavior\n if (isTimeoutError(error) && !this.#options.retry.retryOnTimeout) {\n throw error;\n }\n if (isHTTPError(error)) {\n if (!this.#options.retry.statusCodes.includes(error.response.status)) {\n throw error;\n }\n const retryAfter = error.response.headers.get('Retry-After')\n ?? error.response.headers.get('RateLimit-Reset')\n ?? error.response.headers.get('X-RateLimit-Retry-After') // Symfony-based services\n ?? error.response.headers.get('X-RateLimit-Reset') // GitHub\n ?? error.response.headers.get('X-Rate-Limit-Reset'); // Twitter\n if (retryAfter && this.#options.retry.afterStatusCodes.includes(error.response.status)) {\n let after = Number(retryAfter) * 1000;\n if (Number.isNaN(after)) {\n after = Date.parse(retryAfter) - Date.now();\n }\n else if (after >= Date.parse('2024-01-01')) {\n // A large number is treated as a timestamp (fixed threshold protects against clock skew)\n after -= Date.now();\n }\n const max = this.#options.retry.maxRetryAfter ?? after;\n // Don't apply jitter when server provides explicit retry timing\n return after < max ? after : max;\n }\n if (error.response.status === 413) {\n throw error;\n }\n }\n return this.#calculateDelay();\n }\n #decorateResponse(response) {\n if (this.#options.parseJson) {\n response.json = async () => this.#options.parseJson(await response.text());\n }\n return response;\n }\n #cancelBody(body) {\n if (!body) {\n return;\n }\n // Ignore cancellation failures from already-locked or already-consumed streams.\n void body.cancel().catch(() => undefined);\n }\n #cancelResponseBody(response) {\n // Ignore cancellation failures from already-locked or already-consumed streams.\n this.#cancelBody(response.body ?? undefined);\n }\n async #retry(function_) {\n try {\n return await function_();\n }\n catch (error) {\n const ms = Math.min(await this.#calculateRetryDelay(error), maxSafeTimeout);\n if (this.#retryCount < 1) {\n throw error;\n }\n // Only use user-provided signal for delay, not our internal abortController\n await delay(ms, this.#userProvidedAbortSignal ? { signal: this.#userProvidedAbortSignal } : {});\n // Apply custom request from forced retry before beforeRetry hooks\n // Ensure the custom request has the correct managed signal for timeouts and user aborts\n if (error instanceof ForceRetryError && error.customRequest) {\n const managedRequest = this.#options.signal\n ? new globalThis.Request(error.customRequest, { signal: this.#options.signal })\n : new globalThis.Request(error.customRequest);\n this.#assignRequest(managedRequest);\n }\n for (const hook of this.#options.hooks.beforeRetry) {\n // eslint-disable-next-line no-await-in-loop\n const hookResult = await hook({\n request: this.request,\n options: this.#getNormalizedOptions(),\n error: error,\n retryCount: this.#retryCount,\n });\n if (hookResult instanceof globalThis.Request) {\n this.#assignRequest(hookResult);\n break;\n }\n // If a Response is returned, use it and skip the retry\n if (hookResult instanceof globalThis.Response) {\n return hookResult;\n }\n // If `stop` is returned from the hook, the retry process is stopped\n if (hookResult === stop) {\n return;\n }\n }\n return this.#retry(function_);\n }\n }\n async #fetch() {\n // Reset abortController if it was aborted (happens on timeout retry)\n if (this.#abortController?.signal.aborted) {\n this.#abortController = new globalThis.AbortController();\n this.#options.signal = this.#userProvidedAbortSignal ? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController.signal]) : this.#abortController.signal;\n // Recreate request with new signal\n this.request = new globalThis.Request(this.request, { signal: this.#options.signal });\n }\n for (const hook of this.#options.hooks.beforeRequest) {\n // eslint-disable-next-line no-await-in-loop\n const result = await hook(this.request, this.#getNormalizedOptions(), { retryCount: this.#retryCount });\n if (result instanceof Response) {\n return result;\n }\n if (result instanceof globalThis.Request) {\n this.#assignRequest(result);\n break;\n }\n }\n const nonRequestOptions = findUnknownOptions(this.request, this.#options);\n // Cloning is done here to prepare in advance for retries\n this.#originalRequest = this.request;\n this.request = this.#originalRequest.clone();\n if (this.#options.timeout === false) {\n return this.#options.fetch(this.#originalRequest, nonRequestOptions);\n }\n return timeout(this.#originalRequest, nonRequestOptions, this.#abortController, this.#options);\n }\n #getNormalizedOptions() {\n if (!this.#cachedNormalizedOptions) {\n const { hooks, ...normalizedOptions } = this.#options;\n this.#cachedNormalizedOptions = Object.freeze(normalizedOptions);\n }\n return this.#cachedNormalizedOptions;\n }\n #assignRequest(request) {\n this.#cachedNormalizedOptions = undefined;\n this.request = this.#wrapRequestWithUploadProgress(request);\n }\n #wrapRequestWithUploadProgress(request, originalBody) {\n if (!this.#options.onUploadProgress || !request.body) {\n return request;\n }\n return streamRequest(request, this.#options.onUploadProgress, originalBody ?? this.#options.body ?? undefined);\n }\n}\n//# sourceMappingURL=Ky.js.map","/*! MIT License © Sindre Sorhus */\nimport { Ky } from './core/Ky.js';\nimport { requestMethods, stop, retry } from './core/constants.js';\nimport { validateAndMerge } from './utils/merge.js';\nconst createInstance = (defaults) => {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n const ky = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n for (const method of requestMethods) {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n ky[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, { method }));\n }\n ky.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n ky.extend = (newDefaults) => {\n if (typeof newDefaults === 'function') {\n newDefaults = newDefaults(defaults ?? {});\n }\n return createInstance(validateAndMerge(defaults, newDefaults));\n };\n ky.stop = stop;\n ky.retry = retry;\n return ky;\n};\nconst ky = createInstance();\nexport default ky;\nexport { HTTPError } from './errors/HTTPError.js';\nexport { TimeoutError } from './errors/TimeoutError.js';\nexport { ForceRetryError } from './errors/ForceRetryError.js';\nexport { isKyError, isHTTPError, isTimeoutError, isForceRetryError, } from './utils/type-guards.js';\n// Intentionally not exporting this for now as it's just an implementation detail and we don't want to commit to a certain API yet at least.\n// export {NonError} from './errors/NonError.js';\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],"mappings":"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"}
package/dist/flat.cjs ADDED
@@ -0,0 +1,7 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./distribution-BwPC3bzJ.cjs`),t=(e,t,n)=>{typeof n==`string`||n instanceof Blob?e.append(t,n):n instanceof Date?e.append(t,n.toISOString()):e.append(t,JSON.stringify(n))},n={bodySerializer:e=>{let n=new FormData;return Object.entries(e).forEach(([e,r])=>{r!=null&&(Array.isArray(r)?r.forEach(r=>t(n,e,r)):t(n,e,r))}),n}},r={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)};Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`});const i=({onRequest:e,onSseError:t,onSseEvent:n,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:a,sseMaxRetryAttempts:o,sseMaxRetryDelay:s,sseSleepFn:c,url:l,...u})=>{let d,f=c??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let c=a??3e3,p=0,m=u.signal??new AbortController().signal;for(;!m.aborted;){p++;let a=u.headers instanceof Headers?u.headers:new Headers(u.headers);d!==void 0&&a.set(`Last-Event-ID`,d);try{let t={redirect:`follow`,...u,body:u.serializedBody,headers:a,signal:m},o=new Request(l,t);e&&(o=await e(l,t));let s=await(u.fetch??globalThis.fetch)(o);if(!s.ok)throw Error(`SSE failed: ${s.status} ${s.statusText}`);if(!s.body)throw Error(`No body in SSE response`);let f=s.body.pipeThrough(new TextDecoderStream).getReader(),p=``,h=()=>{try{f.cancel()}catch{}};m.addEventListener(`abort`,h);try{for(;;){let{done:e,value:t}=await f.read();if(e)break;p+=t,p=p.replace(/\r\n/g,`
2
+ `).replace(/\r/g,`
3
+ `);let a=p.split(`
4
+
5
+ `);p=a.pop()??``;for(let e of a){let t=e.split(`
6
+ `),a=[],o;for(let e of t)if(e.startsWith(`data:`))a.push(e.replace(/^data:\s*/,``));else if(e.startsWith(`event:`))o=e.replace(/^event:\s*/,``);else if(e.startsWith(`id:`))d=e.replace(/^id:\s*/,``);else if(e.startsWith(`retry:`)){let t=Number.parseInt(e.replace(/^retry:\s*/,``),10);Number.isNaN(t)||(c=t)}let s,l=!1;if(a.length){let e=a.join(`
7
+ `);try{s=JSON.parse(e),l=!0}catch{s=e}}l&&(i&&await i(s),r&&(s=await r(s))),n?.({data:s,event:o,id:d,retry:c}),a.length&&(yield s)}}}finally{m.removeEventListener(`abort`,h),f.releaseLock()}break}catch(e){if(t?.(e),o!==void 0&&p>=o)break;await f(Math.min(c*2**(p-1),s??3e4))}}}()}},a=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},o=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},s=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},c=({allowReserved:e,explode:t,name:n,style:r,value:i})=>{if(!t){let t=(e?i:i.map(e=>encodeURIComponent(e))).join(o(r));switch(r){case`label`:return`.${t}`;case`matrix`:return`;${n}=${t}`;case`simple`:return t;default:return`${n}=${t}`}}let s=a(r),c=i.map(t=>r===`label`||r===`simple`?e?t:encodeURIComponent(t):l({allowReserved:e,name:n,value:t})).join(s);return r===`label`||r===`matrix`?s+c:c},l=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},u=({allowReserved:e,explode:t,name:n,style:r,value:i,valueOnly:a})=>{if(i instanceof Date)return a?i.toISOString():`${n}=${i.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(i).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let a=t.join(`,`);switch(r){case`form`:return`${n}=${a}`;case`label`:return`.${a}`;case`matrix`:return`;${n}=${a}`;default:return a}}let o=s(r),c=Object.entries(i).map(([t,i])=>l({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(o);return r===`label`||r===`matrix`?o+c:c},d=/\{[^{}]+\}/g,f=({path:e,url:t})=>{let n=t,r=t.match(d);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),a=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),a=`label`):i.startsWith(`;`)&&(i=i.substring(1),a=`matrix`);let o=e[i];if(o==null)continue;if(Array.isArray(o)){n=n.replace(t,c({explode:r,name:i,style:a,value:o}));continue}if(typeof o==`object`){n=n.replace(t,u({explode:r,name:i,style:a,value:o,valueOnly:!0}));continue}if(a===`matrix`){n=n.replace(t,`;${l({name:i,value:o})}`);continue}let s=encodeURIComponent(a===`label`?`.${o}`:o);n=n.replace(t,s)}return n},p=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=f({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o};function m(e){let t=e.body!==void 0;if(t&&e.bodySerializer)return`serializedBody`in e?e.serializedBody!==void 0&&e.serializedBody!==``?e.serializedBody:null:e.body===``?null:e.body;if(t)return e.body}const h=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},g=({parameters:e={},...t}={})=>n=>{let r=[];if(n&&typeof n==`object`)for(let i in n){let a=n[i];if(a==null)continue;let o=e[i]||t;if(Array.isArray(a)){let e=c({allowReserved:o.allowReserved,explode:!0,name:i,style:`form`,value:a,...o.array});e&&r.push(e)}else if(typeof a==`object`){let e=u({allowReserved:o.allowReserved,explode:!0,name:i,style:`deepObject`,value:a,...o.object});e&&r.push(e)}else{let e=l({allowReserved:o.allowReserved,name:i,value:a});e&&r.push(e)}}return r.join(`&`)},_=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},v=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1,y=async({security:e,...t})=>{for(let n of e){if(v(t,n.name))continue;let e=await h(n,t.auth);if(!e)continue;let r=n.name??`Authorization`;switch(n.in){case`query`:t.query||={},t.query[r]=e;break;case`cookie`:t.headers.append(`Cookie`,`${r}=${e}`);break;default:t.headers.set(r,e);break}}},b=e=>p({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:g(e.querySerializer),url:e.url}),x=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=C(e.headers,t.headers),n},S=e=>{let t=[];return e.forEach((e,n)=>{t.push([n,e])}),t},C=(...e)=>{let t=new Headers;for(let n of e){if(!n)continue;let e=n instanceof Headers?S(n):Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t};var w=class{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e==`number`?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let n=this.getInterceptorIndex(e);return this.fns[n]?(this.fns[n]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}};const T=()=>({error:new w,request:new w,response:new w}),E=g({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),D={"Content-Type":`application/json`},O=(e={})=>({...r,headers:D,parseAs:`auto`,querySerializer:E,throwOnError:!1,timeout:1e4,...e}),k=((t={})=>{let n=x(O(),t),r=()=>({...n}),a=e=>(n=x(n,e),r()),o=T(),s=async t=>{let r={...n,...t,headers:C(n.headers,t.headers),ky:t.ky??n.ky??e.t,serializedBody:void 0};return r.security&&await y({...r,security:r.security}),r.requestValidator&&await r.requestValidator(r),r.body!==void 0&&r.bodySerializer&&(r.serializedBody=r.bodySerializer(r.body)),(r.body===void 0||r.serializedBody===``)&&r.headers.delete(`Content-Type`),{opts:r,url:b(r)}},c=async(e,t,n,r)=>{let i={request:t,response:e},a=await e.text(),o;try{o=JSON.parse(a)}catch{o=void 0}let s=o??a,c=s;for(let i of r.error.fns)i&&(c=await i(s,e,t,n));if(c||={},n.throwOnError)throw c;return n.responseStyle===`data`?void 0:{error:c,...i}},l=async e=>{let{opts:t,url:n}=await s(e),r=t.ky,i={body:m(t),cache:t.cache,credentials:t.credentials,headers:t.headers,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:`follow`,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,throwHttpErrors:t.throwOnError??!1,timeout:t.timeout,...t.kyOptions};if(t.retry&&typeof t.retry==`object`){let e=t.retry;i.retry={limit:e.limit??2,methods:e.methods,statusCodes:e.statusCodes}}let a=new Request(n,{body:i.body,headers:i.headers,method:i.method});for(let e of o.request.fns)e&&(a=await e(a,t));let l;try{l=await r(a,i)}catch(e){if(e&&typeof e==`object`&&`response`in e){l=e.response;for(let e of o.response.fns)e&&(l=await e(l,a,t));return c(l,a,t,o)}throw e}for(let e of o.response.fns)e&&(l=await e(l,a,t));let u={request:a,response:l};if(l.ok){let e=(t.parseAs===`auto`?_(l.headers.get(`Content-Type`)):t.parseAs)??`json`;if(l.status===204||l.headers.get(`Content-Length`)===`0`){let n;switch(e){case`arrayBuffer`:case`blob`:case`text`:n=await l[e]();break;case`formData`:n=new FormData;break;case`stream`:n=l.body;break;default:n={};break}return t.responseStyle===`data`?n:{data:n,...u}}let n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`text`:n=await l[e]();break;case`json`:{let e=await l.text();n=e?JSON.parse(e):{};break}case`stream`:return t.responseStyle===`data`?l.body:{data:l.body,...u}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...u}}return c(l,a,t,o)},u=e=>t=>l({...t,method:e}),d=e=>async t=>{let{opts:n,url:r}=await s(t);return i({...n,body:n.body,fetch:globalThis.fetch,headers:n.headers,method:e,onRequest:async(e,t)=>{let r=new Request(e,t);for(let e of o.request.fns)e&&(r=await e(r,n));return r},serializedBody:m(n),url:r})};return{buildUrl:e=>b({...n,...e}),connect:u(`CONNECT`),delete:u(`DELETE`),get:u(`GET`),getConfig:r,head:u(`HEAD`),interceptors:o,options:u(`OPTIONS`),patch:u(`PATCH`),post:u(`POST`),put:u(`PUT`),request:l,setConfig:a,sse:{connect:d(`CONNECT`),delete:d(`DELETE`),get:d(`GET`),head:d(`HEAD`),options:d(`OPTIONS`),patch:d(`PATCH`),post:d(`POST`),put:d(`PUT`),trace:d(`TRACE`)},trace:u(`TRACE`)}})(O({baseUrl:`https://s3d.adobe.io`})),A=e=>(e?.client??k).post({security:[{scheme:`bearer`,type:`http`}],url:`/v1/composites/compose`,...e,headers:{"Content-Type":`application/json`,...e?.headers}}),j=e=>(e?.client??k).post({security:[{scheme:`bearer`,type:`http`}],url:`/v1/scenes/assemble`,...e,headers:{"Content-Type":`application/json`,...e?.headers}}),M=e=>(e?.client??k).post({security:[{scheme:`bearer`,type:`http`}],url:`/v1/scenes/convert`,...e,headers:{"Content-Type":`application/json`,...e?.headers}}),N=e=>(e?.client??k).post({security:[{scheme:`bearer`,type:`http`}],url:`/v1/scenes/describe`,...e,headers:{"Content-Type":`application/json`,...e?.headers}}),P=e=>(e?.client??k).post({security:[{scheme:`bearer`,type:`http`}],url:`/v1/scenes/render`,...e,headers:{"Content-Type":`application/json`,...e?.headers}}),F=e=>(e?.client??k).post({security:[{scheme:`bearer`,type:`http`}],url:`/v1/scenes/render-basic`,...e,headers:{"Content-Type":`application/json`,...e?.headers}}),I=e=>(e.client??k).post({...n,security:[{scheme:`bearer`,type:`http`}],url:`/v1/spaces`,...e,headers:{"Content-Type":null,...e.headers}});exports.createSpaceV1=I,exports.v1CompositesCompose=A,exports.v1ScenesAssemble=j,exports.v1ScenesConvert=M,exports.v1ScenesDescribe=N,exports.v1ScenesRender=P,exports.v1ScenesRenderBasic=F;