node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 2.07 kB
JavaScript
;var f=Object.create;var o=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},l=(t,e,n,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of g(e))!C.call(t,s)&&s!==n&&o(t,s,{get:()=>e[s],enumerable:!(c=E(e,s))||c.enumerable});return t};var r=(t,e,n)=>(n=t!=null?f(m(t)):{},l(e||!t||!t.__esModule?o(n,"default",{value:t,enumerable:!0}):n,t)),b=t=>l(o({},"__esModule",{value:!0}),t);var N={};A(N,{default:()=>v});module.exports=b(N);var d=require("lodash"),u=r(require("../../common/controllers/ExposeAsMixin")),p=r(require("../../common/controllers/OutputController")),h=r(require("../../common/errors/ConfigError")),a=require("../../homeAssistant/Websocket"),i=require(".");const H=(0,u.default)(p.default);class v extends H{#t;constructor(e){super(e);try{this.node.config.eventData&&(this.#t=JSON.parse(this.node.config.eventData))}catch{throw new h.default("server-events.error.invalid_json")}}#e(e,n){this.isEnabled!==!1&&(this.node.config.eventType===""||this.node.config.eventType===i.HA_CLIENT)&&(this.node.send({event_type:i.HA_CLIENT,topic:`${i.HA_CLIENT}:${e}`,payload:e,data:n}),(e===a.ClientEvent.StatesLoaded||e===a.ClientEvent.ServicesLoaded)&&this.status.setSuccess(e))}async onHaEventsAll(e){if(this.isEnabled===!1||!this.homeAssistant.isHomeAssistantRunning&&this.node.config.waitForRunning===!0||this.#t&&!(0,d.isMatch)(e.event,this.#t))return;const n={};await this.setCustomOutputs(this.node.config.outputProperties,n,{config:this.node.config,eventData:e}),this.status.setSuccess(e.event_type),this.node.send(n)}onHaEventsClose(){this.#e("disconnected")}onHaEventsOpen(){this.#e("connected")}onHaEventsConnecting(){this.#e("connecting")}onHaEventsRunning(){this.#e("running")}onHaEventsReady(){this.#e("ready")}onHaEventsError(e){e&&this.#e("error",e.message)}onClientStatesLoaded(){this.#e("states_loaded")}onClientServicesLoaded(){this.#e("services_loaded")}}