node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 2.08 kB
JavaScript
;var N=Object.create;var d=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var R=(r,e)=>{for(var n in e)d(r,n,{get:e[n],enumerable:!0})},g=(r,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of b(e))!C.call(r,t)&&t!==n&&d(r,t,{get:()=>e[t],enumerable:!(i=u(e,t))||i.enumerable});return r};var j=(r,e,n)=>(n=r!=null?N(x(r)):{},g(e||!r||!r.__esModule?d(n,"default",{value:r,enumerable:!0}):n,r)),A=r=>g(d({},"__esModule",{value:!0}),r);var H={};R(H,{default:()=>_});module.exports=A(H);var m=j(require("selectn")),l=require("../TransformState"),v=require("./NodeRedContextService");class _{#t;#n;#s;#e;constructor({nodeRedContextService:e,homeAssistant:n,jsonataService:i,transformState:t}){this.#t=e,this.#n=n,this.#s=i,this.#e=t}async getComparatorResult(e,n,i,t,{message:f,entity:c,prevEntity:S}={}){let s;switch((0,v.isContextLocation)(t)?s=this.#t.get(t,n,f):["entity","prevEntity"].includes(t)?s=(0,m.default)(n,t==="entity"?c:S):e!=="jsonata"&&t==="jsonata"&&n?s=await this.#s.evaluate(n,{message:f,entity:c,prevEntity:S}):t==="habool"?s=this.#e.transform(l.TransformType.Home_Assistant_Boolean_Values,""):t==="bool"?s=n==="true":((e==="includes"||e==="does_not_include")&&(t="list"),s=this.#e.transform(t,n)),e){case"is":case"is_not":{let o;if(t==="re")o=s.test(i);else if(t==="num"){const h=Number(i);o=!Number.isNaN(h)&&h===s}else o=s===i;return e==="is"?o:!o}case"includes":case"does_not_include":{const o=s.includes(i);return e==="includes"?o:!o}case"cont":return s===""?!1:(i+"").indexOf(s)!==-1;case"greater_than":case">":case"gt":return i>s;case">=":case"gte":return i>=s;case"less_than":case"<":case"lt":return i<s;case"<=":case"lte":return i<=s;case"starts_with":return s===""?!1:i?.startsWith(s);case"in_group":{const o=this.#n?.websocket.getState(s);return((0,m.default)("attributes.entity_id",o)||[]).includes(i)}case"jsonata":return s?await this.#s.evaluate(s,{message:f,entity:c,prevEntity:S})===!0:!0;default:return!!i}}}