UNPKG

homebridge-homeconnect

Version:

A Homebridge plugin that connects Home Connect appliances to Apple HomeKit

68 lines 2.69 kB
// Homebridge plugin for Home Connect home appliances // Copyright © 2023-2025 Alexander Thoukydides // Prefix for client and server log messages const PLUGIN_PREFIX = window.homebridge.plugin.displayName ?? window.homebridge.plugin.name; // A logger that sends messages to the debugging console export class ConsoleLogger { // Create a new console logger constructor(prefix = '') { this.prefix = prefix; } // Simple wrappers to log a message error(message, ...params) { this.log("error" /* LogLevel.ERROR */, message, ...params); } warn(message, ...params) { this.log("warn" /* LogLevel.WARN */, message, ...params); } success(message, ...params) { this.log("success" /* LogLevel.SUCCESS */, message, ...params); } info(message, ...params) { this.log("info" /* LogLevel.INFO */, message, ...params); } debug(message, ...params) { this.log("debug" /* LogLevel.DEBUG */, message, ...params); } // Log a message at the specified level log(level, message, ...params) { // Add the prefix to the message if (this.prefix.length) message = `[${this.prefix}] ${message}`; // Log the message switch (level) { case "error" /* LogLevel.ERROR */: console.error(message, ...params); break; case "warn" /* LogLevel.WARN */: console.warn(message, ...params); break; case "success" /* LogLevel.SUCCESS */: console.info(message, ...params); break; case "info" /* LogLevel.INFO */: console.info(message, ...params); break; case "debug" /* LogLevel.DEBUG */: console.debug(message, ...params); break; } } } // Logger for locally generated messages export class ClientLogger extends ConsoleLogger { // Create a new client logger constructor() { super(`${PLUGIN_PREFIX} client`); } } // Logger that receives messages events from the server export class ServerLogger extends ConsoleLogger { // Create a new server logger constructor(ipc, minLevel) { super(`${PLUGIN_PREFIX} server`); this.ipc = ipc; // Start receiving log events ipc.onEvent('log', messages => { this.logMessages(messages); }); try { ipc.request('/log', minLevel); } catch { /* empty */ } } // Log messages received from the server logMessages(messages) { for (const { level, message, params } of messages) this.log(level, message, ...params); } } //# sourceMappingURL=logger.js.map