1 import type { AddressInfo
} from
'node:net'
2 import { ClusterWorker
} from
'poolifier'
3 import Fastify from
'fastify'
4 import type { WorkerData
, WorkerResponse
} from
'./types.js'
6 const factorial
: (n
: number) => number = n
=> {
10 return factorial(n
- 1) * n
13 const startFastify
= async (
14 workerData
?: WorkerData
15 ): Promise
<WorkerResponse
> => {
16 const fastify
= Fastify({
20 fastify
.all('/api/echo', request
=> {
25 Params
: { number: number }
26 }>('/api/factorial/:number', request
=> {
27 const { number } = request
.params
28 return { number: factorial(number) }
32 await fastify
.listen({ port
: workerData
?.port
})
35 port
: (fastify
.server
.address() as AddressInfo
).port
38 fastify
.log
.error(err
)
46 class FastifyWorker
extends ClusterWorker
<WorkerData
, WorkerResponse
> {
47 public constructor () {
52 export const fastifyWorker
= new FastifyWorker()