Initial commit

Co-Authored-By: Eric Tuvesson <eric.tuvesson@gmail.com>
Co-Authored-By: mikaeltellhed <2311083+mikaeltellhed@users.noreply.github.com>
Co-Authored-By: kotte <14197736+mrtamagotchi@users.noreply.github.com>
Co-Authored-By: Anders Larsson <64838990+anders-topp@users.noreply.github.com>
Co-Authored-By: Johan  <4934465+joolsus@users.noreply.github.com>
Co-Authored-By: Tore Knudsen <18231882+torekndsn@users.noreply.github.com>
Co-Authored-By: victoratndl <99176179+victoratndl@users.noreply.github.com>
This commit is contained in:
Michael Cartner
2024-01-26 11:52:55 +01:00
commit b9c60b07dc
2789 changed files with 868795 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
export namespace ConvertUtils {
export function bytesToKilobytes(bytes: number): number {
const kilobytes = bytes / 1024;
return kilobytes;
}
export function bytesToMegabytes(bytes: number): number {
const megabytes = bytes / (1024 * 1024);
return megabytes;
}
export function bytesToGigabytes(bytes: number): number {
const gigabytes = bytes / (1024 * 1024 * 1024);
return gigabytes;
}
export function bytesToMostSuitableSize(bytes: number): string {
if (bytes < 1024) {
return bytes + ' bytes';
} else if (bytes < 1024 * 1024) {
return bytesToKilobytes(bytes).toFixed(2) + ' KB';
} else if (bytes < 1024 * 1024 * 1024) {
return bytesToMegabytes(bytes).toFixed(2) + ' MB';
} else {
return bytesToGigabytes(bytes).toFixed(2) + ' GB';
}
}
}

View File

@@ -0,0 +1,3 @@
export * from './convert';
export * from './promise';
export * from './random';

View File

@@ -0,0 +1,30 @@
// TODO(typescript): Remove when we upgrade to Typescript 4.5
type Awaited<T> = T extends null | undefined
? T // special case for `null | undefined` when not in `--strictNullChecks` mode
: T extends object & { then(onfulfilled: infer F): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped
? F extends (value: infer V, ...args: any) => any // if the argument to `then` is callable, extracts the first argument
? Awaited<V> // recursively unwrap the value
: never // the argument to `then` was not callable
: T; // non-object or non-thenable
type PromiseHash = Record<string, Promise<unknown>>;
type AwaitedPromiseHash<T extends PromiseHash> = {
[P in keyof T]: Awaited<T[P]>;
};
export namespace PromiseUtils {
export async function allObjects<T extends PromiseHash>(object: T): Promise<AwaitedPromiseHash<T>> {
return Object.fromEntries(
await Promise.all(
Object.entries(object).map(async ([key, promise]) => {
return [key, await promise];
})
)
);
}
export function sleep(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
}

View File

@@ -0,0 +1,9 @@
export namespace RandomUtils {
export function range(min: number, max: number): number {
return Math.floor(Math.random() * (max - min + 1) + min);
}
export function within(max: number): number {
return Math.floor(Math.random() * max);
}
}