3e4c6dd5cc62d5a9a4d3d898f078faa35fe19147
1 import { ThreadWorker
} from
'poolifier'
2 import nodeFetch from
'node-fetch'
4 type RequestInfo
as NodeFetchRequestInfo
,
5 type ResponseInit
as NodeFetchRequestInit
7 import axios from
'axios'
8 import { type WorkerData
, type 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
as 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
as 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
as WorkerData
).input
as string,
37 ...workerData
?.axiosRequestConfig
47 const httpClientWorker
= new HttpClientWorker()
49 export { httpClientWorker
}