@metamask/logger
Version:
A lightweight logging package using @metamask/streams
52 lines • 1.85 kB
JavaScript
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