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