export function defaults(original: Record, defaults: Record) { const final: Record = {}; for (const prop of Object.keys(defaults)) { final[prop] = defaults[prop]; } for (const prop of Object.keys(original)) { final[prop] = original[prop]; } return final; } export const isNil = (value: any): value is null | undefined => value === null || value === undefined; export const exists = (value: T | null | undefined): value is NonNullable => !isNil(value); export const isObject = (value: any): value is Record => typeof value === 'object' && !Array.isArray(value); export const log = (...args: any[]) => { const LOG_LEVEL = process.env.UNICORD_LOG_LEVEL?.toLocaleLowerCase(); if (LOG_LEVEL === 'debug') { const timestamp = `\x1b[37m[${new Date().toLocaleTimeString()}]\x1b[0m`; const prefix = `\x1b[35m[unicord]`; console.log(`${timestamp} ${prefix} \x1b[0m`, ...args); } };