UNPKG

node-red-contrib-home-assistant-websocket

Version:
2 lines (1 loc) 2.51 kB
"use strict";var A=Object.create;var c=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var E=(i,e)=>{for(var t in e)c(i,t,{get:e[t],enumerable:!0})},d=(i,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of H(e))!C.call(i,o)&&o!==t&&c(i,o,{get:()=>e[o],enumerable:!(a=k(e,o))||a.enumerable});return i};var l=(i,e,t)=>(t=i!=null?A(_(i)):{},d(e||!i||!i.__esModule?c(t,"default",{value:i,enumerable:!0}):t,i)),G=i=>d(c({},"__esModule",{value:!0}),i);var P={};E(P,{default:()=>T});module.exports=G(P);var w=l(require("timestring")),S=l(require("../../common/controllers/InputOutputController")),v=l(require("../../common/controllers/SendSplitMixin")),m=l(require("../../common/errors/InputError")),g=l(require("../../common/errors/NoConnectionError")),y=require("../../common/services/InputService"),I=require("../../helpers/mustache"),s=require("./const");const O=(0,v.default)(S.default);class T extends O{async onInput({message:e,parsedMessage:t,send:a,done:o}){if(!this.homeAssistant.websocket.isConnected)throw new g.default;const{entityIdType:D,relativeTime:N}=t,f=t.flatten.value;let p=new Date(t.startDate.value),h=new Date(t.endDate.value),r;if(t.entityId.source===y.DataSource.Message?r=t.entityId.value:r=(0,I.renderTemplate)(t.entityId.value,e,this.node.context(),this.homeAssistant.websocket.getStates()),t.entityIdType.value===s.EntityFilterType.Regex){const u=Object.keys(this.homeAssistant.websocket.getStates()),x=new RegExp(r);if(r=u.filter(b=>x.test(b)).join(","),!r)throw new m.default("api-get-history.error.no_entity_ids_matched")}if(this.node.config.useRelativeTime||t.relativeTime.source===y.DataSource.Message)try{const u=(0,w.default)(N.value,"ms");p=new Date(Date.now()-u),h=new Date}catch{throw new m.default("api-get-history.error.invalid_relative_time")}this.status.setSending("api-get-history.status.requesting");let n=await this.homeAssistant.http.getHistory(isNaN(p.getTime())?"":p.toISOString(),r,isNaN(h.getTime())?"":h.toISOString(),f);switch(this.node.config.outputType){case s.OutputType.Split:if(n.length===0){this.status.setFailed("api-get-history.status.no_results"),o();return}D.value===s.EntityFilterType.Equals&&!f&&Array.isArray(n[0])&&(n=n[0]),this.sendSplit(e,n,a);break;case s.OutputType.Array:default:this.contextService.set(n,this.node.config.outputLocationType,this.node.config.outputLocation,e),a(e);break}this.status.setSuccess(),o()}}