44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { DEV } from 'esm-env';
|
|
|
|
const use_logger = Object.freeze({
|
|
info: console.info,
|
|
error: console.error,
|
|
warn: console.warn,
|
|
});
|
|
|
|
const base_styles = `padding: 4px 8px; border-radius:4px;`;
|
|
const logger_styles = {
|
|
error: `color: #FFFFFF; background-color: #FF0055; ${base_styles}`,
|
|
warn: `color: #662200; background-color: #FFBB33; ${base_styles}`,
|
|
info: `color: #80EAFF; background-color: #132686; ${base_styles}`,
|
|
} satisfies { [K in keyof typeof use_logger]: string };
|
|
|
|
function log(type: keyof typeof use_logger, ...content: unknown[]) {
|
|
// If type is info and not in dev mode, return early
|
|
if (type === 'info' && !DEV) return;
|
|
|
|
const logger = use_logger[type];
|
|
const styles = logger_styles[type];
|
|
|
|
// Log message
|
|
logger('%c🔊 svelte-podcast:', styles, ...content);
|
|
}
|
|
|
|
export const announce = {
|
|
/**
|
|
* Log an info message.
|
|
* @param {...unknown} content - Content to log.
|
|
*/
|
|
info: (...content: unknown[]) => log('info', ...content),
|
|
/**
|
|
* Log a warning message.
|
|
* @param {...unknown} content - Content to log.
|
|
*/
|
|
warn: (...content: unknown[]) => log('warn', ...content),
|
|
/**
|
|
* Log an error message.
|
|
* @param {...unknown} content - Content to log.
|
|
*/
|
|
error: (...content: unknown[]) => log('error', ...content),
|
|
} as const;
|