UNPKG

node-red-contrib-home-assistant-websocket

Version:
2 lines (1 loc) 3.96 kB
"use strict";var F=Object.create;var p=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var Q=Object.getPrototypeOf,U=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var n in e)p(t,n,{get:e[n],enumerable:!0})},C=(t,e,n,g)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of K(e))!U.call(t,i)&&i!==n&&p(t,i,{get:()=>e[i],enumerable:!(g=G(e,i))||g.enumerable});return t};var r=(t,e,n)=>(n=t!=null?F(Q(t)):{},C(e||!t||!t.__esModule?p(n,"default",{value:t,enumerable:!0}):n,t)),W=t=>C(p({},"__esModule",{value:!0}),t);var Z={};V(Z,{default:()=>k});module.exports=W(Z);var s=r(require("joi")),c=require("../../common/const"),v=require("../../common/controllers/helpers"),y=r(require("../../common/errors/ConfigError")),b=require("../../common/errors/inputErrorHandler"),w=r(require("../../common/events/ClientEvents")),x=r(require("../../common/events/Events")),T=r(require("../../common/services/ComparatorService")),N=r(require("../../common/services/InputService")),A=r(require("../../common/State")),I=r(require("../../common/status/EventStatus")),d=require("../../common/status/Status"),R=r(require("../../common/TransformState")),_=require("../../globals"),j=require("../../helpers/migrate"),m=require("../../helpers/node"),B=require("../../homeAssistant"),L=require("../../homeAssistant/Websocket"),u=require("./const"),P=require("./helpers"),D=r(require("./TriggerStateController")),O=r(require("./TriggerStateStatus"));const X=s.default.object({payload:s.default.object({entity_id:s.default.string().required(),old_state:s.default.object({state:s.default.string().required()}).unknown(!0),new_state:s.default.object({state:s.default.string().required()}).unknown(!0)})}).unknown(!0),Y=s.default.object({payload:s.default.string().valid(u.ENABLE,u.DISABLE)}).unknown(!0);function k(t){if(_.RED.nodes.createNode(this,t),this.config=(0,j.migrate)(t),!this.config?.entities[c.IdSelectorType.Entity]?.length&&!this.config?.entities[c.IdSelectorType.Substring]?.length&&!this.config?.entities[c.IdSelectorType.Regex]?.length){const a=new y.default("trigger-state.error.entity_required");throw this.status({fill:d.StatusColor.Red,shape:d.StatusShape.Ring,text:a.statusMessage}),a}const e=(0,m.getServerConfigNode)(this.config.server),n=(0,B.getHomeAssistant)(e),g=(0,m.getExposeAsConfigNode)(this.config.exposeAsEntityConfig),i=new w.default({node:this,emitter:n.eventBus});let f,l;if(g)f=new I.default({clientEvents:i,config:e.config,exposeAsEntityConfigNode:g,node:this});else{const a=new x.default({node:this,emitter:this});l=new A.default(this),f=new O.default({clientEvents:i,config:e.config,events:a,exposeAsEntityConfigNode:g,node:this,state:l})}i.setStatus(f),g?.integration.setStatus(f);const h=(0,v.createControllerDependencies)(this,n),E=new R.default(e.config.ha_boolean),q=new T.default({nodeRedContextService:h.nodeRedContextService,homeAssistant:n,jsonataService:h.jsonataService,transformState:E}),H=new N.default({nodeConfig:this.config}),o=new D.default({comparatorService:q,inputService:H,node:this,state:l,status:f,transformState:E,...h});if(o.setExposeAsConfigNode(g),this.config.enableInput&&(o.addOptionalInput("enable",Y,o.onInputEnabled.bind(o)),o.addOptionalInput("testing",X,o.onInputTesting.bind(o))),this.config.entities[c.IdSelectorType.Substring].length===0&&this.config.entities[c.IdSelectorType.Regex].length===0)for(const a of this.config.entities[c.IdSelectorType.Entity]){const S=`ha_events:state_changed:${a}`;i.addListener(S,o.onEntityStateChanged.bind(o))}else i.addListener("ha_events:state_changed",o.onEntityStateChanged.bind(o));if(o.isEnabled&&this.config.outputInitially){const a=async()=>{const S=(0,P.createStateChangeEvents)(n);for(const M of S)await o.onEntityStateChanged(M).catch(J=>{const{error:$,statusMessage:z}=(0,b.getErrorData)(J);f.setError(z),this.error($)})};n.isHomeAssistantRunning?a():i.addListener(L.ClientEvent.InitialConnectionReady,a)}}