refactor: factor out task function validation
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 27 Aug 2023 21:27:47 +0000 (23:27 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 27 Aug 2023 21:27:47 +0000 (23:27 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/worker/abstract-worker.ts

index 23c661c9cd7ae3f1477660bf960db7a08e50178c..c00cf08320c261c40d857b7bcb7788a47f9561e7 100644 (file)
@@ -103,6 +103,27 @@ export abstract class AbstractWorker<
     delete this.opts.async
   }
 
+  private checkValidTaskFunction (
+    name: string,
+    fn: TaskFunction<Data, Response>
+  ): void {
+    if (typeof name !== 'string') {
+      throw new TypeError(
+        'A taskFunctions parameter object key is not a string'
+      )
+    }
+    if (typeof name === 'string' && name.trim().length === 0) {
+      throw new TypeError(
+        'A taskFunctions parameter object key is an empty string'
+      )
+    }
+    if (typeof fn !== 'function') {
+      throw new TypeError(
+        'A taskFunctions parameter object value is not a function'
+      )
+    }
+  }
+
   /**
    * Checks if the `taskFunctions` parameter is passed to the constructor.
    *
@@ -128,21 +149,7 @@ export abstract class AbstractWorker<
     } else if (isPlainObject(taskFunctions)) {
       let firstEntry = true
       for (const [name, fn] of Object.entries(taskFunctions)) {
-        if (typeof name !== 'string') {
-          throw new TypeError(
-            'A taskFunctions parameter object key is not a string'
-          )
-        }
-        if (typeof name === 'string' && name.trim().length === 0) {
-          throw new TypeError(
-            'A taskFunctions parameter object key is an empty string'
-          )
-        }
-        if (typeof fn !== 'function') {
-          throw new TypeError(
-            'A taskFunctions parameter object value is not a function'
-          )
-        }
+        this.checkValidTaskFunction(name, fn)
         const boundFn = fn.bind(this)
         if (firstEntry) {
           this.taskFunctions.set(DEFAULT_TASK_NAME, boundFn)