UNPKG

node-red-contrib-home-assistant-websocket

Version:
78 lines (77 loc) 2.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNode = getNode; exports.getServerConfigNode = getServerConfigNode; exports.getConfigNodes = getConfigNodes; exports.getExposeAsConfigNode = getExposeAsConfigNode; exports.debugToClient = debugToClient; const Status_1 = require("../common/status/Status"); const const_1 = require("../const"); const globals_1 = require("../globals"); const homeAssistant_1 = require("../homeAssistant"); function getNode(nodeId) { if (!nodeId) return; return globals_1.RED.nodes.getNode(nodeId); } function getServerConfigNode(nodeId) { if (!nodeId) { throw new Error('Invalid server config'); } const node = globals_1.RED.nodes.getNode(nodeId); if (!node) { throw new Error('Invalid server config'); } checkValidServerConfig(node); return node; } function checkValidServerConfig(serverConfigNode) { if (serverConfigNode.config.addon) { return; } if (!(0, homeAssistant_1.hasCredentials)(serverConfigNode.credentials)) { throw new Error('Invalid server config'); } } function getConfigNodes(node) { const status = { shape: Status_1.StatusShape.Dot, fill: Status_1.StatusColor.Red, text: globals_1.RED._('home-assistant.status.error'), }; const entityConfigNode = getNode(node.config.entityConfig); if (!entityConfigNode) { node.status(status); throw new Error('Invalid entity config'); } const serverConfigNode = getServerConfigNode(entityConfigNode.config.server); if (!serverConfigNode) { node.status(status); throw new Error('Invalid server config'); } checkValidServerConfig(serverConfigNode); return { entityConfigNode, serverConfigNode, }; } function getExposeAsConfigNode(nodeId) { return getNode(nodeId); } function isConfigNode(node) { return (node.type === const_1.NodeType.DeviceConfig || node.type === const_1.NodeType.EntityConfig || node.type === const_1.NodeType.Server); } function debugToClient(node, message, topic) { if (!node.config.debugenabled && !node.config.debugEnabled) return; const debug = { id: node.id, msg: message, name: node.name, path: isConfigNode(node) ? node.id : `${node.z}/${node.id}`, topic, }; globals_1.RED.comms.publish(const_1.PRINT_TO_DEBUG_TOPIC, debug, false); }