refactor: use Array.from to build Array() from Map()
[poolifier.git] / src / pools / selection-strategies / selection-strategies-utils.ts
index 777be6e4d4a2be104afd7986bd835e7e04312e96..3c7f5f4df327afcce3aaf7ee7f7ee88c397e6513 100644 (file)
@@ -10,6 +10,7 @@ import { LeastUsedWorkerChoiceStrategy } from './least-used-worker-choice-strate
 import { RoundRobinWorkerChoiceStrategy } from './round-robin-worker-choice-strategy.js'
 import {
   type IWorkerChoiceStrategy,
+  type MeasurementStatisticsRequirements,
   type StrategyPolicy,
   type TaskStatisticsRequirements,
   WorkerChoiceStrategies,
@@ -100,13 +101,27 @@ export const buildWorkerChoiceStrategyOptions = <
   }
 }
 
+export const toggleMedianMeasurementStatisticsRequirements = (
+  measurementStatisticsRequirements: MeasurementStatisticsRequirements,
+  toggleMedian: boolean
+): void => {
+  if (measurementStatisticsRequirements.average && toggleMedian) {
+    measurementStatisticsRequirements.average = false
+    measurementStatisticsRequirements.median = toggleMedian
+  }
+  if (measurementStatisticsRequirements.median && !toggleMedian) {
+    measurementStatisticsRequirements.average = true
+    measurementStatisticsRequirements.median = toggleMedian
+  }
+}
+
 export const buildWorkerChoiceStrategiesPolicy = (
   workerChoiceStrategies: Map<WorkerChoiceStrategy, IWorkerChoiceStrategy>
 ): StrategyPolicy => {
-  const policies: StrategyPolicy[] = []
-  for (const workerChoiceStrategy of workerChoiceStrategies.values()) {
-    policies.push(workerChoiceStrategy.strategyPolicy)
-  }
+  const policies: StrategyPolicy[] = Array.from(
+    workerChoiceStrategies,
+    ([_, workerChoiceStrategy]) => workerChoiceStrategy.strategyPolicy
+  )
   return {
     dynamicWorkerUsage: policies.some(p => p.dynamicWorkerUsage),
     dynamicWorkerReady: policies.some(p => p.dynamicWorkerReady)
@@ -116,12 +131,11 @@ export const buildWorkerChoiceStrategiesPolicy = (
 export const buildWorkerChoiceStrategiesTaskStatisticsRequirements = (
   workerChoiceStrategies: Map<WorkerChoiceStrategy, IWorkerChoiceStrategy>
 ): TaskStatisticsRequirements => {
-  const taskStatisticsRequirements: TaskStatisticsRequirements[] = []
-  for (const workerChoiceStrategy of workerChoiceStrategies.values()) {
-    taskStatisticsRequirements.push(
+  const taskStatisticsRequirements: TaskStatisticsRequirements[] = Array.from(
+    workerChoiceStrategies,
+    ([_, workerChoiceStrategy]) =>
       workerChoiceStrategy.taskStatisticsRequirements
-    )
-  }
+  )
   return {
     runTime: {
       aggregate: taskStatisticsRequirements.some(r => r.runTime.aggregate),