UNPKG

@metamask/logger

Version:

A lightweight logging package using @metamask/streams

56 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeOptions = exports.unique = exports.parseOptions = exports.DEFAULT_OPTIONS = void 0; const transports_ts_1 = require("./transports.cjs"); /** * The default options for the logger. */ exports.DEFAULT_OPTIONS = { transports: [], level: 'info', tags: [], }; /** * Parses the options for the logger. * * @param options - The options for the logger. * @returns The parsed options. */ const parseOptions = (options) => { // The default case catches whatever is not explicitly handled below. // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (typeof options) { case 'object': return options; case 'string': return { tags: [options], transports: [transports_ts_1.consoleTransport] }; case 'undefined': return { transports: [transports_ts_1.consoleTransport] }; default: throw new Error('Invalid logger options'); } }; exports.parseOptions = parseOptions; /** * Returns a copy of an array containing only its unique values. * * @param array - The array to filter. * @returns The array, without duplicate values. */ const unique = (array) => { return array.filter((element, index, self) => self.indexOf(element) === index); }; exports.unique = unique; /** * Merges multiple logger options into a single options object. * * @param options - The options to merge. * @returns The merged options. */ const mergeOptions = (...options) => options.reduce((acc, option) => ({ transports: (0, exports.unique)([...acc.transports, ...(option.transports ?? [])]), level: option.level ?? acc.level, tags: (0, exports.unique)([...acc.tags, ...(option.tags ?? [])]), }), exports.DEFAULT_OPTIONS); exports.mergeOptions = mergeOptions; //# sourceMappingURL=options.cjs.map