-import type { MessageChannel, WorkerOptions } from 'node:worker_threads'
import type { EventEmitter } from 'node:events'
+import type { MessageChannel, WorkerOptions } from 'node:worker_threads'
+
import type { CircularArray } from '../circular-array.js'
import type { Task } from '../utility-types.js'
/**
* Enumeration of worker types.
*/
-export const WorkerTypes = Object.freeze({
- thread: 'thread',
- cluster: 'cluster'
-} as const)
+export const WorkerTypes: Readonly<{ thread: 'thread', cluster: 'cluster' }> =
+ Object.freeze({
+ thread: 'thread',
+ cluster: 'cluster'
+ } as const)
/**
* Worker type.
* @param handler - The event handler.
*/
readonly once: (event: string, handler: EventHandler<this>) => this
+ /**
+ * Calling `unref()` on a worker allows the thread to exit if this is the only
+ * active handle in the event system. If the worker is already `unref()`ed calling`unref()` again has no effect.
+ * @since v10.5.0
+ */
+ readonly unref?: () => void
/**
* Stop all JavaScript execution in the worker thread as soon as possible.
* Returns a Promise for the exit code that is fulfilled when the `'exit' event` is emitted.