All files convertCpu.ts

0% Statements 0/40
0% Branches 0/1
0% Functions 0/1
0% Lines 0/40

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41                                                                                 
/**
 * Copyright (c) OpenLens Authors. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */

import { TypedRegEx } from "typed-regex";

// Helper to convert CPU K8S units to numbers

const unitConverters = new Map([
  ["n", 1000 ** -3],
  ["u", 1000 ** -2],
  ["m", 1000 ** -1], // milli
  ["", 1000 ** 0], // no units
  ["k", 1000 ** 1],
  ["M", 1000 ** 2],
  ["G", 1000 ** 3],
  ["P", 1000 ** 4],
  ["T", 1000 ** 5],
  ["E", 1000 ** 6],
]);

const cpuUnitsRegex = TypedRegEx("^(?<digits>[+-]?[0-9.]+(e[-+]?[0-9]+)?)(?<unit>[EinumkKMGTP]*)$");

export function cpuUnitsToNumber(value: string) {
  const match = cpuUnitsRegex.captures(value);

  if (!match) {
    return undefined;
  }

  const { digits = "", unit } = match;
  const conversion = unitConverters.get(unit);

  if (conversion === undefined) {
    return undefined;
  }

  return parseFloat(digits) * conversion;
}