refactor: refine code examples
[poolifier.git] / examples / typescript / http-server-pool / express-worker_threads / src / worker.ts
CommitLineData
fac9ce96 1import { ThreadWorker } from 'poolifier'
167c661c
JB
2import {
3 type BodyPayload,
4 type WorkerData,
5 type WorkerResponse
6} from './types.js'
7
a8706532 8class RequestHandlerWorker<
167c661c
JB
9 Data extends WorkerData<BodyPayload>,
10 Response extends WorkerResponse<BodyPayload>
a8706532 11> extends ThreadWorker<Data, Response> {
8538ea4c
JB
12 private static readonly factorial: (n: number) => number = n => {
13 if (n === 0) {
14 return 1
15 }
16 return RequestHandlerWorker.factorial(n - 1) * n
17 }
18
fac9ce96
JB
19 public constructor () {
20 super({
a8706532
JB
21 echo: (workerData?: Data) => {
22 return workerData as unknown as Response
167c661c
JB
23 },
24 factorial: (workerData?: Data) => {
25 return {
8538ea4c
JB
26 body: {
27 number: RequestHandlerWorker.factorial(
28 workerData?.body?.number as number
29 )
30 }
167c661c 31 } as unknown as Response
fac9ce96
JB
32 }
33 })
34 }
35}
36
a8706532 37export const requestHandlerWorker = new RequestHandlerWorker<
167c661c
JB
38WorkerData<BodyPayload>,
39WorkerResponse<BodyPayload>
a8706532 40>()