mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-03 09:20:08 +00:00
40 lines
991 B
TypeScript
40 lines
991 B
TypeScript
import { eventHandlers } from "../bot.ts";
|
|
|
|
export function loopObject<T = Record<string, unknown>>(
|
|
obj: Record<string, unknown>,
|
|
handler: (value: unknown, key: string) => unknown,
|
|
log: string,
|
|
) {
|
|
let res: Record<string, unknown> | unknown[] = {};
|
|
|
|
if (Array.isArray(obj)) {
|
|
res = [];
|
|
|
|
for (const o of obj) {
|
|
if (
|
|
typeof o === "object" && !Array.isArray(o) && o !== null
|
|
) {
|
|
// A nested object
|
|
res.push(loopObject(o as Record<string, unknown>, handler, log));
|
|
} else {
|
|
res.push(handler(o, "array"));
|
|
}
|
|
}
|
|
} else {
|
|
for (const [key, value] of Object.entries(obj)) {
|
|
eventHandlers.debug?.("loop", log);
|
|
|
|
if (
|
|
typeof value === "object" && !Array.isArray(value) && value !== null
|
|
) {
|
|
// A nested object
|
|
res[key] = loopObject(value as Record<string, unknown>, handler, log);
|
|
} else {
|
|
res[key] = handler(value, key);
|
|
}
|
|
}
|
|
}
|
|
|
|
return res as T;
|
|
}
|