homebridge-homeconnect
Version:
A Homebridge plugin that connects Home Connect appliances to Apple HomeKit
68 lines • 2.69 kB
JavaScript
// 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