1 import axios from
'axios'
3 type RequestInfo
as NodeFetchRequestInfo
,
4 type ResponseInit
as NodeFetchRequestInit
,
6 import { ThreadWorker
} from
'poolifier'
8 import type { WorkerData
, WorkerResponse
} from
'./types.js'
10 class HttpClientWorker
extends ThreadWorker
<WorkerData
, WorkerResponse
> {
11 public constructor () {
13 node_fetch
: async (workerData
?: WorkerData
) => {
14 const response
= await nodeFetch(
15 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
16 workerData
!.input
as URL
| NodeFetchRequestInfo
,
17 workerData
?.init
as NodeFetchRequestInit
19 // The response is not structured-cloneable, so we return the response text body instead.
21 text
: await response
.text(),
24 fetch
: async (workerData
?: WorkerData
) => {
25 const response
= await fetch(
26 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
27 workerData
!.input
as URL
| RequestInfo
,
28 workerData
?.init
as RequestInit
30 // The response is not structured-cloneable, so we return the response text body instead.
32 text
: await response
.text(),
35 axios
: async (workerData
?: WorkerData
) => {
36 const response
= await axios({
38 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
39 url
: workerData
!.input
as string,
40 ...workerData
?.axiosRequestConfig
,
50 export const httpClientWorker
= new HttpClientWorker()