@algolia/requester-fetch 5.53.0 → 5.54.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.
@@ -1,2 +1,2 @@
1
- function s(e){return e instanceof Error&&e.name==="AbortError"}function u(e,o){return s(e)?o:e instanceof Error?e.message:"Network request failed"}function l({requesterOptions:e={}}={}){async function o(n){let i=new AbortController,c=i.signal,a=t=>setTimeout(()=>{i.abort()},t),m=a(n.connectTimeout),r;try{r=await fetch(n.url,{method:n.method,body:n.data||null,redirect:"manual",signal:c,...e,headers:{...e.headers,...n.headers}})}catch(t){return{status:0,content:u(t,"Connection timeout"),isTimedOut:s(t)}}clearTimeout(m),a(n.responseTimeout);try{return{content:await r.text(),isTimedOut:!1,status:r.status}}catch(t){return{status:0,content:u(t,"Socket timeout"),isTimedOut:s(t)}}}return{send:o}}export{l as createFetchRequester};
1
+ function i(t){return t instanceof Error&&t.name==="AbortError"}function u(t,r){return i(t)?r:t instanceof Error?t.message:"Network request failed"}function m({requesterOptions:t={}}={}){async function r(e){let n=new AbortController,s=n.signal,c=o=>setTimeout(()=>{n.abort()},o),l=c(e.connectTimeout),a;try{a=await fetch(e.url,{method:e.method,body:e.data||null,redirect:"manual",signal:s,...t,headers:{...t.headers,...e.headers}})}catch(o){return{status:0,content:u(o,"Connection timeout"),isTimedOut:i(o)}}clearTimeout(l),c(e.responseTimeout);try{return{content:await a.text(),isTimedOut:!1,status:a.status}}catch(o){return{status:0,content:u(o,"Socket timeout"),isTimedOut:i(o)}}}async function d(e){let n=await fetch(e.url,{method:e.method,body:e.data||null,redirect:"manual",...t,headers:{...t.headers,...e.headers}});if(!n.ok){let s=await n.text();throw new Error(`HTTP ${n.status}: ${s}`)}if(n.body===null)throw new Error("Response body is null \u2014 streaming not supported");return n.body}return{send:r,sendStream:d}}export{m as createFetchRequester};
2
2
  //# sourceMappingURL=requester.fetch.browser.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createFetchRequester.ts"],"sourcesContent":["import type { Response as AlgoliaResponse, EndRequest, Requester } from '@algolia/client-common';\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === 'AbortError';\n}\n\nfunction getErrorMessage(error: unknown, abortContent: string): string {\n if (isAbortError(error)) {\n return abortContent;\n }\n return error instanceof Error ? error.message : 'Network request failed';\n}\n\nexport type FetchRequesterOptions = {\n readonly requesterOptions?: RequestInit | undefined;\n};\n\nexport function createFetchRequester({ requesterOptions = {} }: FetchRequesterOptions = {}): Requester {\n async function send(request: EndRequest): Promise<AlgoliaResponse> {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n const createTimeout = (timeout: number): NodeJS.Timeout => {\n return setTimeout(() => {\n abortController.abort();\n }, timeout);\n };\n\n const connectTimeout = createTimeout(request.connectTimeout);\n\n let fetchRes: Response;\n try {\n fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n signal,\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Connection timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n\n clearTimeout(connectTimeout);\n\n createTimeout(request.responseTimeout);\n\n try {\n const content = await fetchRes.text();\n\n return {\n content,\n isTimedOut: false,\n status: fetchRes.status,\n };\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Socket timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n }\n\n return { send };\n}\n"],"mappings":"AAEA,SAASA,EAAaC,EAAyB,CAC7C,OAAOA,aAAiB,OAASA,EAAM,OAAS,YAClD,CAEA,SAASC,EAAgBD,EAAgBE,EAA8B,CACrE,OAAIH,EAAaC,CAAK,EACbE,EAEFF,aAAiB,MAAQA,EAAM,QAAU,wBAClD,CAMO,SAASG,EAAqB,CAAE,iBAAAC,EAAmB,CAAC,CAAE,EAA2B,CAAC,EAAc,CACrG,eAAeC,EAAKC,EAA+C,CACjE,IAAMC,EAAkB,IAAI,gBACtBC,EAASD,EAAgB,OAEzBE,EAAiBC,GACd,WAAW,IAAM,CACtBH,EAAgB,MAAM,CACxB,EAAGG,CAAO,EAGNC,EAAiBF,EAAcH,EAAQ,cAAc,EAEvDM,EACJ,GAAI,CACFA,EAAW,MAAM,MAAMN,EAAQ,IAAK,CAClC,OAAQA,EAAQ,OAChB,KAAOA,EAAQ,MAAqB,KACpC,SAAU,SACV,OAAAE,EACA,GAAGJ,EACH,QAAS,CACP,GAAGA,EAAiB,QACpB,GAAGE,EAAQ,OACb,CACF,CAAC,CACH,OAASN,EAAO,CACd,MAAO,CACL,OAAQ,EACR,QAASC,EAAgBD,EAAO,oBAAoB,EACpD,WAAYD,EAAaC,CAAK,CAChC,CACF,CAEA,aAAaW,CAAc,EAE3BF,EAAcH,EAAQ,eAAe,EAErC,GAAI,CAGF,MAAO,CACL,QAHc,MAAMM,EAAS,KAAK,EAIlC,WAAY,GACZ,OAAQA,EAAS,MACnB,CACF,OAASZ,EAAO,CACd,MAAO,CACL,OAAQ,EACR,QAASC,EAAgBD,EAAO,gBAAgB,EAChD,WAAYD,EAAaC,CAAK,CAChC,CACF,CACF,CAEA,MAAO,CAAE,KAAAK,CAAK,CAChB","names":["isAbortError","error","getErrorMessage","abortContent","createFetchRequester","requesterOptions","send","request","abortController","signal","createTimeout","timeout","connectTimeout","fetchRes"]}
1
+ {"version":3,"sources":["../src/createFetchRequester.ts"],"sourcesContent":["import type { Response as AlgoliaResponse, EndRequest, Requester } from '@algolia/client-common';\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === 'AbortError';\n}\n\nfunction getErrorMessage(error: unknown, abortContent: string): string {\n if (isAbortError(error)) {\n return abortContent;\n }\n return error instanceof Error ? error.message : 'Network request failed';\n}\n\nexport type FetchRequesterOptions = {\n readonly requesterOptions?: RequestInit | undefined;\n};\n\nexport function createFetchRequester({ requesterOptions = {} }: FetchRequesterOptions = {}): Requester {\n async function send(request: EndRequest): Promise<AlgoliaResponse> {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n const createTimeout = (timeout: number): NodeJS.Timeout => {\n return setTimeout(() => {\n abortController.abort();\n }, timeout);\n };\n\n const connectTimeout = createTimeout(request.connectTimeout);\n\n let fetchRes: Response;\n try {\n fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n signal,\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Connection timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n\n clearTimeout(connectTimeout);\n\n createTimeout(request.responseTimeout);\n\n try {\n const content = await fetchRes.text();\n\n return {\n content,\n isTimedOut: false,\n status: fetchRes.status,\n };\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Socket timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n }\n\n async function sendStream(request: EndRequest): Promise<ReadableStream<Uint8Array>> {\n const fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n\n if (!fetchRes.ok) {\n const text = await fetchRes.text();\n throw new Error(`HTTP ${fetchRes.status}: ${text}`);\n }\n\n if (fetchRes.body === null) {\n throw new Error('Response body is null — streaming not supported');\n }\n\n return fetchRes.body;\n }\n\n return { send, sendStream };\n}\n"],"mappings":"AAEA,SAASA,EAAaC,EAAyB,CAC7C,OAAOA,aAAiB,OAASA,EAAM,OAAS,YAClD,CAEA,SAASC,EAAgBD,EAAgBE,EAA8B,CACrE,OAAIH,EAAaC,CAAK,EACbE,EAEFF,aAAiB,MAAQA,EAAM,QAAU,wBAClD,CAMO,SAASG,EAAqB,CAAE,iBAAAC,EAAmB,CAAC,CAAE,EAA2B,CAAC,EAAc,CACrG,eAAeC,EAAKC,EAA+C,CACjE,IAAMC,EAAkB,IAAI,gBACtBC,EAASD,EAAgB,OAEzBE,EAAiBC,GACd,WAAW,IAAM,CACtBH,EAAgB,MAAM,CACxB,EAAGG,CAAO,EAGNC,EAAiBF,EAAcH,EAAQ,cAAc,EAEvDM,EACJ,GAAI,CACFA,EAAW,MAAM,MAAMN,EAAQ,IAAK,CAClC,OAAQA,EAAQ,OAChB,KAAOA,EAAQ,MAAqB,KACpC,SAAU,SACV,OAAAE,EACA,GAAGJ,EACH,QAAS,CACP,GAAGA,EAAiB,QACpB,GAAGE,EAAQ,OACb,CACF,CAAC,CACH,OAASN,EAAO,CACd,MAAO,CACL,OAAQ,EACR,QAASC,EAAgBD,EAAO,oBAAoB,EACpD,WAAYD,EAAaC,CAAK,CAChC,CACF,CAEA,aAAaW,CAAc,EAE3BF,EAAcH,EAAQ,eAAe,EAErC,GAAI,CAGF,MAAO,CACL,QAHc,MAAMM,EAAS,KAAK,EAIlC,WAAY,GACZ,OAAQA,EAAS,MACnB,CACF,OAASZ,EAAO,CACd,MAAO,CACL,OAAQ,EACR,QAASC,EAAgBD,EAAO,gBAAgB,EAChD,WAAYD,EAAaC,CAAK,CAChC,CACF,CACF,CAEA,eAAea,EAAWP,EAA0D,CAClF,IAAMM,EAAW,MAAM,MAAMN,EAAQ,IAAK,CACxC,OAAQA,EAAQ,OAChB,KAAOA,EAAQ,MAAqB,KACpC,SAAU,SACV,GAAGF,EACH,QAAS,CACP,GAAGA,EAAiB,QACpB,GAAGE,EAAQ,OACb,CACF,CAAC,EAED,GAAI,CAACM,EAAS,GAAI,CAChB,IAAME,EAAO,MAAMF,EAAS,KAAK,EACjC,MAAM,IAAI,MAAM,QAAQA,EAAS,MAAM,KAAKE,CAAI,EAAE,CACpD,CAEA,GAAIF,EAAS,OAAS,KACpB,MAAM,IAAI,MAAM,sDAAiD,EAGnE,OAAOA,EAAS,IAClB,CAEA,MAAO,CAAE,KAAAP,EAAM,WAAAQ,CAAW,CAC5B","names":["isAbortError","error","getErrorMessage","abortContent","createFetchRequester","requesterOptions","send","request","abortController","signal","createTimeout","timeout","connectTimeout","fetchRes","sendStream","text"]}
@@ -81,7 +81,27 @@ function createFetchRequester({ requesterOptions = {} } = {}) {
81
81
  };
82
82
  }
83
83
  }
84
- return { send };
84
+ async function sendStream(request) {
85
+ const fetchRes = await fetch(request.url, {
86
+ method: request.method,
87
+ body: request.data || null,
88
+ redirect: "manual",
89
+ ...requesterOptions,
90
+ headers: {
91
+ ...requesterOptions.headers,
92
+ ...request.headers
93
+ }
94
+ });
95
+ if (!fetchRes.ok) {
96
+ const text = await fetchRes.text();
97
+ throw new Error(`HTTP ${fetchRes.status}: ${text}`);
98
+ }
99
+ if (fetchRes.body === null) {
100
+ throw new Error("Response body is null \u2014 streaming not supported");
101
+ }
102
+ return fetchRes.body;
103
+ }
104
+ return { send, sendStream };
85
105
  }
86
106
  // Annotate the CommonJS export names for ESM import in node:
87
107
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/createFetchRequester.ts"],"sourcesContent":["export * from './createFetchRequester';\n","import type { Response as AlgoliaResponse, EndRequest, Requester } from '@algolia/client-common';\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === 'AbortError';\n}\n\nfunction getErrorMessage(error: unknown, abortContent: string): string {\n if (isAbortError(error)) {\n return abortContent;\n }\n return error instanceof Error ? error.message : 'Network request failed';\n}\n\nexport type FetchRequesterOptions = {\n readonly requesterOptions?: RequestInit | undefined;\n};\n\nexport function createFetchRequester({ requesterOptions = {} }: FetchRequesterOptions = {}): Requester {\n async function send(request: EndRequest): Promise<AlgoliaResponse> {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n const createTimeout = (timeout: number): NodeJS.Timeout => {\n return setTimeout(() => {\n abortController.abort();\n }, timeout);\n };\n\n const connectTimeout = createTimeout(request.connectTimeout);\n\n let fetchRes: Response;\n try {\n fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n signal,\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Connection timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n\n clearTimeout(connectTimeout);\n\n createTimeout(request.responseTimeout);\n\n try {\n const content = await fetchRes.text();\n\n return {\n content,\n isTimedOut: false,\n status: fetchRes.status,\n };\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Socket timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n }\n\n return { send };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,iBAAiB,SAAS,MAAM,SAAS;AAClD;AAEA,SAAS,gBAAgB,OAAgB,cAA8B;AACrE,MAAI,aAAa,KAAK,GAAG;AACvB,WAAO;AAAA,EACT;AACA,SAAO,iBAAiB,QAAQ,MAAM,UAAU;AAClD;AAMO,SAAS,qBAAqB,EAAE,mBAAmB,CAAC,EAAE,IAA2B,CAAC,GAAc;AACrG,iBAAe,KAAK,SAA+C;AACjE,UAAM,kBAAkB,IAAI,gBAAgB;AAC5C,UAAM,SAAS,gBAAgB;AAE/B,UAAM,gBAAgB,CAAC,YAAoC;AACzD,aAAO,WAAW,MAAM;AACtB,wBAAgB,MAAM;AAAA,MACxB,GAAG,OAAO;AAAA,IACZ;AAEA,UAAM,iBAAiB,cAAc,QAAQ,cAAc;AAE3D,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,MAAM,QAAQ,KAAK;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,MAAO,QAAQ,QAAqB;AAAA,QACpC,UAAU;AAAA,QACV;AAAA,QACA,GAAG;AAAA,QACH,SAAS;AAAA,UACP,GAAG,iBAAiB;AAAA,UACpB,GAAG,QAAQ;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,oBAAoB;AAAA,QACpD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,iBAAa,cAAc;AAE3B,kBAAc,QAAQ,eAAe;AAErC,QAAI;AACF,YAAM,UAAU,MAAM,SAAS,KAAK;AAEpC,aAAO;AAAA,QACL;AAAA,QACA,YAAY;AAAA,QACZ,QAAQ,SAAS;AAAA,MACnB;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,gBAAgB;AAAA,QAChD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,KAAK;AAChB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/createFetchRequester.ts"],"sourcesContent":["export * from './createFetchRequester';\n","import type { Response as AlgoliaResponse, EndRequest, Requester } from '@algolia/client-common';\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === 'AbortError';\n}\n\nfunction getErrorMessage(error: unknown, abortContent: string): string {\n if (isAbortError(error)) {\n return abortContent;\n }\n return error instanceof Error ? error.message : 'Network request failed';\n}\n\nexport type FetchRequesterOptions = {\n readonly requesterOptions?: RequestInit | undefined;\n};\n\nexport function createFetchRequester({ requesterOptions = {} }: FetchRequesterOptions = {}): Requester {\n async function send(request: EndRequest): Promise<AlgoliaResponse> {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n const createTimeout = (timeout: number): NodeJS.Timeout => {\n return setTimeout(() => {\n abortController.abort();\n }, timeout);\n };\n\n const connectTimeout = createTimeout(request.connectTimeout);\n\n let fetchRes: Response;\n try {\n fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n signal,\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Connection timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n\n clearTimeout(connectTimeout);\n\n createTimeout(request.responseTimeout);\n\n try {\n const content = await fetchRes.text();\n\n return {\n content,\n isTimedOut: false,\n status: fetchRes.status,\n };\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Socket timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n }\n\n async function sendStream(request: EndRequest): Promise<ReadableStream<Uint8Array>> {\n const fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n\n if (!fetchRes.ok) {\n const text = await fetchRes.text();\n throw new Error(`HTTP ${fetchRes.status}: ${text}`);\n }\n\n if (fetchRes.body === null) {\n throw new Error('Response body is null — streaming not supported');\n }\n\n return fetchRes.body;\n }\n\n return { send, sendStream };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,iBAAiB,SAAS,MAAM,SAAS;AAClD;AAEA,SAAS,gBAAgB,OAAgB,cAA8B;AACrE,MAAI,aAAa,KAAK,GAAG;AACvB,WAAO;AAAA,EACT;AACA,SAAO,iBAAiB,QAAQ,MAAM,UAAU;AAClD;AAMO,SAAS,qBAAqB,EAAE,mBAAmB,CAAC,EAAE,IAA2B,CAAC,GAAc;AACrG,iBAAe,KAAK,SAA+C;AACjE,UAAM,kBAAkB,IAAI,gBAAgB;AAC5C,UAAM,SAAS,gBAAgB;AAE/B,UAAM,gBAAgB,CAAC,YAAoC;AACzD,aAAO,WAAW,MAAM;AACtB,wBAAgB,MAAM;AAAA,MACxB,GAAG,OAAO;AAAA,IACZ;AAEA,UAAM,iBAAiB,cAAc,QAAQ,cAAc;AAE3D,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,MAAM,QAAQ,KAAK;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,MAAO,QAAQ,QAAqB;AAAA,QACpC,UAAU;AAAA,QACV;AAAA,QACA,GAAG;AAAA,QACH,SAAS;AAAA,UACP,GAAG,iBAAiB;AAAA,UACpB,GAAG,QAAQ;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,oBAAoB;AAAA,QACpD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,iBAAa,cAAc;AAE3B,kBAAc,QAAQ,eAAe;AAErC,QAAI;AACF,YAAM,UAAU,MAAM,SAAS,KAAK;AAEpC,aAAO;AAAA,QACL;AAAA,QACA,YAAY;AAAA,QACZ,QAAQ,SAAS;AAAA,MACnB;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,gBAAgB;AAAA,QAChD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,iBAAe,WAAW,SAA0D;AAClF,UAAM,WAAW,MAAM,MAAM,QAAQ,KAAK;AAAA,MACxC,QAAQ,QAAQ;AAAA,MAChB,MAAO,QAAQ,QAAqB;AAAA,MACpC,UAAU;AAAA,MACV,GAAG;AAAA,MACH,SAAS;AAAA,QACP,GAAG,iBAAiB;AAAA,QACpB,GAAG,QAAQ;AAAA,MACb;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAM,IAAI,MAAM,QAAQ,SAAS,MAAM,KAAK,IAAI,EAAE;AAAA,IACpD;AAEA,QAAI,SAAS,SAAS,MAAM;AAC1B,YAAM,IAAI,MAAM,sDAAiD;AAAA,IACnE;AAEA,WAAO,SAAS;AAAA,EAClB;AAEA,SAAO,EAAE,MAAM,WAAW;AAC5B;","names":[]}
@@ -55,7 +55,27 @@ function createFetchRequester({ requesterOptions = {} } = {}) {
55
55
  };
56
56
  }
57
57
  }
58
- return { send };
58
+ async function sendStream(request) {
59
+ const fetchRes = await fetch(request.url, {
60
+ method: request.method,
61
+ body: request.data || null,
62
+ redirect: "manual",
63
+ ...requesterOptions,
64
+ headers: {
65
+ ...requesterOptions.headers,
66
+ ...request.headers
67
+ }
68
+ });
69
+ if (!fetchRes.ok) {
70
+ const text = await fetchRes.text();
71
+ throw new Error(`HTTP ${fetchRes.status}: ${text}`);
72
+ }
73
+ if (fetchRes.body === null) {
74
+ throw new Error("Response body is null \u2014 streaming not supported");
75
+ }
76
+ return fetchRes.body;
77
+ }
78
+ return { send, sendStream };
59
79
  }
60
80
  export {
61
81
  createFetchRequester
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createFetchRequester.ts"],"sourcesContent":["import type { Response as AlgoliaResponse, EndRequest, Requester } from '@algolia/client-common';\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === 'AbortError';\n}\n\nfunction getErrorMessage(error: unknown, abortContent: string): string {\n if (isAbortError(error)) {\n return abortContent;\n }\n return error instanceof Error ? error.message : 'Network request failed';\n}\n\nexport type FetchRequesterOptions = {\n readonly requesterOptions?: RequestInit | undefined;\n};\n\nexport function createFetchRequester({ requesterOptions = {} }: FetchRequesterOptions = {}): Requester {\n async function send(request: EndRequest): Promise<AlgoliaResponse> {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n const createTimeout = (timeout: number): NodeJS.Timeout => {\n return setTimeout(() => {\n abortController.abort();\n }, timeout);\n };\n\n const connectTimeout = createTimeout(request.connectTimeout);\n\n let fetchRes: Response;\n try {\n fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n signal,\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Connection timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n\n clearTimeout(connectTimeout);\n\n createTimeout(request.responseTimeout);\n\n try {\n const content = await fetchRes.text();\n\n return {\n content,\n isTimedOut: false,\n status: fetchRes.status,\n };\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Socket timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n }\n\n return { send };\n}\n"],"mappings":";AAEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,iBAAiB,SAAS,MAAM,SAAS;AAClD;AAEA,SAAS,gBAAgB,OAAgB,cAA8B;AACrE,MAAI,aAAa,KAAK,GAAG;AACvB,WAAO;AAAA,EACT;AACA,SAAO,iBAAiB,QAAQ,MAAM,UAAU;AAClD;AAMO,SAAS,qBAAqB,EAAE,mBAAmB,CAAC,EAAE,IAA2B,CAAC,GAAc;AACrG,iBAAe,KAAK,SAA+C;AACjE,UAAM,kBAAkB,IAAI,gBAAgB;AAC5C,UAAM,SAAS,gBAAgB;AAE/B,UAAM,gBAAgB,CAAC,YAAoC;AACzD,aAAO,WAAW,MAAM;AACtB,wBAAgB,MAAM;AAAA,MACxB,GAAG,OAAO;AAAA,IACZ;AAEA,UAAM,iBAAiB,cAAc,QAAQ,cAAc;AAE3D,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,MAAM,QAAQ,KAAK;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,MAAO,QAAQ,QAAqB;AAAA,QACpC,UAAU;AAAA,QACV;AAAA,QACA,GAAG;AAAA,QACH,SAAS;AAAA,UACP,GAAG,iBAAiB;AAAA,UACpB,GAAG,QAAQ;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,oBAAoB;AAAA,QACpD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,iBAAa,cAAc;AAE3B,kBAAc,QAAQ,eAAe;AAErC,QAAI;AACF,YAAM,UAAU,MAAM,SAAS,KAAK;AAEpC,aAAO;AAAA,QACL;AAAA,QACA,YAAY;AAAA,QACZ,QAAQ,SAAS;AAAA,MACnB;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,gBAAgB;AAAA,QAChD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,KAAK;AAChB;","names":[]}
1
+ {"version":3,"sources":["../src/createFetchRequester.ts"],"sourcesContent":["import type { Response as AlgoliaResponse, EndRequest, Requester } from '@algolia/client-common';\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === 'AbortError';\n}\n\nfunction getErrorMessage(error: unknown, abortContent: string): string {\n if (isAbortError(error)) {\n return abortContent;\n }\n return error instanceof Error ? error.message : 'Network request failed';\n}\n\nexport type FetchRequesterOptions = {\n readonly requesterOptions?: RequestInit | undefined;\n};\n\nexport function createFetchRequester({ requesterOptions = {} }: FetchRequesterOptions = {}): Requester {\n async function send(request: EndRequest): Promise<AlgoliaResponse> {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n const createTimeout = (timeout: number): NodeJS.Timeout => {\n return setTimeout(() => {\n abortController.abort();\n }, timeout);\n };\n\n const connectTimeout = createTimeout(request.connectTimeout);\n\n let fetchRes: Response;\n try {\n fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n signal,\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Connection timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n\n clearTimeout(connectTimeout);\n\n createTimeout(request.responseTimeout);\n\n try {\n const content = await fetchRes.text();\n\n return {\n content,\n isTimedOut: false,\n status: fetchRes.status,\n };\n } catch (error) {\n return {\n status: 0,\n content: getErrorMessage(error, 'Socket timeout'),\n isTimedOut: isAbortError(error),\n };\n }\n }\n\n async function sendStream(request: EndRequest): Promise<ReadableStream<Uint8Array>> {\n const fetchRes = await fetch(request.url, {\n method: request.method,\n body: (request.data as BodyInit) || null,\n redirect: 'manual',\n ...requesterOptions,\n headers: {\n ...requesterOptions.headers,\n ...request.headers,\n },\n });\n\n if (!fetchRes.ok) {\n const text = await fetchRes.text();\n throw new Error(`HTTP ${fetchRes.status}: ${text}`);\n }\n\n if (fetchRes.body === null) {\n throw new Error('Response body is null — streaming not supported');\n }\n\n return fetchRes.body;\n }\n\n return { send, sendStream };\n}\n"],"mappings":";AAEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,iBAAiB,SAAS,MAAM,SAAS;AAClD;AAEA,SAAS,gBAAgB,OAAgB,cAA8B;AACrE,MAAI,aAAa,KAAK,GAAG;AACvB,WAAO;AAAA,EACT;AACA,SAAO,iBAAiB,QAAQ,MAAM,UAAU;AAClD;AAMO,SAAS,qBAAqB,EAAE,mBAAmB,CAAC,EAAE,IAA2B,CAAC,GAAc;AACrG,iBAAe,KAAK,SAA+C;AACjE,UAAM,kBAAkB,IAAI,gBAAgB;AAC5C,UAAM,SAAS,gBAAgB;AAE/B,UAAM,gBAAgB,CAAC,YAAoC;AACzD,aAAO,WAAW,MAAM;AACtB,wBAAgB,MAAM;AAAA,MACxB,GAAG,OAAO;AAAA,IACZ;AAEA,UAAM,iBAAiB,cAAc,QAAQ,cAAc;AAE3D,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,MAAM,QAAQ,KAAK;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,MAAO,QAAQ,QAAqB;AAAA,QACpC,UAAU;AAAA,QACV;AAAA,QACA,GAAG;AAAA,QACH,SAAS;AAAA,UACP,GAAG,iBAAiB;AAAA,UACpB,GAAG,QAAQ;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,oBAAoB;AAAA,QACpD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,iBAAa,cAAc;AAE3B,kBAAc,QAAQ,eAAe;AAErC,QAAI;AACF,YAAM,UAAU,MAAM,SAAS,KAAK;AAEpC,aAAO;AAAA,QACL;AAAA,QACA,YAAY;AAAA,QACZ,QAAQ,SAAS;AAAA,MACnB;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,gBAAgB,OAAO,gBAAgB;AAAA,QAChD,YAAY,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,iBAAe,WAAW,SAA0D;AAClF,UAAM,WAAW,MAAM,MAAM,QAAQ,KAAK;AAAA,MACxC,QAAQ,QAAQ;AAAA,MAChB,MAAO,QAAQ,QAAqB;AAAA,MACpC,UAAU;AAAA,MACV,GAAG;AAAA,MACH,SAAS;AAAA,QACP,GAAG,iBAAiB;AAAA,QACpB,GAAG,QAAQ;AAAA,MACb;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAM,IAAI,MAAM,QAAQ,SAAS,MAAM,KAAK,IAAI,EAAE;AAAA,IACpD;AAEA,QAAI,SAAS,SAAS,MAAM;AAC1B,YAAM,IAAI,MAAM,sDAAiD;AAAA,IACnE;AAEA,WAAO,SAAS;AAAA,EAClB;AAEA,SAAO,EAAE,MAAM,WAAW;AAC5B;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@algolia/requester-fetch",
3
- "version": "5.53.0",
3
+ "version": "5.54.0",
4
4
  "description": "Promise-based request library using Fetch.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,7 +48,7 @@
48
48
  "test:bundle": "publint . && attw --pack ."
49
49
  },
50
50
  "dependencies": {
51
- "@algolia/client-common": "5.53.0"
51
+ "@algolia/client-common": "5.54.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@arethetypeswrong/cli": "0.18.2",
@@ -63,5 +63,5 @@
63
63
  "engines": {
64
64
  "node": ">= 14.0.0"
65
65
  },
66
- "gitHead": "2658999ce3f428dfc8cab8e4946de263030245ba"
66
+ "gitHead": "b2006b248e1ed1a94168391b649d0ec897cd8812"
67
67
  }