Page MenuHomeSealhub

util.ts
No OneTemporary

import type { BaseContext } from "koa";
import qs from "qs";
export async function sleep(time: number) {
return new Promise((resolve) => setTimeout(resolve, time));
}
export type Awaited<T> = T extends Promise<infer U> ? U : T;
export type UnwrapArray<T> = T extends Array<infer U> ? U : T;
export function* naturalNumbers(min: number, max: number) {
for (let i = min; i <= max; i++) {
yield i;
}
}
export function UrlWithNewParams(
ctx: BaseContext,
query_params: Record<string, unknown>
): string {
return `${ctx.path}?${qs.stringify(query_params)}`;
}
export function shuffle<T>(array: T[]): T[] {
const array_copy = [...array];
let currentIndex = array_copy.length;
// While there remain elements to shuffle...
while (currentIndex != 0) {
// Pick a remaining element...
const randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// And swap it with the current element.
const new_value = [array_copy[randomIndex], array_copy[currentIndex]];
if (new_value[0] && new_value[1]) {
[array_copy[currentIndex], array_copy[randomIndex]] = new_value;
} else {
console.error("One of array_copy's values is undefined");
}
}
return array_copy;
}

File Metadata

Mime Type
text/x-java
Expires
Tue, Jul 8, 07:08 (9 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
810368
Default Alt Text
util.ts (1 KB)

Event Timeline