build: fix linter configuraion for TS examples
[poolifier.git] / examples / typescript / http-client / src / worker.ts
CommitLineData
49ac634f
JB
1import { ThreadWorker } from 'poolifier'
2import nodeFetch from 'node-fetch'
3import {
4 type RequestInfo as NodeFetchRequestInfo,
5 type ResponseInit as NodeFetchRequestInit
6} from 'node-fetch'
7import { type WorkerData, type WorkerResponse } from './types.js'
8
95e50651 9class 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 36const httpClientWorker = new HttpClientWorker()
49ac634f 37
95e50651 38export { httpClientWorker }