UNPKG

node-red-contrib-home-assistant-websocket

Version:
93 lines (92 loc) 4.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.inputSchema = exports.inputs = void 0; exports.default = numberNode; const joi_1 = __importDefault(require("joi")); const helpers_1 = require("../../common/controllers/helpers"); const Events_1 = __importDefault(require("../../common/events/Events")); const Integration_1 = require("../../common/integration/Integration"); const InputService_1 = __importDefault(require("../../common/services/InputService")); const Status_1 = __importDefault(require("../../common/status/Status")); const const_1 = require("../../const"); const globals_1 = require("../../globals"); const migrate_1 = require("../../helpers/migrate"); const node_1 = require("../../helpers/node"); const index_1 = require("../../homeAssistant/index"); const NumberController_1 = __importDefault(require("./NumberController")); const NumberOutputController_1 = __importDefault(require("./NumberOutputController")); exports.inputs = { value: { messageProp: 'payload.value', configProp: 'value', default: 'payload', }, valueType: { messageProp: 'payload.valueType', configProp: 'valueType', default: const_1.TypedInputTypes.Message, }, }; exports.inputSchema = joi_1.default.object({ value: joi_1.default.alternatives().try(joi_1.default.string(), joi_1.default.number()).required(), valueType: joi_1.default.string() .valid(const_1.TypedInputTypes.Message, const_1.TypedInputTypes.Flow, const_1.TypedInputTypes.Global, const_1.TypedInputTypes.JSONata, const_1.TypedInputTypes.Number) .required(), }); function numberNode(config) { globals_1.RED.nodes.createNode(this, config); this.config = (0, migrate_1.migrate)(config); const { entityConfigNode, serverConfigNode } = (0, node_1.getConfigNodes)(this); const homeAssistant = (0, index_1.getHomeAssistant)(serverConfigNode); switch (this.config.mode) { case const_1.ValueIntegrationMode.Get: case const_1.ValueIntegrationMode.Set: { const controllerDeps = (0, helpers_1.createControllerDependencies)(this, homeAssistant); const status = new Status_1.default({ config: serverConfigNode.config, node: this, }); const inputService = new InputService_1.default({ inputs: exports.inputs, nodeConfig: this.config, schema: exports.inputSchema, }); entityConfigNode.integration.setStatus(status); // eslint-disable-next-line no-new new NumberController_1.default({ inputService, integration: entityConfigNode.integration, node: this, status, ...controllerDeps, }); } break; case const_1.ValueIntegrationMode.Listen: { const exposeAsConfigNode = (0, node_1.getExposeAsConfigNode)(this.config.exposeAsEntityConfig); const controllerDeps = (0, helpers_1.createExposeAsControllerDependences)({ exposeAsConfigNode, homeAssistant, node: this, serverConfigNode, }); const controller = new NumberOutputController_1.default({ node: this, ...controllerDeps, }); controller.setExposeAsConfigNode(exposeAsConfigNode); const entityConfigEvents = new Events_1.default({ node: this, emitter: entityConfigNode, }); entityConfigEvents.setStatus(controllerDeps.status); entityConfigEvents.addListener(Integration_1.IntegrationEvent.ValueChange, controller.onValueChange.bind(controller)); } break; } }