Initial comment conversion to TSDoc
authorJérôme Benoit <jerome.benoit@sap.com>
Tue, 3 Jan 2023 17:47:20 +0000 (18:47 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Tue, 3 Jan 2023 17:47:20 +0000 (18:47 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
26 files changed:
.eslintrc.js
.vscode/settings.json
package-lock.json
package.json
src/pools/abstract-pool.ts
src/pools/cluster/dynamic.ts
src/pools/cluster/fixed.ts
src/pools/pool-internal.ts
src/pools/pool-worker.ts
src/pools/pool.ts
src/pools/selection-strategies/abstract-worker-choice-strategy.ts
src/pools/selection-strategies/dynamic-pool-worker-choice-strategy.ts
src/pools/selection-strategies/fair-share-worker-choice-strategy.ts
src/pools/selection-strategies/less-recently-used-worker-choice-strategy.ts
src/pools/selection-strategies/round-robin-worker-choice-strategy.ts
src/pools/selection-strategies/selection-strategies-types.ts
src/pools/selection-strategies/selection-strategies-utils.ts
src/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.ts
src/pools/selection-strategies/worker-choice-strategy-context.ts
src/pools/thread/dynamic.ts
src/pools/thread/fixed.ts
src/utility-types.ts
src/worker/abstract-worker.ts
src/worker/cluster-worker.ts
src/worker/thread-worker.ts
src/worker/worker-options.ts

index fd8a538debf25f98ba377117efa8caf9fd582e72..5c52e0f02b5b11cbb743d115c0def7d20e634531 100644 (file)
@@ -12,11 +12,10 @@ module.exports = defineConfig({
     ecmaVersion: 2021,
     sourceType: 'module'
   },
-  plugins: ['promise', 'jsdoc', 'spellcheck'],
+  plugins: ['promise', 'spellcheck'],
   extends: [
     'eslint:recommended',
     'plugin:import/recommended',
-    'plugin:jsdoc/recommended',
     'plugin:promise/recommended'
   ],
   rules: {
@@ -61,6 +60,7 @@ module.exports = defineConfig({
           'threadjs',
           'threadwork',
           'tsconfig',
+          'tsdoc',
           'typedoc',
           'unlink',
           'unregister',
@@ -74,11 +74,11 @@ module.exports = defineConfig({
   overrides: [
     {
       files: ['**/*.ts'],
+      plugins: ['@typescript-eslint', 'eslint-plugin-tsdoc'],
       parser: '@typescript-eslint/parser',
       parserOptions: {
         project: './tsconfig.json'
       },
-      plugins: ['@typescript-eslint'],
       extends: [
         'plugin:@typescript-eslint/eslint-recommended',
         'plugin:@typescript-eslint/recommended',
@@ -97,43 +97,13 @@ module.exports = defineConfig({
 
         'no-useless-constructor': 'off',
 
-        'jsdoc/match-description': [
-          'warn',
-          {
-            contexts: ['any'],
-            tags: {
-              param: true,
-              returns: true
-            }
-          }
-        ],
-        'jsdoc/no-types': 'error',
-        'jsdoc/require-jsdoc': [
-          'warn',
-          {
-            contexts: [
-              'ClassDeclaration',
-              'ClassProperty:not([accessibility=/(private|protected)/])',
-              'ExportNamedDeclaration:has(VariableDeclaration)',
-              'FunctionExpression',
-              'MethodDefinition:not([accessibility=/(private|protected)/]) > FunctionExpression',
-              'TSEnumDeclaration',
-              'TSInterfaceDeclaration',
-              'TSMethodSignature',
-              // 'TSPropertySignature',
-              'TSTypeAliasDeclaration'
-            ]
-          }
-        ],
-        'jsdoc/require-param-type': 'off',
-        'jsdoc/require-returns-type': 'off'
+        'tsdoc/syntax': 'warn'
       }
     },
     {
       files: ['examples/typescript/**/*.ts'],
       rules: {
         'import/no-unresolved': 'off',
-        'jsdoc/require-jsdoc': 'off',
         '@typescript-eslint/no-unsafe-argument': 'off',
         '@typescript-eslint/no-unsafe-call': 'off',
         '@typescript-eslint/no-unsafe-assignment': 'off'
@@ -141,7 +111,8 @@ module.exports = defineConfig({
     },
     {
       files: ['**/*.js'],
-      extends: ['plugin:n/recommended', 'standard']
+      plugins: ['jsdoc'],
+      extends: ['plugin:n/recommended', 'standard', 'plugin:jsdoc/recommended']
     },
     {
       files: ['tests/**/*.js'],
@@ -174,10 +145,5 @@ module.exports = defineConfig({
         'jsdoc/require-jsdoc': 'off'
       }
     }
-  ],
-  settings: {
-    jsdoc: {
-      mode: 'typescript'
-    }
-  }
+  ]
 })
index f44a08d9dd8932c5cab2f61f46b085b9f4c00a56..865aa283514e0a319278a5538ebd2a192df729fb 100644 (file)
@@ -30,6 +30,7 @@
     "suchmokuo",
     "threadjs",
     "threadwork",
+    "tsdoc",
     "workerpool"
   ],
   "sonarlint.connectedMode.project": {
index a4f204ee9008b6ff1dff24082e77ed2afcdfb3f3..f4dd957dddeffdcd97e60bf3b22aad73947a977d 100644 (file)
@@ -32,6 +32,7 @@
         "eslint-plugin-n": "^15.6.0",
         "eslint-plugin-promise": "^6.1.1",
         "eslint-plugin-spellcheck": "^0.0.20",
+        "eslint-plugin-tsdoc": "^0.2.17",
         "expect": "^29.3.1",
         "husky": "^8.0.2",
         "lint-staged": "^13.1.0",
       "integrity": "sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA==",
       "dev": true
     },
+    "node_modules/@microsoft/tsdoc": {
+      "version": "0.14.2",
+      "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
+      "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+      "dev": true
+    },
+    "node_modules/@microsoft/tsdoc-config": {
+      "version": "0.16.2",
+      "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
+      "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
+      "dev": true,
+      "dependencies": {
+        "@microsoft/tsdoc": "0.14.2",
+        "ajv": "~6.12.6",
+        "jju": "~1.4.0",
+        "resolve": "~1.19.0"
+      }
+    },
+    "node_modules/@microsoft/tsdoc-config/node_modules/resolve": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+      "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.1.0",
+        "path-parse": "^1.0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
         "eslint": ">=0.8.0"
       }
     },
+    "node_modules/eslint-plugin-tsdoc": {
+      "version": "0.2.17",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz",
+      "integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==",
+      "dev": true,
+      "dependencies": {
+        "@microsoft/tsdoc": "0.14.2",
+        "@microsoft/tsdoc-config": "0.16.2"
+      }
+    },
     "node_modules/eslint-scope": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
         "node": ">= 10.13.0"
       }
     },
+    "node_modules/jju": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
+      "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
+      "dev": true
+    },
     "node_modules/js-sdsl": {
       "version": "4.1.4",
       "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
       "integrity": "sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA==",
       "dev": true
     },
+    "@microsoft/tsdoc": {
+      "version": "0.14.2",
+      "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
+      "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+      "dev": true
+    },
+    "@microsoft/tsdoc-config": {
+      "version": "0.16.2",
+      "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
+      "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
+      "dev": true,
+      "requires": {
+        "@microsoft/tsdoc": "0.14.2",
+        "ajv": "~6.12.6",
+        "jju": "~1.4.0",
+        "resolve": "~1.19.0"
+      },
+      "dependencies": {
+        "resolve": {
+          "version": "1.19.0",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+          "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+          "dev": true,
+          "requires": {
+            "is-core-module": "^2.1.0",
+            "path-parse": "^1.0.6"
+          }
+        }
+      }
+    },
     "@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
         "lodash": "^4.17.15"
       }
     },
+    "eslint-plugin-tsdoc": {
+      "version": "0.2.17",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz",
+      "integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==",
+      "dev": true,
+      "requires": {
+        "@microsoft/tsdoc": "0.14.2",
+        "@microsoft/tsdoc-config": "0.16.2"
+      }
+    },
     "eslint-scope": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
         "supports-color": "^7.0.0"
       }
     },
+    "jju": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
+      "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
+      "dev": true
+    },
     "js-sdsl": {
       "version": "4.1.4",
       "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
index 56527fd6a6cb4bdc2a7fbd7a5647a3200f0ba1ea..d04753264147189d9354677f07566ed73c40c1f2 100644 (file)
     "eslint-plugin-n": "^15.6.0",
     "eslint-plugin-promise": "^6.1.1",
     "eslint-plugin-spellcheck": "^0.0.20",
+    "eslint-plugin-tsdoc": "^0.2.17",
     "expect": "^29.3.1",
     "husky": "^8.0.2",
     "lint-staged": "^13.1.0",
index 6b12c2f99b6b986d822668c2648e0ff0ec59bd33..c2b54b58d0b24171f26c611d0655016afca29849 100644 (file)
@@ -18,25 +18,25 @@ import { WorkerChoiceStrategyContext } from './selection-strategies/worker-choic
 /**
  * Base class that implements some shared logic for all poolifier pools.
  *
- * @template Worker Type of worker which manages this pool.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages this pool.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export abstract class AbstractPool<
   Worker extends IPoolWorker,
   Data = unknown,
   Response = unknown
 > implements IPoolInternal<Worker, Data, Response> {
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public readonly workers: Worker[] = []
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public readonly workersTasksUsage: Map<Worker, TasksUsage> = new Map<
   Worker,
   TasksUsage
   >()
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public readonly emitter?: PoolEmitter
 
   /**
@@ -71,9 +71,9 @@ export abstract class AbstractPool<
   /**
    * Constructs a new poolifier pool.
    *
-   * @param numberOfWorkers Number of workers that this pool should manage.
-   * @param filePath Path to the worker-file.
-   * @param opts Options for the pool.
+   * @param numberOfWorkers Number of workers that this pool should manage.
+   * @param filePath Path to the worker-file.
+   * @param opts Options for the pool.
    */
   public constructor (
     public readonly numberOfWorkers: number,
@@ -144,30 +144,30 @@ export abstract class AbstractPool<
     this.opts.enableEvents = opts.enableEvents ?? true
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public abstract get type (): PoolType
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get numberOfRunningTasks (): number {
     return this.promiseMap.size
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public getWorkerIndex (worker: Worker): number {
     return this.workers.indexOf(worker)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public getWorkerRunningTasks (worker: Worker): number | undefined {
     return this.workersTasksUsage.get(worker)?.running
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public getWorkerAverageTasksRunTime (worker: Worker): number | undefined {
     return this.workersTasksUsage.get(worker)?.avgRunTime
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public setWorkerChoiceStrategy (
     workerChoiceStrategy: WorkerChoiceStrategy
   ): void {
@@ -180,7 +180,7 @@ export abstract class AbstractPool<
     )
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public abstract get busy (): boolean
 
   protected internalGetBusyStatus (): boolean {
@@ -190,7 +190,7 @@ export abstract class AbstractPool<
     )
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public findFreeWorker (): Worker | false {
     for (const worker of this.workers) {
       if (this.getWorkerRunningTasks(worker) === 0) {
@@ -201,7 +201,7 @@ export abstract class AbstractPool<
     return false
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public async execute (data: Data): Promise<Response> {
     // Configure worker to handle message with the specified task
     const worker = this.chooseWorker()
@@ -216,7 +216,7 @@ export abstract class AbstractPool<
     return res
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public async destroy (): Promise<void> {
     await Promise.all(this.workers.map(worker => this.destroyWorker(worker)))
   }
@@ -224,7 +224,7 @@ export abstract class AbstractPool<
   /**
    * Shutdowns given worker.
    *
-   * @param worker A worker within `workers`.
+   * @param worker A worker within `workers`.
    */
   protected abstract destroyWorker (worker: Worker): void | Promise<void>
 
@@ -245,7 +245,7 @@ export abstract class AbstractPool<
    * Hook executed before the worker task promise resolution.
    * Can be overridden.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    */
   protected beforePromiseWorkerResponseHook (worker: Worker): void {
     this.increaseWorkerRunningTasks(worker)
@@ -255,8 +255,8 @@ export abstract class AbstractPool<
    * Hook executed after the worker task promise resolution.
    * Can be overridden.
    *
-   * @param message The received message.
-   * @param promise The Promise response.
+   * @param message The received message.
+   * @param promise The Promise response.
    */
   protected afterPromiseWorkerResponseHook (
     message: MessageValue<Response>,
@@ -270,7 +270,7 @@ export abstract class AbstractPool<
   /**
    * Removes the given worker from the pool.
    *
-   * @param worker The worker that will be removed.
+   * @param worker The worker that will be removed.
    */
   protected removeWorker (worker: Worker): void {
     // Clean worker from data structure
@@ -292,8 +292,8 @@ export abstract class AbstractPool<
   /**
    * Sends a message to the given worker.
    *
-   * @param worker The worker which should receive the message.
-   * @param message The message.
+   * @param worker The worker which should receive the message.
+   * @param message The message.
    */
   protected abstract sendToWorker (
     worker: Worker,
@@ -303,8 +303,8 @@ export abstract class AbstractPool<
   /**
    * Registers a listener callback on a given worker.
    *
-   * @param worker The worker which should register a listener.
-   * @param listener The message listener callback.
+   * @param worker The worker which should register a listener.
+   * @param listener The message listener callback.
    */
   protected abstract registerWorkerMessageListener<
     Message extends Data | Response
@@ -318,9 +318,9 @@ export abstract class AbstractPool<
   /**
    * Function that can be hooked up when a worker has been newly created and moved to the workers registry.
    *
-   * Can be used to update the `maxListeners` or binding the `main-worker`<->`worker` connection if not bind by default.
+   * Can be used to update the `maxListeners` or binding the `main-worker`\<-\>`worker` connection if not bind by default.
    *
-   * @param worker The newly created worker.
+   * @param worker The newly created worker.
    */
   protected abstract afterWorkerSetup (worker: Worker): void
 
@@ -389,7 +389,7 @@ export abstract class AbstractPool<
   /**
    * Increases the number of tasks that the given worker has applied.
    *
-   * @param worker Worker which running tasks is increased.
+   * @param worker Worker which running tasks is increased.
    */
   private increaseWorkerRunningTasks (worker: Worker): void {
     this.stepWorkerRunningTasks(worker, 1)
@@ -398,7 +398,7 @@ export abstract class AbstractPool<
   /**
    * Decreases the number of tasks that the given worker has applied.
    *
-   * @param worker Worker which running tasks is decreased.
+   * @param worker Worker which running tasks is decreased.
    */
   private decreaseWorkerRunningTasks (worker: Worker): void {
     this.stepWorkerRunningTasks(worker, -1)
@@ -407,8 +407,8 @@ export abstract class AbstractPool<
   /**
    * Steps the number of tasks that the given worker has applied.
    *
-   * @param worker Worker which running tasks are stepped.
-   * @param step Number of running tasks step.
+   * @param worker Worker which running tasks are stepped.
+   * @param step Number of running tasks step.
    */
   private stepWorkerRunningTasks (worker: Worker, step: number): void {
     if (this.checkWorkerTasksUsage(worker)) {
@@ -421,8 +421,8 @@ export abstract class AbstractPool<
   /**
    * Steps the number of tasks that the given worker has run.
    *
-   * @param worker Worker which has run tasks.
-   * @param step Number of run tasks step.
+   * @param worker Worker which has run tasks.
+   * @param step Number of run tasks step.
    */
   private stepWorkerRunTasks (worker: Worker, step: number): void {
     if (this.checkWorkerTasksUsage(worker)) {
@@ -435,8 +435,8 @@ export abstract class AbstractPool<
   /**
    * Updates tasks runtime for the given worker.
    *
-   * @param worker Worker which run the task.
-   * @param taskRunTime Worker task runtime.
+   * @param worker Worker which run the task.
+   * @param taskRunTime Worker task runtime.
    */
   private updateWorkerTasksRunTime (
     worker: Worker,
@@ -459,7 +459,7 @@ export abstract class AbstractPool<
   /**
    * Checks if the given worker is registered in the workers tasks usage map.
    *
-   * @param worker Worker to check.
+   * @param worker Worker to check.
    * @returns `true` if the worker is registered in the workers tasks usage map. `false` otherwise.
    */
   private checkWorkerTasksUsage (worker: Worker): boolean {
@@ -473,7 +473,7 @@ export abstract class AbstractPool<
   /**
    * Initializes tasks usage statistics.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    */
   private initWorkerTasksUsage (worker: Worker): void {
     this.workersTasksUsage.set(worker, {
@@ -487,7 +487,7 @@ export abstract class AbstractPool<
   /**
    * Removes worker tasks usage statistics.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    */
   private removeWorkerTasksUsage (worker: Worker): void {
     this.workersTasksUsage.delete(worker)
@@ -496,7 +496,7 @@ export abstract class AbstractPool<
   /**
    * Resets worker tasks usage statistics.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    */
   private resetWorkerTasksUsage (worker: Worker): void {
     this.removeWorkerTasksUsage(worker)
index a90e586039c6a2cc5f841618a0223aa0675983be..8b8c5185772dbea59bc0d22b2e1cb90b9383d507 100644 (file)
@@ -8,8 +8,8 @@ import { FixedClusterPool } from './fixed'
  * This cluster pool creates new workers when the others are busy, up to the maximum number of workers.
  * When the maximum number of workers is reached, an event is emitted. If you want to listen to this event, use the pool's `emitter`.
  *
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  * @author [Christopher Quadflieg](https://github.com/Shinigami92)
  * @since 2.0.0
  */
@@ -20,10 +20,10 @@ export class DynamicClusterPool<
   /**
    * Constructs a new poolifier dynamic cluster pool.
    *
-   * @param min Minimum number of workers which are always active.
-   * @param max Maximum number of workers that can be created by this pool.
-   * @param filePath Path to an implementation of a `ClusterWorker` file, which can be relative or absolute.
-   * @param opts Options for this dynamic cluster pool.
+   * @param min Minimum number of workers which are always active.
+   * @param max Maximum number of workers that can be created by this pool.
+   * @param filePath Path to an implementation of a `ClusterWorker` file, which can be relative or absolute.
+   * @param opts Options for this dynamic cluster pool.
    */
   public constructor (
     min: number,
@@ -34,12 +34,12 @@ export class DynamicClusterPool<
     super(min, filePath, opts)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get type (): PoolType {
     return PoolType.DYNAMIC
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get busy (): boolean {
     return this.workers.length === this.max
   }
index a58dfb6f5f66c3bec010f98bf06e37ae28613b4c..2e89b3232dccbc321907b02a73b583d650ee1661 100644 (file)
@@ -31,8 +31,8 @@ export interface ClusterPoolOptions extends PoolOptions<Worker> {
  *
  * This pool selects the workers in a round robin fashion.
  *
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  * @author [Christopher Quadflieg](https://github.com/Shinigami92)
  * @since 2.0.0
  */
@@ -43,9 +43,9 @@ export class FixedClusterPool<
   /**
    * Constructs a new poolifier fixed cluster pool.
    *
-   * @param numberOfWorkers Number of workers for this pool.
-   * @param filePath Path to an implementation of a `ClusterWorker` file, which can be relative or absolute.
-   * @param opts Options for this fixed cluster pool.
+   * @param numberOfWorkers Number of workers for this pool.
+   * @param filePath Path to an implementation of a `ClusterWorker` file, which can be relative or absolute.
+   * @param opts Options for this fixed cluster pool.
    */
   public constructor (
     numberOfWorkers: number,
@@ -55,28 +55,28 @@ export class FixedClusterPool<
     super(numberOfWorkers, filePath, opts)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected setupHook (): void {
     cluster.setupPrimary({ ...this.opts.settings, exec: this.filePath })
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected isMain (): boolean {
     return cluster.isPrimary
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public destroyWorker (worker: Worker): void {
     this.sendToWorker(worker, { kill: 1 })
     worker.kill()
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected sendToWorker (worker: Worker, message: MessageValue<Data>): void {
     worker.send(message)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public registerWorkerMessageListener<Message extends Data | Response>(
     worker: Worker,
     listener: (message: MessageValue<Message>) => void
@@ -84,23 +84,23 @@ export class FixedClusterPool<
     worker.on('message', listener)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected createWorker (): Worker {
     return cluster.fork(this.opts.env)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected afterWorkerSetup (worker: Worker): void {
     // Listen to worker messages.
     this.registerWorkerMessageListener(worker, super.workerListener())
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get type (): PoolType {
     return PoolType.FIXED
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get busy (): boolean {
     return this.internalGetBusyStatus()
   }
index 0c2454f83f9dbebbc48358ad3ab2e7c8c81fb77d..e0d0534f83a846cbfac77eb87e305e0975c49abf 100644 (file)
@@ -22,9 +22,9 @@ export interface TasksUsage {
 /**
  * Internal contract definition for a poolifier pool.
  *
- * @template Worker Type of worker which manages this pool.
- * @template Data Type of data sent to the worker.
- * @template Response Type of response of execution.
+ * @typeParam Worker - Type of worker which manages this pool.
+ * @typeParam Data - Type of data sent to the worker.
+ * @typeParam Response - Type of response of execution.
  */
 export interface IPoolInternal<
   Worker extends IPoolWorker,
@@ -77,7 +77,7 @@ export interface IPoolInternal<
   /**
    * Gets worker index.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    * @returns The worker index.
    */
   getWorkerIndex: (worker: Worker) => number
@@ -85,7 +85,7 @@ export interface IPoolInternal<
   /**
    * Gets worker running tasks.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    * @returns The number of tasks currently running on the worker.
    */
   getWorkerRunningTasks: (worker: Worker) => number | undefined
@@ -93,7 +93,7 @@ export interface IPoolInternal<
   /**
    * Gets worker average tasks runtime.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    * @returns The average tasks runtime on the worker.
    */
   getWorkerAverageTasksRunTime: (worker: Worker) => number | undefined
index 0d4d12fe279ca6f6287232cab0e6b1d19146ee1d..e371e9c15fd7797b956023add35375eb04a326ac 100644 (file)
@@ -25,8 +25,8 @@ export interface IPoolWorker {
   /**
    * Register an event listener.
    *
-   * @param event The event.
-   * @param handler The event listener.
+   * @param event The event.
+   * @param handler The event listener.
    */
   on: ((event: 'message', handler: MessageHandler<this>) => void) &
   ((event: 'error', handler: ErrorHandler<this>) => void) &
@@ -35,8 +35,8 @@ export interface IPoolWorker {
   /**
    * Register a listener to the exit event that will only performed once.
    *
-   * @param event `'exit'`.
-   * @param handler The exit handler.
+   * @param event `'exit'`.
+   * @param handler The exit handler.
    */
   once: (event: 'exit', handler: ExitHandler<this>) => void
 }
index 2ce311f710e0d7a809b5b219cd7309c9354d15cf..dbbb5969ebd920022e31d64d156f087065aa9d12 100644 (file)
@@ -39,7 +39,7 @@ export interface PoolOptions<Worker> {
   /**
    * Pool events emission.
    *
-   * @default true
+   * @defaultValue true
    */
   enableEvents?: boolean
 }
@@ -47,8 +47,8 @@ export interface PoolOptions<Worker> {
 /**
  * Contract definition for a poolifier pool.
  *
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export interface IPool<Data = unknown, Response = unknown> {
   /**
@@ -62,7 +62,7 @@ export interface IPool<Data = unknown, Response = unknown> {
   /**
    * Performs the task specified in the constructor with the data parameter.
    *
-   * @param data The input for the specified task. This can only be serializable data.
+   * @param data The input for the specified task. This can only be serializable data.
    * @returns Promise that will be resolved when the task is successfully completed.
    */
   execute: (data: Data) => Promise<Response>
@@ -73,7 +73,7 @@ export interface IPool<Data = unknown, Response = unknown> {
   /**
    * Sets the worker choice strategy in this pool.
    *
-   * @param workerChoiceStrategy The worker choice strategy.
+   * @param workerChoiceStrategy The worker choice strategy.
    */
   setWorkerChoiceStrategy: (workerChoiceStrategy: WorkerChoiceStrategy) => void
 }
index 3ba59b42fb0b4b8233edcca1139fc4c6b3f69350..314c13c0cd02063a569a8ee5997a1d748b13cdbd 100644 (file)
@@ -9,18 +9,18 @@ import type {
 /**
  * Abstract worker choice strategy class.
  *
- * @template Worker Type of worker which manages the strategy.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages the strategy.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export abstract class AbstractWorkerChoiceStrategy<
   Worker extends IPoolWorker,
   Data,
   Response
 > implements IWorkerChoiceStrategy<Worker> {
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public readonly isDynamicPool: boolean = this.pool.type === PoolType.DYNAMIC
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public requiredStatistics: RequiredStatistics = {
     runTime: false
   }
@@ -28,15 +28,15 @@ export abstract class AbstractWorkerChoiceStrategy<
   /**
    * Constructs a worker choice strategy attached to the pool.
    *
-   * @param pool The pool instance.
+   * @param pool The pool instance.
    */
   public constructor (
     protected readonly pool: IPoolInternal<Worker, Data, Response>
   ) {}
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public abstract reset (): boolean
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public abstract choose (): Worker
 }
index 6f73129e1ca9149dc6c21690b7e6c53b296e08af..5f07d60794b07e9c4eb9846f4d9ea9d1847a1caa 100644 (file)
@@ -11,9 +11,9 @@ import { getWorkerChoiceStrategy } from './selection-strategies-utils'
 /**
  * Selects the next worker for dynamic pool.
  *
- * @template Worker Type of worker which manages the strategy.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages the strategy.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export class DynamicPoolWorkerChoiceStrategy<
   Worker extends IPoolWorker,
@@ -25,9 +25,9 @@ export class DynamicPoolWorkerChoiceStrategy<
   /**
    * Constructs a worker choice strategy for dynamic pool.
    *
-   * @param pool The pool instance.
-   * @param createDynamicallyWorkerCallback The worker creation callback for dynamic pool.
-   * @param workerChoiceStrategy The worker choice strategy when the pull is busy.
+   * @param pool The pool instance.
+   * @param createDynamicallyWorkerCallback The worker creation callback for dynamic pool.
+   * @param workerChoiceStrategy The worker choice strategy when the pull is busy.
    */
   public constructor (
     pool: IPoolInternal<Worker, Data, Response>,
@@ -42,12 +42,12 @@ export class DynamicPoolWorkerChoiceStrategy<
     this.requiredStatistics = this.workerChoiceStrategy.requiredStatistics
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public reset (): boolean {
     return this.workerChoiceStrategy.reset()
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public choose (): Worker {
     const freeWorker = this.pool.findFreeWorker()
     if (freeWorker !== false) {
index 2fd43d7ae416181c67d83492e5d14709a1cae940..00ed1c90aa53592ca1de2b067273f4e6f1de2693 100644 (file)
@@ -14,16 +14,16 @@ interface WorkerVirtualTaskTimestamp {
  * Selects the next worker with a fair share scheduling algorithm.
  * Loosely modeled after the fair queueing algorithm: https://en.wikipedia.org/wiki/Fair_queuing.
  *
- * @template Worker Type of worker which manages the strategy.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages the strategy.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export class FairShareWorkerChoiceStrategy<
   Worker extends IPoolWorker,
   Data,
   Response
 > extends AbstractWorkerChoiceStrategy<Worker, Data, Response> {
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public readonly requiredStatistics: RequiredStatistics = {
     runTime: true
   }
@@ -36,13 +36,13 @@ export class FairShareWorkerChoiceStrategy<
   WorkerVirtualTaskTimestamp
   > = new Map<Worker, WorkerVirtualTaskTimestamp>()
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public reset (): boolean {
     this.workerLastVirtualTaskTimestamp.clear()
     return true
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public choose (): Worker {
     let minWorkerVirtualTaskEndTimestamp = Infinity
     let chosenWorker!: Worker
@@ -63,7 +63,7 @@ export class FairShareWorkerChoiceStrategy<
   /**
    * Computes worker last virtual task timestamp.
    *
-   * @param worker The worker.
+   * @param worker The worker.
    */
   private computeWorkerLastVirtualTaskTimestamp (worker: Worker): void {
     const workerVirtualTaskStartTimestamp = Math.max(
index 2bfbb15b8e4e6e26235a82900e865bd5a7e570e2..e62d9cdf83bd9a5ae472bc08296dfbe18b96e806 100644 (file)
@@ -4,21 +4,21 @@ import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy'
 /**
  * Selects the less recently used worker.
  *
- * @template Worker Type of worker which manages the strategy.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages the strategy.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export class LessRecentlyUsedWorkerChoiceStrategy<
   Worker extends IPoolWorker,
   Data,
   Response
 > extends AbstractWorkerChoiceStrategy<Worker, Data, Response> {
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public reset (): boolean {
     return true
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public choose (): Worker {
     let minNumberOfRunningTasks = Infinity
     // A worker is always found because it picks the one with fewer tasks
index 0a9fbb7b0a386e1f2ec2f7a78c8f0bf61a9d8572..76cdd4abac3ff7a2c5a5988cf76e66d87ab9be9b 100644 (file)
@@ -4,9 +4,9 @@ import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy'
 /**
  * Selects the next worker in a round robin fashion.
  *
- * @template Worker Type of worker which manages the strategy.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages the strategy.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export class RoundRobinWorkerChoiceStrategy<
   Worker extends IPoolWorker,
@@ -18,13 +18,13 @@ export class RoundRobinWorkerChoiceStrategy<
    */
   private nextWorkerIndex: number = 0
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public reset (): boolean {
     this.nextWorkerIndex = 0
     return true
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public choose (): Worker {
     const chosenWorker = this.pool.workers[this.nextWorkerIndex]
     this.nextWorkerIndex =
index 21e4129eeca6d9e09619647ab7b80abbd299032c..3e7c3427e84f7bedb015e8f6d7ef54215377bd40 100644 (file)
@@ -37,7 +37,7 @@ export interface RequiredStatistics {
 /**
  * Worker choice strategy interface.
  *
- * @template Worker Type of worker which manages the strategy.
+ * @typeParam Worker - Type of worker which manages the strategy.
  */
 export interface IWorkerChoiceStrategy<Worker extends IPoolWorker> {
   /**
index 70735c086cab01ca34745144d4662f50d94caf20..4c0fea61ef05a4ebb398a396c580bfe9d0afa084 100644 (file)
@@ -13,8 +13,8 @@ import { WeightedRoundRobinWorkerChoiceStrategy } from './weighted-round-robin-w
 /**
  * Gets the worker choice strategy instance.
  *
- * @param pool The pool instance.
- * @param workerChoiceStrategy The worker choice strategy.
+ * @param pool The pool instance.
+ * @param workerChoiceStrategy The worker choice strategy.
  * @returns The worker choice strategy instance.
  */
 export function getWorkerChoiceStrategy<
index 9bd5a07b3b5fa761ef4fd28993b4078568fef346..2b7cd9420d209effcf8fc0b251c805770c30c0b2 100644 (file)
@@ -16,16 +16,16 @@ interface TaskRunTime {
  * Selects the next worker with a weighted round robin scheduling algorithm.
  * Loosely modeled after the weighted round robin queueing algorithm: https://en.wikipedia.org/wiki/Weighted_round_robin.
  *
- * @template Worker Type of worker which manages the strategy.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages the strategy.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export class WeightedRoundRobinWorkerChoiceStrategy<
   Worker extends IPoolWorker,
   Data,
   Response
 > extends AbstractWorkerChoiceStrategy<Worker, Data, Response> {
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public readonly requiredStatistics: RequiredStatistics = {
     runTime: true
   }
@@ -49,7 +49,7 @@ export class WeightedRoundRobinWorkerChoiceStrategy<
   /**
    * Constructs a worker choice strategy that selects with a weighted round robin scheduling algorithm.
    *
-   * @param pool The pool instance.
+   * @param pool The pool instance.
    */
   public constructor (pool: IPoolInternal<Worker, Data, Response>) {
     super(pool)
@@ -57,7 +57,7 @@ export class WeightedRoundRobinWorkerChoiceStrategy<
     this.initWorkersTaskRunTime()
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public reset (): boolean {
     this.currentWorkerIndex = 0
     this.workersTaskRunTime.clear()
@@ -65,7 +65,7 @@ export class WeightedRoundRobinWorkerChoiceStrategy<
     return true
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public choose (): Worker {
     const chosenWorker = this.pool.workers[this.currentWorkerIndex]
     if (this.isDynamicPool && !this.workersTaskRunTime.has(chosenWorker)) {
index 42e6735e658ac76a9a338e389404f784a6265560..1bba1a55eccdc82a02d6c0849c2413c68b70b9dc 100644 (file)
@@ -12,9 +12,9 @@ import { getWorkerChoiceStrategy } from './selection-strategies-utils'
 /**
  * The worker choice strategy context.
  *
- * @template Worker Type of worker.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export class WorkerChoiceStrategyContext<
   Worker extends IPoolWorker,
@@ -26,9 +26,9 @@ export class WorkerChoiceStrategyContext<
   /**
    * Worker choice strategy context constructor.
    *
-   * @param pool The pool instance.
-   * @param createDynamicallyWorkerCallback The worker creation callback for dynamic pool.
-   * @param workerChoiceStrategy The worker choice strategy.
+   * @param pool The pool instance.
+   * @param createDynamicallyWorkerCallback The worker creation callback for dynamic pool.
+   * @param workerChoiceStrategy The worker choice strategy.
    */
   public constructor (
     private readonly pool: IPoolInternal<Worker, Data, Response>,
@@ -41,7 +41,7 @@ export class WorkerChoiceStrategyContext<
   /**
    * Gets the worker choice strategy instance specific to the pool type.
    *
-   * @param workerChoiceStrategy The worker choice strategy.
+   * @param workerChoiceStrategy The worker choice strategy.
    * @returns The worker choice strategy instance for the pool type.
    */
   private getPoolWorkerChoiceStrategy (
@@ -69,7 +69,7 @@ export class WorkerChoiceStrategyContext<
   /**
    * Sets the worker choice strategy to use in the context.
    *
-   * @param workerChoiceStrategy The worker choice strategy to set.
+   * @param workerChoiceStrategy The worker choice strategy to set.
    */
   public setWorkerChoiceStrategy (
     workerChoiceStrategy: WorkerChoiceStrategy
index a6cc209a8bbd7c2b88732f986ccc066484f7b63d..19cb9fbf6b9a21a649c9fe548955e62abc6c750f 100644 (file)
@@ -9,8 +9,8 @@ import { FixedThreadPool } from './fixed'
  * This thread pool creates new threads when the others are busy, up to the maximum number of threads.
  * When the maximum number of threads is reached, an event is emitted. If you want to listen to this event, use the pool's `emitter`.
  *
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  * @author [Alessandro Pio Ardizio](https://github.com/pioardi)
  * @since 0.0.1
  */
@@ -21,10 +21,10 @@ export class DynamicThreadPool<
   /**
    * Constructs a new poolifier dynamic thread pool.
    *
-   * @param min Minimum number of threads which are always active.
-   * @param max Maximum number of threads that can be created by this pool.
-   * @param filePath Path to an implementation of a `ThreadWorker` file, which can be relative or absolute.
-   * @param opts Options for this dynamic thread pool.
+   * @param min Minimum number of threads which are always active.
+   * @param max Maximum number of threads that can be created by this pool.
+   * @param filePath Path to an implementation of a `ThreadWorker` file, which can be relative or absolute.
+   * @param opts Options for this dynamic thread pool.
    */
   public constructor (
     min: number,
@@ -35,12 +35,12 @@ export class DynamicThreadPool<
     super(min, filePath, opts)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get type (): PoolType {
     return PoolType.DYNAMIC
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get busy (): boolean {
     return this.workers.length === this.max
   }
index a8161f6783f764831ef632bc4d48205419ab1850..13a280b54723e2fcf18f2af5ce73322d4e4f8a11 100644 (file)
@@ -16,8 +16,8 @@ export type ThreadWorkerWithMessageChannel = Worker & Draft<MessageChannel>
  *
  * This pool selects the threads in a round robin fashion.
  *
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  * @author [Alessandro Pio Ardizio](https://github.com/pioardi)
  * @since 0.0.1
  */
@@ -28,9 +28,9 @@ export class FixedThreadPool<
   /**
    * Constructs a new poolifier fixed thread pool.
    *
-   * @param numberOfThreads Number of threads for this pool.
-   * @param filePath Path to an implementation of a `ThreadWorker` file, which can be relative or absolute.
-   * @param opts Options for this fixed thread pool.
+   * @param numberOfThreads Number of threads for this pool.
+   * @param filePath Path to an implementation of a `ThreadWorker` file, which can be relative or absolute.
+   * @param opts Options for this fixed thread pool.
    */
   public constructor (
     numberOfThreads: number,
@@ -40,12 +40,12 @@ export class FixedThreadPool<
     super(numberOfThreads, filePath, opts)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected isMain (): boolean {
     return isMainThread
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public async destroyWorker (
     worker: ThreadWorkerWithMessageChannel
   ): Promise<void> {
@@ -53,7 +53,7 @@ export class FixedThreadPool<
     await worker.terminate()
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected sendToWorker (
     worker: ThreadWorkerWithMessageChannel,
     message: MessageValue<Data>
@@ -61,7 +61,7 @@ export class FixedThreadPool<
     worker.postMessage(message)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public registerWorkerMessageListener<Message extends Data | Response>(
     messageChannel: ThreadWorkerWithMessageChannel,
     listener: (message: MessageValue<Message>) => void
@@ -69,14 +69,14 @@ export class FixedThreadPool<
     messageChannel.port2?.on('message', listener)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected createWorker (): ThreadWorkerWithMessageChannel {
     return new Worker(this.filePath, {
       env: SHARE_ENV
     })
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected afterWorkerSetup (worker: ThreadWorkerWithMessageChannel): void {
     const { port1, port2 } = new MessageChannel()
     worker.postMessage({ parent: port1 }, [port1])
@@ -86,12 +86,12 @@ export class FixedThreadPool<
     this.registerWorkerMessageListener(worker, super.workerListener())
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get type (): PoolType {
     return PoolType.FIXED
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   public get busy (): boolean {
     return this.internalGetBusyStatus()
   }
index 7bcd076c291736cad1729d66a671a51b2115c1b7..2d142f860e4b19893a131e7cbc872abda5f8270a 100644 (file)
@@ -46,8 +46,8 @@ export interface MessageValue<
 /**
  * An object holding the worker that will be used to resolve/rejects the promise later on.
  *
- * @template Worker Type of worker.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
  */
 export interface PromiseWorkerResponseWrapper<
   Worker extends IPoolWorker,
index 846994591b5b2049039c748b554aba84b1a13d97..3a81e0f847f753ea55a7630d45a72fd08ec18a85 100644 (file)
@@ -12,9 +12,9 @@ const DEFAULT_KILL_BEHAVIOR: KillBehavior = KillBehaviors.SOFT
 /**
  * Base class that implements some shared logic for all poolifier workers.
  *
- * @template MainWorker Type of main worker.
- * @template Data Type of data this worker receives from pool's execution. This can only be serializable data.
- * @template Response Type of response the worker sends back to the main worker. This can only be serializable data.
+ * @typeParam MainWorker - Type of main worker.
+ * @typeParam Data - Type of data this worker receives from pool's execution. This can only be serializable data.
+ * @typeParam Response - Type of response the worker sends back to the main worker. This can only be serializable data.
  */
 export abstract class AbstractWorker<
   MainWorker extends Worker | MessagePort,
@@ -36,11 +36,11 @@ export abstract class AbstractWorker<
   /**
    * Constructs a new poolifier worker.
    *
-   * @param type The type of async event.
-   * @param isMain Whether this is the main worker or not.
-   * @param fn Function processed by the worker when the pool's `execution` function is invoked.
-   * @param mainWorker Reference to main worker.
-   * @param opts Options for the worker.
+   * @param type The type of async event.
+   * @param isMain Whether this is the main worker or not.
+   * @param fn Function processed by the worker when the pool's `execution` function is invoked.
+   * @param mainWorker Reference to main worker.
+   * @param opts Options for the worker.
    */
   public constructor (
     type: string,
@@ -110,7 +110,7 @@ export abstract class AbstractWorker<
   /**
    * Checks if the `fn` parameter is passed to the constructor.
    *
-   * @param fn The function that should be defined.
+   * @param fn The function that should be defined.
    */
   private checkFunctionInput (fn: (data: Data) => Response): void {
     if (fn == null) throw new Error('fn parameter is mandatory')
@@ -134,7 +134,7 @@ export abstract class AbstractWorker<
   /**
    * Sends a message to the main worker.
    *
-   * @param message The response message.
+   * @param message The response message.
    */
   protected abstract sendToMainWorker (message: MessageValue<Response>): void
 
@@ -153,7 +153,7 @@ export abstract class AbstractWorker<
   /**
    * Handles an error and convert it to a string so it can be sent back to the main worker.
    *
-   * @param e The error raised by the worker.
+   * @param e The error raised by the worker.
    * @returns Message of the error.
    */
   protected handleError (e: Error | string): string {
@@ -163,8 +163,8 @@ export abstract class AbstractWorker<
   /**
    * Runs the given function synchronously.
    *
-   * @param fn Function that will be executed.
-   * @param value Input data for the given function.
+   * @param fn Function that will be executed.
+   * @param value Input data for the given function.
    */
   protected run (
     fn: (data?: Data) => Response,
@@ -186,8 +186,8 @@ export abstract class AbstractWorker<
   /**
    * Runs the given function asynchronously.
    *
-   * @param fn Function that will be executed.
-   * @param value Input data for the given function.
+   * @param fn Function that will be executed.
+   * @param value Input data for the given function.
    */
   protected runAsync (
     fn: (data?: Data) => Promise<Response>,
index 19bfa4e56fda61d46e3d22b47953b567af7cd947..4f5fbb6b2ea87dcb54227b6b06576d80dba9c849 100644 (file)
@@ -13,8 +13,8 @@ import type { WorkerOptions } from './worker-options'
  * If you use a `DynamicClusterPool` the extra workers that were created will be terminated,
  * but the minimum number of workers will be guaranteed.
  *
- * @template Data Type of data this worker receives from pool's execution. This can only be serializable data.
- * @template Response Type of response the worker sends back to the main worker. This can only be serializable data.
+ * @typeParam Data - Type of data this worker receives from pool's execution. This can only be serializable data.
+ * @typeParam Response - Type of response the worker sends back to the main worker. This can only be serializable data.
  * @author [Christopher Quadflieg](https://github.com/Shinigami92)
  * @since 2.0.0
  */
@@ -25,8 +25,8 @@ export class ClusterWorker<
   /**
    * Constructs a new poolifier cluster worker.
    *
-   * @param fn Function processed by the worker when the pool's `execution` function is invoked.
-   * @param opts Options for the worker.
+   * @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 = {}) {
     super(
@@ -38,12 +38,12 @@ export class ClusterWorker<
     )
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected sendToMainWorker (message: MessageValue<Response>): void {
     this.getMainWorker().send(message)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected handleError (e: Error | string): string {
     return e instanceof Error ? e.message : e
   }
index 20141e441c93e71adb901f5d13fb8fa0f0288957..a8424fbf0151e0ffa59674b4a5575fe604b5543e 100644 (file)
@@ -13,8 +13,8 @@ import type { WorkerOptions } from './worker-options'
  * If you use a `DynamicThreadPool` the extra workers that were created will be terminated,
  * but the minimum number of workers will be guaranteed.
  *
- * @template Data Type of data this worker receives from pool's execution. This can only be serializable data.
- * @template Response Type of response the worker sends back to the main thread. This can only be serializable data.
+ * @typeParam Data - Type of data this worker receives from pool's execution. This can only be serializable data.
+ * @typeParam Response - Type of response the worker sends back to the main thread. This can only be serializable data.
  * @author [Alessandro Pio Ardizio](https://github.com/pioardi)
  * @since 0.0.1
  */
@@ -25,14 +25,14 @@ export class ThreadWorker<
   /**
    * Constructs a new poolifier thread worker.
    *
-   * @param fn Function processed by the worker when the pool's `execution` function is invoked.
-   * @param opts Options for the worker.
+   * @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 = {}) {
     super('worker-thread-pool:poolifier', isMainThread, fn, parentPort, opts)
   }
 
-  /** @inheritDoc */
+  /** {@inheritDoc} */
   protected sendToMainWorker (message: MessageValue<Response>): void {
     this.getMainWorker().postMessage(message)
   }
index c9a3cdfa6f43c9828f3bb3e60d6ab7e4acc0f757..290914f1693d71b78f6af2445dbd4d1347b6e363 100644 (file)
@@ -20,9 +20,9 @@ export type KillBehavior = keyof typeof KillBehaviors
 /**
  * Detects whether the given value is a kill behavior or not.
  *
- * @template KB Which specific KillBehavior to test against.
- * @param killBehavior Which kind of kill behavior to detect.
- * @param value Any value.
+ * @typeParam KB - Which specific KillBehavior to test against.
+ * @param killBehavior Which kind of kill behavior to detect.
+ * @param value Any value.
  * @returns `true` if `value` was strictly equals to `killBehavior`, otherwise `false`.
  */
 export function isKillBehavior<KB extends KillBehavior> (
@@ -46,13 +46,13 @@ export interface WorkerOptions {
    *   when this timeout expires your tasks is interrupted and the worker is killed if is not part of the minimum size of the pool.
    * - If `killBehavior` is set to `KillBehaviors.SOFT` your tasks have no timeout and your workers will not be terminated until your task is completed.
    *
-   * @default 60000 ms
+   * @defaultValue 60000 ms
    */
   maxInactiveTime?: number
   /**
    * Whether your worker will perform asynchronous or not.
    *
-   * @default false
+   * @defaultValue false
    */
   async?: boolean
   /**
@@ -63,7 +63,7 @@ export interface WorkerOptions {
    *
    * This option only apply to the newly created workers.
    *
-   * @default KillBehaviors.SOFT
+   * @defaultValue KillBehaviors.SOFT
    */
   killBehavior?: KillBehavior
 }