Commit | Line | Data |
---|---|---|
49ac634f JB |
1 | import { ThreadWorker } from 'poolifier' |
2 | import nodeFetch from 'node-fetch' | |
3 | import { | |
4 | type RequestInfo as NodeFetchRequestInfo, | |
5 | type ResponseInit as NodeFetchRequestInit | |
6 | } from 'node-fetch' | |
7 | import { type WorkerData, type WorkerResponse } from './types.js' | |
8 | ||
95e50651 | 9 | class HttpClientWorker extends ThreadWorker<WorkerData, WorkerResponse> { |
49ac634f JB |
10 | public constructor () { |
11 | super({ | |
12 | node_fetch: async (workerData?: WorkerData) => { | |
13 | const response = await nodeFetch( | |
14 | (workerData as WorkerData).url as URL | NodeFetchRequestInfo, | |
15 | workerData?.init as NodeFetchRequestInit | |
16 | ) | |
17 | // The response is not structured-cloneable, so we return the response text body instead. | |
18 | return { | |
19 | text: await response.text() | |
20 | } | |
21 | }, | |
22 | fetch: async (workerData?: WorkerData) => { | |
23 | const response = await fetch( | |
24 | (workerData as WorkerData).url as URL | RequestInfo, | |
25 | workerData?.init as RequestInit | |
26 | ) | |
27 | // The response is not structured-cloneable, so we return the response text body instead. | |
28 | return { | |
29 | text: await response.text() | |
30 | } | |
31 | } | |
32 | }) | |
33 | } | |
34 | } | |
35 | ||
95e50651 | 36 | const httpClientWorker = new HttpClientWorker() |
49ac634f | 37 | |
95e50651 | 38 | export { httpClientWorker } |