refactor: freeze empty function type
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 25 Feb 2023 21:48:27 +0000 (22:48 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 25 Feb 2023 21:48:27 +0000 (22:48 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/pools/abstract-pool.ts
src/pools/cluster/dynamic.ts
src/pools/cluster/fixed.ts
src/utils.ts
src/worker/cluster-worker.ts
src/worker/thread-worker.ts

index 76f5bfdc24d47820f9cb2aaaac8ca387a4670a55..4d572d0ab5ba351df0d936f88901d4f25335cacf 100644 (file)
@@ -2,7 +2,7 @@ import type {
   MessageValue,
   PromiseWorkerResponseWrapper
 } from '../utility-types'
-import { EMPTY_FUNCTION, EMPTY_LITERAL } from '../utils'
+import { EMPTY_FUNCTION, EMPTY_OBJECT_LITERAL } from '../utils'
 import { isKillBehavior, KillBehaviors } from '../worker/worker-options'
 import type { PoolOptions } from './pool'
 import { PoolEmitter } from './pool'
@@ -208,7 +208,7 @@ export abstract class AbstractPool<
     const res = this.internalExecute(worker, this.nextMessageId)
     this.checkAndEmitBusy()
     this.sendToWorker(worker, {
-      data: data ?? (EMPTY_LITERAL as Data),
+      data: data ?? (EMPTY_OBJECT_LITERAL as Data),
       id: this.nextMessageId
     })
     ++this.nextMessageId
index 8b8c5185772dbea59bc0d22b2e1cb90b9383d507..513a73c5d7804cfa2e109a5d9cf6c01f4c060945 100644 (file)
@@ -1,3 +1,4 @@
+import { EMPTY_OBJECT_LITERAL } from '../../utils'
 import { PoolType } from '../pool-internal'
 import type { ClusterPoolOptions } from './fixed'
 import { FixedClusterPool } from './fixed'
@@ -29,7 +30,7 @@ export class DynamicClusterPool<
     min: number,
     protected readonly max: number,
     filePath: string,
-    opts: ClusterPoolOptions = {}
+    opts: ClusterPoolOptions = EMPTY_OBJECT_LITERAL
   ) {
     super(min, filePath, opts)
   }
index 2e89b3232dccbc321907b02a73b583d650ee1661..092e97781911ec89ab1e16c5e2af0ca485fe1174 100644 (file)
@@ -1,6 +1,7 @@
 import type { ClusterSettings, Worker } from 'cluster'
 import cluster from 'cluster'
 import type { MessageValue } from '../../utility-types'
+import { EMPTY_OBJECT_LITERAL } from '../../utils'
 import { AbstractPool } from '../abstract-pool'
 import type { PoolOptions } from '../pool'
 import { PoolType } from '../pool-internal'
@@ -50,7 +51,7 @@ export class FixedClusterPool<
   public constructor (
     numberOfWorkers: number,
     filePath: string,
-    public readonly opts: ClusterPoolOptions = {}
+    public readonly opts: ClusterPoolOptions = EMPTY_OBJECT_LITERAL
   ) {
     super(numberOfWorkers, filePath, opts)
   }
index 46ab5051f38ff77eb2fd06c41199bd360b306276..753219c5e37d367b8d5d83790f76847445d36663 100644 (file)
@@ -1,11 +1,11 @@
 /**
  * An intentional empty function.
  */
-export const EMPTY_FUNCTION: () => void = () => {
+export const EMPTY_FUNCTION: () => void = Object.freeze(() => {
   /* Intentionally empty */
-}
+})
 
 /**
  * An intentional empty object literal.
  */
-export const EMPTY_LITERAL = {}
+export const EMPTY_OBJECT_LITERAL = {}
index 4f5fbb6b2ea87dcb54227b6b06576d80dba9c849..f551447ee411490904a8a41977be0dc13da520b1 100644 (file)
@@ -1,6 +1,7 @@
 import type { Worker } from 'cluster'
 import cluster from 'cluster'
 import type { MessageValue } from '../utility-types'
+import { EMPTY_OBJECT_LITERAL } from '../utils'
 import { AbstractWorker } from './abstract-worker'
 import type { WorkerOptions } from './worker-options'
 
@@ -28,7 +29,10 @@ export class ClusterWorker<
    * @param fn - Function processed by the worker when the pool's `execution` function is invoked.
    * @param opts - Options for the worker.
    */
-  public constructor (fn: (data: Data) => Response, opts: WorkerOptions = {}) {
+  public constructor (
+    fn: (data: Data) => Response,
+    opts: WorkerOptions = EMPTY_OBJECT_LITERAL
+  ) {
     super(
       'worker-cluster-pool:poolifier',
       cluster.isPrimary,
index a8424fbf0151e0ffa59674b4a5575fe604b5543e..4ed85c297e46836f867ac8e3bf3d9f3a60b42741 100644 (file)
@@ -1,6 +1,7 @@
 import type { MessagePort } from 'worker_threads'
 import { isMainThread, parentPort } from 'worker_threads'
 import type { MessageValue } from '../utility-types'
+import { EMPTY_OBJECT_LITERAL } from '../utils'
 import { AbstractWorker } from './abstract-worker'
 import type { WorkerOptions } from './worker-options'
 
@@ -28,7 +29,10 @@ export class ThreadWorker<
    * @param fn - Function processed by the worker when the pool's `execution` function is invoked.
    * @param opts - Options for the worker.
    */
-  public constructor (fn: (data: Data) => Response, opts: WorkerOptions = {}) {
+  public constructor (
+    fn: (data: Data) => Response,
+    opts: WorkerOptions = EMPTY_OBJECT_LITERAL
+  ) {
     super('worker-thread-pool:poolifier', isMainThread, fn, parentPort, opts)
   }