UNPKG

@metamask/logger

Version:

A lightweight logging package using @metamask/streams

52 lines 1.85 kB
import { split } from "@metamask/streams"; import { isJsonRpcNotification } from "@metamask/utils"; import { TOKEN_UNDEFINED } from "./constants.mjs"; /** * Serializes a log entry. * * @param entry - The log entry to serialize. * @returns The serialized log entry. */ export const lser = (entry) => JSON.stringify(entry, (_key, value) => value === undefined ? TOKEN_UNDEFINED : value); harden(lser); /** * Deserializes a log entry. * * @param serializedEntry - The serialized log entry to deserialize. * @returns The deserialized log entry. */ export const lunser = (serializedEntry) => JSON.parse(serializedEntry, (_key, value) => value === TOKEN_UNDEFINED ? undefined : value); harden(lunser); /** * Checks if a message is a logger message. * * @param message - The message to check. * @returns Whether the message is a logger message. */ export const isLoggerMessage = (message) => isJsonRpcNotification(message) && Array.isArray(message.params) && message.params.length > 0 && message.params[0] === 'logger' && typeof message.params[1] === 'string'; harden(isLoggerMessage); /** * Checks if a message is a kernel message. A kernel message is any message * which is not a logger message. * * @param message - The message to check. * @returns Whether the message is a kernel message. */ export const isKernelMessage = (message) => !isLoggerMessage(message); harden(isKernelMessage); /** * Splits a stream into a kernel stream and a logger stream. * * @param stream - The stream to split. * @returns An object containing the kernel stream and the logger stream. */ export const splitLoggerStream = (stream) => { const [kernelStream, loggerStream] = split(stream, isKernelMessage, isLoggerMessage); return { kernelStream, loggerStream }; }; harden(splitLoggerStream); //# sourceMappingURL=stream.mjs.map