chore: migrate to eslint 9
[poolifier.git] / examples / typescript / http-server-pool / fastify-worker_threads / src / worker.ts
CommitLineData
fac9ce96 1import { ThreadWorker } from 'poolifier'
ded253e2 2
80115618 3import type { BodyPayload, WorkerData, WorkerResponse } from './types.js'
167c661c 4
a8706532 5class RequestHandlerWorker<
167c661c
JB
6 Data extends WorkerData<BodyPayload>,
7 Response extends WorkerResponse<BodyPayload>
a8706532 8> extends ThreadWorker<Data, Response> {
66f0c14c
JB
9 private static readonly factorial: (n: number | bigint) => bigint = n => {
10 if (n === 0 || n === 1) {
11 return 1n
12 } else {
13 n = BigInt(n)
14 let factorial = 1n
15 for (let i = 1n; i <= n; i++) {
16 factorial *= i
17 }
18 return factorial
8538ea4c 19 }
8538ea4c
JB
20 }
21
fac9ce96
JB
22 public constructor () {
23 super({
a8706532
JB
24 echo: (workerData?: Data) => {
25 return workerData as unknown as Response
167c661c
JB
26 },
27 factorial: (workerData?: Data) => {
28 return {
8538ea4c 29 body: {
66f0c14c 30 number: RequestHandlerWorker.factorial(
3a502712 31 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
66f0c14c 32 workerData!.body.number!
3a502712
JB
33 ).toString(),
34 },
167c661c 35 } as unknown as Response
3a502712 36 },
fac9ce96
JB
37 })
38 }
39}
40
a8706532 41export const requestHandlerWorker = new RequestHandlerWorker<
3a502712
JB
42 WorkerData<BodyPayload>,
43 WorkerResponse<BodyPayload>
a8706532 44>()