mirror of
https://github.com/artiemis/artemis.js.git
synced 2026-02-14 10:21:54 +00:00
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import * as cheerio from "cheerio";
|
|
import { customAlphabet } from "nanoid";
|
|
|
|
export const nanoid = customAlphabet("1234567890abcdef");
|
|
|
|
export function noop() {}
|
|
|
|
export function pickRandom<T>(arr: T[]): T {
|
|
return arr[Math.floor(Math.random() * arr.length)];
|
|
}
|
|
|
|
export function sleep(ms: number) {
|
|
return new Promise<void>((resolve) => setTimeout(resolve, ms));
|
|
}
|
|
|
|
export function chunk<T>(arr: T[], size: number): T[][];
|
|
export function chunk(arr: string, size: number): string[];
|
|
export function chunk(arr: any, size: number): any[] {
|
|
return Array.from({ length: Math.ceil(arr.length / size) }, (_, i) =>
|
|
arr.slice(i * size, i * size + size)
|
|
);
|
|
}
|
|
|
|
export function stripHtml(html: string) {
|
|
return cheerio.load(html).text();
|
|
}
|
|
|
|
export function pluralize(
|
|
value: number,
|
|
singular: string,
|
|
plural = singular + "s"
|
|
) {
|
|
return value === 1 ? `${value} ${singular}` : `${value} ${plural}`;
|
|
}
|
|
|
|
export function run<T>(fn: () => T): T {
|
|
return fn();
|
|
}
|
|
|
|
export async function silently<T extends Promise<any>>(p?: T) {
|
|
try {
|
|
return await p;
|
|
} catch {}
|
|
}
|
|
|
|
export function dedent(parts: TemplateStringsArray, ...values: unknown[]) {
|
|
return parts
|
|
.flatMap((part, i) =>
|
|
i < values.length ? [part, String(values[i])] : [part]
|
|
)
|
|
.join("")
|
|
.replace(/(\n)\s+/g, "$1");
|
|
}
|