node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 2.41 kB
JavaScript
;var H=Object.create;var p=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var L=(e,t)=>{for(var o in t)p(e,o,{get:t[o],enumerable:!0})},m=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of _(t))!O.call(e,i)&&i!==o&&p(e,i,{get:()=>t[i],enumerable:!(s=I(t,i))||s.enumerable});return e};var r=(e,t,o)=>(o=e!=null?H(k(e)):{},m(t||!e||!e.__esModule?p(o,"default",{value:e,enumerable:!0}):o,e)),R=e=>m(p({},"__esModule",{value:!0}),e);var j={};L(j,{default:()=>b});module.exports=R(j);var v=require("../../common/controllers/helpers"),l=r(require("../../common/errors/ConfigError")),h=r(require("../../common/events/ClientEvents")),D=r(require("../../common/events/Events")),u=require("../../common/integration/Integration"),C=r(require("../../common/services/InputService")),N=r(require("../../common/State")),y=r(require("../../common/status/EventStatus")),E=r(require("../../common/status/Status")),w=require("../../globals"),T=require("../../helpers/migrate"),d=require("../../helpers/node"),x=require("../../homeAssistant"),g=require("./const"),A=r(require("./DeviceActionController")),S=r(require("./DeviceIntegration")),P=r(require("./DeviceTriggerController"));function b(e){w.RED.nodes.createNode(this,e),this.config=(0,T.migrate)(e);const t=(0,d.getServerConfigNode)(this.config.server),o=(0,x.getHomeAssistant)(t),s=(0,v.createControllerDependencies)(this,o);let i,n;switch(this.config.deviceType){case g.DeviceType.Action:{n=new E.default({config:t.config,node:this});const c=new C.default({nodeConfig:this.config});i=new A.default({inputService:c,node:this,status:n,...s});break}case g.DeviceType.Trigger:{const c=new h.default({node:this,emitter:o.eventBus}),f=(0,d.getExposeAsConfigNode)(this.config.exposeAsEntityConfig);n=new y.default({clientEvents:c,config:t.config,exposeAsEntityConfigNode:f,node:this});const B=new D.default({node:this,emitter:this}),a=new S.default({node:this,clientEvents:c,homeAssistant:o,state:new N.default(this)});i=new P.default({node:this,status:n,...s}),B.addListener(u.IntegrationEvent.Trigger,i.onTrigger.bind(i)),c.setStatus(n),f?.integration.setStatus(n),a.setStatus(n),i.setExposeAsConfigNode(f),a.init();break}default:throw new l.default(["ha-deivce.error.invalid_device_type",{device_type:this.config.deviceType}])}}