@metamask/logger
Version:
A lightweight logging package using @metamask/streams
48 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeArrayTransport = exports.makeStreamTransport = exports.consoleTransport = void 0;
const stream_ts_1 = require("./stream.cjs");
/**
* The console transport for the logger.
*
* @param entry - The log entry to transport.
*/
const consoleTransport = (entry) => {
const args = [
...(entry.tags.length > 0 ? [entry.tags] : []),
...(entry.message ? [entry.message] : []),
...(entry.data ?? []),
];
// Ultimately, a console somewhere is an acceptable terminal for logging
// eslint-disable-next-line no-console
console[entry.level](...args);
};
exports.consoleTransport = consoleTransport;
/**
* The stream transport for the logger. Expects the stream is listening for
* log entries.
*
* @param stream - The stream to write the log entry to.
* @returns A transport function that writes to the stream.
*/
const makeStreamTransport = (stream) => {
return (entry) => {
stream
.write({
method: 'notify',
params: ['logger', (0, stream_ts_1.lser)(entry)],
jsonrpc: '2.0',
})
// This is a last resort, but it's better than nothing
// eslint-disable-next-line no-console
.catch(console.debug);
};
};
exports.makeStreamTransport = makeStreamTransport;
const makeArrayTransport = (target) => {
return (entry) => {
target.push(entry);
};
};
exports.makeArrayTransport = makeArrayTransport;
//# sourceMappingURL=transports.cjs.map