Add vendor compliance report tab
Signed-off-by: Bryan Frimin <bryan@getprobo.com> Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
committed by
Sacha Al Himdani
parent
df23fd635f
commit
7cb84d8ce8
13
packages/helpers/src/file.test.ts
Normal file
13
packages/helpers/src/file.test.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { isEmpty } from "./array";
|
||||
import { fileSize } from "./file";
|
||||
|
||||
describe("file", () => {
|
||||
it("should display a file size in a human readable format", () => {
|
||||
const fakeTranslator = (s: string) => s;
|
||||
expect(fileSize(fakeTranslator, 4911)).toMatchInlineSnapshot(
|
||||
`"4.8 KB"`,
|
||||
);
|
||||
expect(fileSize(fakeTranslator, 20)).toMatchInlineSnapshot(`"20 B"`);
|
||||
});
|
||||
});
|
||||
19
packages/helpers/src/file.ts
Normal file
19
packages/helpers/src/file.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* Return the file size in a human readable format
|
||||
*/
|
||||
export function fileSize(__: (s: string) => string, size: number): string {
|
||||
if (size < 0) return "";
|
||||
if (size === 0) return `0 ${__("B")}`;
|
||||
|
||||
const units = [__("B"), __("KB"), __("MB"), __("GB"), __("TB")];
|
||||
const i = Math.floor(Math.log(size) / Math.log(1024));
|
||||
|
||||
// Don't go beyond available units
|
||||
const unitIndex = Math.min(i, units.length - 1);
|
||||
|
||||
// Convert to the appropriate unit with 2 decimal places
|
||||
const convertedSize = size / Math.pow(1024, unitIndex);
|
||||
const formattedSize = Math.round(convertedSize * 100) / 100;
|
||||
|
||||
return `${formattedSize} ${units[unitIndex]}`;
|
||||
}
|
||||
Reference in New Issue
Block a user