build(deps-dev): apply updates
[poolifier.git] / examples / typescript / http-server-pool / fastify-worker_threads / src / fastify-poolifier.ts
index 50668da031705190e5f7611870c51fb2f5fffc7f..451fcb80b3e12ad89c9022d8b604245adae9f1c1 100644 (file)
@@ -1,11 +1,13 @@
-import type { TransferListItem } from 'worker_threads'
-import { DynamicThreadPool, availableParallelism } from 'poolifier'
-import { type FastifyPluginCallback } from 'fastify'
+import type { TransferListItem } from 'node:worker_threads'
+
+import type { FastifyPluginCallback } from 'fastify'
 import fp from 'fastify-plugin'
-import {
-  type FastifyPoolifierOptions,
-  type WorkerData,
-  type WorkerResponse
+import { availableParallelism, DynamicThreadPool } from 'poolifier'
+
+import type {
+  FastifyPoolifierOptions,
+  WorkerData,
+  WorkerResponse,
 } from './types.js'
 
 const fastifyPoolifierPlugin: FastifyPluginCallback<FastifyPoolifierOptions> = (
@@ -16,15 +18,18 @@ const fastifyPoolifierPlugin: FastifyPluginCallback<FastifyPoolifierOptions> = (
   options = {
     ...{
       minWorkers: 1,
-      maxWorkers: availableParallelism()
+      maxWorkers: availableParallelism(),
     },
-    ...options
+    ...options,
   }
+  const { workerFile, minWorkers, maxWorkers, ...poolOptions } = options
   const pool = new DynamicThreadPool<WorkerData, WorkerResponse>(
-    options.minWorkers as number,
-    options.maxWorkers as number,
-    options.workerFile,
-    options
+    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+    minWorkers!,
+    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+    maxWorkers!,
+    workerFile,
+    poolOptions
   )
   if (!fastify.hasDecorator('pool')) {
     fastify.decorate('pool', pool)
@@ -35,13 +40,14 @@ const fastifyPoolifierPlugin: FastifyPluginCallback<FastifyPoolifierOptions> = (
       async (
         data?: WorkerData,
         name?: string,
-        transferList?: TransferListItem[]
+        transferList?: readonly TransferListItem[]
       ): Promise<WorkerResponse> => await pool.execute(data, name, transferList)
     )
   }
+  done()
 }
 
 export const fastifyPoolifier = fp(fastifyPoolifierPlugin, {
   fastify: '4.x',
-  name: 'fastify-poolifier'
+  name: 'fastify-poolifier',
 })