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 workerData
!.input
as URL
| NodeFetchRequestInfo
,
16 workerData
?.init
as NodeFetchRequestInit
18 // The response is not structured-cloneable, so we return the response text body instead.
20 text
: await response
.text()
23 fetch
: async (workerData
?: WorkerData
) => {
24 const response
= await fetch(
25 workerData
!.input
as URL
| RequestInfo
,
26 workerData
?.init
as RequestInit
28 // The response is not structured-cloneable, so we return the response text body instead.
30 text
: await response
.text()
33 axios
: async (workerData
?: WorkerData
) => {
34 const response
= await axios({
36 url
: workerData
!.input
as string,
37 ...workerData
?.axiosRequestConfig
47 export const httpClientWorker
= new HttpClientWorker()