import fp from 'fastify-plugin'
import { availableParallelism, DynamicThreadPool } from 'poolifier'
-import {
- type FastifyPoolifierOptions,
- type ThreadWorkerData,
- type ThreadWorkerResponse
+import type {
+ FastifyPoolifierOptions,
+ ThreadWorkerData,
+ ThreadWorkerResponse,
} from './types.js'
const fastifyPoolifierPlugin: FastifyPluginCallback<FastifyPoolifierOptions> = (
options = {
...{
minWorkers: 1,
- maxWorkers: availableParallelism()
+ maxWorkers: availableParallelism(),
},
- ...options
+ ...options,
}
const { workerFile, minWorkers, maxWorkers, ...poolOptions } = options
const pool = new DynamicThreadPool<ThreadWorkerData, ThreadWorkerResponse>(
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
minWorkers!,
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
maxWorkers!,
workerFile,
poolOptions
async (
data?: ThreadWorkerData,
name?: string,
- transferList?: TransferListItem[]
+ transferList?: readonly TransferListItem[]
): Promise<ThreadWorkerResponse> =>
await pool.execute(data, name, transferList)
)
export const fastifyPoolifier = fp(fastifyPoolifierPlugin, {
fastify: '4.x',
- name: 'fastify-poolifier'
+ name: 'fastify-poolifier',
})