JSDoc (#43)
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import { DEV } from 'esm-env';
|
||||
|
||||
/**
|
||||
* Object containing logger functions.
|
||||
* @typedef {Object} Announce
|
||||
* @property {function} info - Log info like events and data.
|
||||
* @property {function} warn - Log warnings for developers.
|
||||
* @property {function} error - Log errors for critical failures.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Type of logger.
|
||||
* @typedef {('info' | 'error' | 'warn')} Logger
|
||||
*/
|
||||
|
||||
/**
|
||||
* Object containing Logger functions.
|
||||
*
|
||||
* @type {Readonly<{[K in Logger]: Function}>}
|
||||
*/
|
||||
const use_logger = Object.freeze({
|
||||
info: console.info,
|
||||
error: console.error,
|
||||
warn: console.warn,
|
||||
});
|
||||
|
||||
/**
|
||||
* Log function.
|
||||
* @param {Logger} type - Type of logger.
|
||||
* @param {...unknown} content - Content to log.
|
||||
*/
|
||||
function log(type, ...content) {
|
||||
const logger = use_logger[type];
|
||||
|
||||
// If type is info and not in dev mode, return early
|
||||
if (type === 'info' && !DEV) return;
|
||||
|
||||
// Log message
|
||||
logger(
|
||||
'%c🔊 svelte-podcast:',
|
||||
'color: #FF3E00; background-color: rgba(255, 62, 0, 0.15); padding: 4px 8px; border-radius:4px;',
|
||||
...content,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Object containing logger functions.
|
||||
* @type {Announce}
|
||||
* @exports announce
|
||||
*/
|
||||
export const announce = {
|
||||
/**
|
||||
* Log an info message.
|
||||
* @param {...unknown} content - Content to log.
|
||||
*/
|
||||
info: (...content) => log('info', ...content),
|
||||
/**
|
||||
* Log a warning message.
|
||||
* @param {...unknown} content - Content to log.
|
||||
*/
|
||||
warn: (...content) => log('warn', ...content),
|
||||
/**
|
||||
* Log an error message.
|
||||
* @param {...unknown} content - Content to log.
|
||||
*/
|
||||
error: (...content) => log('error', ...content),
|
||||
};
|
||||
Reference in New Issue
Block a user