UNPKG

node-red-contrib-home-assistant-websocket

Version:
2 lines (1 loc) 3.25 kB
"use strict";var y=Object.create;var h=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var H=(s,e)=>{for(var i in e)h(s,i,{get:e[i],enumerable:!0})},m=(s,e,i,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of _(e))!D.call(s,a)&&a!==i&&h(s,a,{get:()=>e[a],enumerable:!(t=b(e,a))||t.enumerable});return s};var A=(s,e,i)=>(i=s!=null?y(k(s)):{},m(e||!s||!s.__esModule?h(i,"default",{value:s,enumerable:!0}):i,s)),S=s=>m(h({},"__esModule",{value:!0}),s);var N={};H(N,{default:()=>p});module.exports=S(N);var g=require("lodash"),v=require("../../globals"),w=require("../../helpers/utils"),u=A(require("../errors/JSONataError"));function l(s,e){return new Promise((i,t)=>{v.RED.util.evaluateJSONataExpression(s,e,(a,r)=>{a?t(a):i(r)})})}function E(s){return typeof s!="object"||!s?!1:"code"in s&&"message"in s&&"stack"in s&&"token"in s}class p{#e;#t;constructor({homeAssistant:e,node:i}){this.#e=e,this.#t=i}async evaluate(e,i={}){let t;try{t=v.RED.util.prepareJSONataExpression(e,this.#t)}catch(n){throw E(n)?new u.default(n):n}const{entity:a,message:r,prevEntity:c}=i;t.assign("areas",this.areas.bind(this)),t.assign("areaDevices",this.areaDevices.bind(this)),t.assign("areaEntities",this.areaEntities.bind(this)),t.assign("deviceEntities",this.deviceEntities.bind(this)),t.assign("device",this.device.bind(this)),t.assign("entity",()=>a),t.assign("entities",n=>n?this.#e?.websocket?.getState(n):this.#e?.websocket?.getStates()),t.assign("outputData",n=>n?i[n]:Object.keys(i).reduce((d,f)=>(f!=="message"&&i[f]!==void 0&&(d[f]=i[f]),d),{})),t.assign("prevEntity",()=>c),t.assign("randomNumber",g.random),t.assign("sampleSize",g.sampleSize);try{return await l(t,r)}catch(n){throw E(n)?new u.default(n):n}}areaDevices(e){const i=this.#e?.websocket?.getArea(e),t=[];if(i){const a=this.#e?.websocket?.getDevices();a&&a.forEach(r=>{r.area_id===e&&t.push(r)})}return t}areaEntities(e){const i=this.#e?.websocket?.getArea(e),t=[];if(i){const a=this.#e?.websocket?.getDevices();this.#e?.websocket?.getEntities().forEach(r=>{const c=this.#e?.websocket?.getState(r.entity_id);c&&(r.area_id===e||a?.find(o=>o.id===r.device_id)?.area_id===e)&&t.push(c)})}return t}areas(e){if(typeof e!="string")return this.#e?.websocket?.getAreas();const i=this.#e?.websocket?.getAreas(),t=i?.find(c=>c.area_id===e);if(t)return t;if((0,w.validEntityId)(e)){const c=this.#e?.websocket?.getEntity(e);if(c){if(c.area_id){const n=i?.find(o=>o.area_id===c.area_id);if(n)return n}if(c.device_id){const n=this.#e?.websocket?.getDevice(c.device_id);if(n&&n.area_id){const o=i?.find(d=>d.area_id===n.area_id);if(o)return o}}}}const r=this.#e?.websocket?.getDevices()?.find(c=>c.id===e);if(r&&r.area_id){const c=i?.find(n=>n.area_id===r.area_id);if(c)return c}}device(e){const i=this.#e?.websocket?.getEntity(e),t=this.#e?.websocket?.getDevices();if(i&&t)return t.find(r=>r.id===i.device_id);const a=t?.find(r=>r.name_by_user===e||r.name===e);if(a)return a}deviceEntities(e){const i=this.#e?.websocket?.getDevice(e),t=[];return i&&this.#e?.websocket?.getEntities().forEach(a=>{if(a.device_id===e){const r=this.#e?.websocket?.getState(a.entity_id);r&&t.push(r)}}),t}}