refactor: use native node random integer generator
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerUtils.ts
index 1874767370a1a5d438993fd6ec2dba1b9f1318d1..f36c6046d626d5d4850f1b75dca253edae043b15 100644 (file)
@@ -1,31 +1,33 @@
-import { webcrypto } from 'node:crypto';
+import { getRandomValues } from 'node:crypto'
 
-import chalk from 'chalk';
+import chalk from 'chalk'
 
 export const sleep = async (milliSeconds: number): Promise<NodeJS.Timeout> => {
-  return new Promise<NodeJS.Timeout>((resolve) => setTimeout(resolve as () => void, milliSeconds));
-};
+  return await new Promise<NodeJS.Timeout>(resolve =>
+    setTimeout(resolve as () => void, milliSeconds)
+  )
+}
 
 export const defaultExitHandler = (code: number): void => {
   if (code === 0) {
-    console.info(chalk.green('Worker exited successfully'));
+    console.info(chalk.green('Worker exited successfully'))
   } else if (code === 1) {
-    console.info(chalk.green('Worker terminated successfully'));
+    console.info(chalk.green('Worker terminated successfully'))
   } else if (code > 1) {
-    console.error(chalk.red(`Worker exited with exit code: ${code.toString()}`));
+    console.error(chalk.red(`Worker exited with exit code: ${code.toString()}`))
   }
-};
+}
 
 export const defaultErrorHandler = (error: Error): void => {
-  console.error(chalk.red('Worker errored: '), error);
-};
+  console.error(chalk.red('Worker errored: '), error)
+}
 
 export const randomizeDelay = (delay: number): number => {
-  const random = secureRandom();
-  const sign = random < 0.5 ? -1 : 1;
-  const randomSum = delay * 0.2 * random; // 0-20% of the delay
-  return delay + sign * randomSum;
-};
+  const random = secureRandom()
+  const sign = random < 0.5 ? -1 : 1
+  const randomSum = delay * 0.2 * random // 0-20% of the delay
+  return delay + sign * randomSum
+}
 
 /**
  * Generates a cryptographically secure random number in the [0,1[ range
@@ -34,5 +36,5 @@ export const randomizeDelay = (delay: number): number => {
  * @internal
  */
 const secureRandom = (): number => {
-  return webcrypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000;
-};
+  return getRandomValues(new Uint32Array(1))[0] / 0x100000000
+}