node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 3.04 kB
JavaScript
;var O=Object.create;var m=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var q=(e,t)=>{for(var o in t)m(e,o,{get:t[o],enumerable:!0})},N=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of j(t))!D.call(e,n)&&n!==o&&m(e,n,{get:()=>t[n],enumerable:!(r=_(t,n))||r.enumerable});return e};var s=(e,t,o)=>(o=e!=null?O(B(e)):{},N(t||!e||!e.__esModule?m(o,"default",{value:e,enumerable:!0}):o,e)),H=e=>N(m({},"__esModule",{value:!0}),e);var J={};q(J,{default:()=>R,inputSchema:()=>A,inputs:()=>b});module.exports=H(J);var p=s(require("joi")),d=require("../../common/controllers/helpers"),S=s(require("../../common/events/ClientEvents")),v=s(require("../../common/events/Events")),y=require("../../common/integration/Integration"),C=s(require("../../common/services/InputService")),f=s(require("../../common/State")),T=s(require("../../common/status/Status")),E=require("../../const"),w=require("../../globals"),P=require("../../helpers/migrate"),g=require("../../helpers/node"),x=require("../../homeAssistant/index"),c=require("./const"),h=s(require("./SentenceInputController")),u=s(require("./SentenceIntegration")),I=s(require("./SentenceOutputController"));const b={response:{messageProp:"payload.response",configProp:"response",default:"payload"},responseType:{messageProp:"payload.responseType",configProp:"responseType",default:"msg"},responseId:{messageProp:"_sentence_response_id"}},A=p.default.object({response:p.default.string().required(),responseType:p.default.string().valid(...Object.values(c.SentenceResponseType),...Object.values(E.TypedInputTypes)).required(),responseId:p.default.number().required().messages({"any.required":"_sentence_response_id was not found in the message object"})});function R(e){w.RED.nodes.createNode(this,e),this.config=(0,P.migrate)(e);const t=(0,g.getServerConfigNode)(this.config.server),o=(0,x.getHomeAssistant)(t);switch(this.config.mode){case c.SentenceMode.Trigger:M(this,o,t);break;case c.SentenceMode.Response:k(this,o,t);break;default:throw new Error("Invalid mode")}}function M(e,t,o){const r=(0,g.getExposeAsConfigNode)(e.config.exposeAsEntityConfig),n=(0,d.createExposeAsControllerDependences)({exposeAsConfigNode:r,homeAssistant:t,node:e,serverConfigNode:o}),a=new u.default({node:e,clientEvents:n.clientEvents,homeAssistant:t,state:new f.default(e)});a.setStatus(n.status);const i=new I.default({node:e,...n});i.setExposeAsConfigNode(r),new v.default({node:e,emitter:e}).addListener(y.IntegrationEvent.Trigger,i.onReceivedMessage.bind(i)),a.init()}function k(e,t,o){const r=new T.default({config:o.config,node:e}),n=(0,d.createControllerDependencies)(e,t),a=new C.default({inputs:b,nodeConfig:e.config,schema:A}),i=new S.default({node:e,emitter:t.eventBus}),l=new u.default({node:e,clientEvents:i,homeAssistant:t,state:new f.default(e)});new h.default({inputService:a,node:e,status:r,integration:l,...n})}0&&(module.exports={inputSchema,inputs});