63f77fd753ae02f7e5ac4d29b74a2065487347f5
1 import { ThreadWorker
} from
'poolifier'
3 type RequestInfo
as NodeFetchRequestInfo
,
4 type ResponseInit
as NodeFetchRequestInit
6 import axios from
'axios'
7 import type { WorkerData
, WorkerResponse
} from
'./types.js'
9 class HttpClientWorker
extends ThreadWorker
<WorkerData
, WorkerResponse
> {
10 public constructor () {
12 node_fetch
: async (workerData
?: WorkerData
) => {
13 const response
= await nodeFetch(
14 (workerData
as WorkerData
).input
as URL
| NodeFetchRequestInfo
,
15 workerData
?.init
as NodeFetchRequestInit
17 // The response is not structured-cloneable, so we return the response text body instead.
19 text
: await response
.text()
22 fetch
: async (workerData
?: WorkerData
) => {
23 const response
= await fetch(
24 (workerData
as WorkerData
).input
as URL
| RequestInfo
,
25 workerData
?.init
as RequestInit
27 // The response is not structured-cloneable, so we return the response text body instead.
29 text
: await response
.text()
32 axios
: async (workerData
?: WorkerData
) => {
33 const response
= await axios({
35 url
: (workerData
as WorkerData
).input
as string,
36 ...workerData
?.axiosRequestConfig
46 export const httpClientWorker
= new HttpClientWorker()