fix: brown paper bag bug referencing the same object literal
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 18 Mar 2023 17:08:55 +0000 (18:08 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 18 Mar 2023 17:08:55 +0000 (18:08 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
CHANGELOG.md
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 431ebc04bf69dd8cb6bf771e2d54229fa4ce51a9..6227f8ced5fc89792e017816a0c7c1e5b11eda1e 100644 (file)
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+### Changed
+
+- Introduce ESM module support along with CommonJS one.
+
+### Fixed
+
+- Fix brown paper bag bug referencing the same object literal.
+
 ## [2.3.8] - 2023-03-18
 
 ### Changed
@@ -14,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Switch internal benchmarking code to benny.
 - Switch to TypeScript 5.x.x.
 - Switch rollup bundler plugins to core ones.
+- Switch to TSDoc syntax.
 - Enforce conventional commits.
 
 ### Fixed
index 32b4d983859c3f7fd0ce9354116ed9fcb5d05c53..3cb6c1f7a7b034086e6e20a56635c44f1d8af0f2 100644 (file)
@@ -2,7 +2,7 @@ import type {
   MessageValue,
   PromiseWorkerResponseWrapper
 } from '../utility-types'
-import { EMPTY_FUNCTION, EMPTY_OBJECT_LITERAL } from '../utils'
+import { EMPTY_FUNCTION } from '../utils'
 import { KillBehaviors, isKillBehavior } 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_OBJECT_LITERAL as Data),
+      data,
       id: this.nextMessageId
     })
     ++this.nextMessageId
index 513a73c5d7804cfa2e109a5d9cf6c01f4c060945..8b8c5185772dbea59bc0d22b2e1cb90b9383d507 100644 (file)
@@ -1,4 +1,3 @@
-import { EMPTY_OBJECT_LITERAL } from '../../utils'
 import { PoolType } from '../pool-internal'
 import type { ClusterPoolOptions } from './fixed'
 import { FixedClusterPool } from './fixed'
@@ -30,7 +29,7 @@ export class DynamicClusterPool<
     min: number,
     protected readonly max: number,
     filePath: string,
-    opts: ClusterPoolOptions = EMPTY_OBJECT_LITERAL
+    opts: ClusterPoolOptions = {}
   ) {
     super(min, filePath, opts)
   }
index 092e97781911ec89ab1e16c5e2af0ca485fe1174..2e89b3232dccbc321907b02a73b583d650ee1661 100644 (file)
@@ -1,7 +1,6 @@
 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'
@@ -51,7 +50,7 @@ export class FixedClusterPool<
   public constructor (
     numberOfWorkers: number,
     filePath: string,
-    public readonly opts: ClusterPoolOptions = EMPTY_OBJECT_LITERAL
+    public readonly opts: ClusterPoolOptions = {}
   ) {
     super(numberOfWorkers, filePath, opts)
   }
index 753219c5e37d367b8d5d83790f76847445d36663..809ca38b6bdb17d9f92274bc822543d61bf7a9f4 100644 (file)
@@ -4,8 +4,3 @@
 export const EMPTY_FUNCTION: () => void = Object.freeze(() => {
   /* Intentionally empty */
 })
-
-/**
- * An intentional empty object literal.
- */
-export const EMPTY_OBJECT_LITERAL = {}
index f551447ee411490904a8a41977be0dc13da520b1..4f5fbb6b2ea87dcb54227b6b06576d80dba9c849 100644 (file)
@@ -1,7 +1,6 @@
 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'
 
@@ -29,10 +28,7 @@ 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 = EMPTY_OBJECT_LITERAL
-  ) {
+  public constructor (fn: (data: Data) => Response, opts: WorkerOptions = {}) {
     super(
       'worker-cluster-pool:poolifier',
       cluster.isPrimary,
index 4ed85c297e46836f867ac8e3bf3d9f3a60b42741..a8424fbf0151e0ffa59674b4a5575fe604b5543e 100644 (file)
@@ -1,7 +1,6 @@
 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'
 
@@ -29,10 +28,7 @@ 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 = EMPTY_OBJECT_LITERAL
-  ) {
+  public constructor (fn: (data: Data) => Response, opts: WorkerOptions = {}) {
     super('worker-thread-pool:poolifier', isMainThread, fn, parentPort, opts)
   }