docs: refine code comment
[poolifier.git] / src / utils.ts
index d74cfbfd3768592134fce5df367bb15ab299d5d4..c568a29a049eda2de26cf9bd99d63e613294bc3f 100644 (file)
@@ -1,5 +1,6 @@
-import * as os from 'node:os'
 import { getRandomValues } from 'node:crypto'
+import * as os from 'node:os'
+
 import type { KillBehavior } from './worker/worker-options.js'
 
 /**
@@ -118,24 +119,24 @@ export const round = (num: number, scale = 2): number => {
 }
 
 /**
- * Is the given object a plain object?
+ * Is the given value a plain object?
  *
- * @param obj - The object to check.
- * @returns `true` if the given object is a plain object, `false` otherwise.
+ * @param value - The value to check.
+ * @returns `true` if the given value is a plain object, `false` otherwise.
  * @internal
  */
-export const isPlainObject = (obj: unknown): obj is object =>
-  typeof obj === 'object' &&
-  obj !== null &&
-  obj.constructor === Object &&
-  Object.prototype.toString.call(obj) === '[object Object]'
+export const isPlainObject = (value: unknown): value is object =>
+  typeof value === 'object' &&
+  value !== null &&
+  value.constructor === Object &&
+  Object.prototype.toString.call(value) === '[object Object]'
 
 /**
  * Detects whether the given value is a kill behavior or not.
  *
  * @typeParam KB - Which specific KillBehavior type to test against.
  * @param killBehavior - Which kind of kill behavior to detect.
- * @param value - Any value.
+ * @param value - Unknown value.
  * @returns `true` if `value` was strictly equals to `killBehavior`, otherwise `false`.
  * @internal
  */
@@ -197,18 +198,22 @@ export const max = (...args: number[]): number =>
  * @param fn - The function to wrap.
  * @param context - The context to bind the function to.
  * @returns The wrapped function.
+ *
+ * @typeParam A - The function's arguments.
+ * @typeParam R - The function's return value.
+ * @typeParam C - The function's context.
  * @internal
  */
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
-export const once = <T, A extends any[], R>(
+export const once = <A extends any[], R, C>(
   fn: (...args: A) => R,
-  context: T
+  context: C
 ): ((...args: A) => R) => {
   let result: R
   return (...args: A) => {
     // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
     if (fn != null) {
-      result = fn.apply<T, A, R>(context, args)
+      result = fn.apply<C, A, R>(context, args)
       ;(fn as unknown as undefined) = (context as unknown as undefined) =
         undefined
     }