UNPKG

node-red-contrib-home-assistant-websocket

Version:
2 lines (1 loc) 2.54 kB
"use strict";var f=Object.create;var s=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var w=(o,t)=>{for(var e in t)s(o,e,{get:t[e],enumerable:!0})},d=(o,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of E(t))!I.call(o,i)&&i!==e&&s(o,i,{get:()=>t[i],enumerable:!(n=y(t,i))||n.enumerable});return o};var u=(o,t,e)=>(e=o!=null?f(C(o)):{},d(t||!o||!o.__esModule?s(e,"default",{value:o,enumerable:!0}):e,o)),_=o=>d(s({},"__esModule",{value:!0}),o);var v={};w(v,{default:()=>g});module.exports=_(v);var h=u(require("../../common/controllers/InputOutputController")),a=u(require("../../common/errors/InputError")),m=u(require("../../common/errors/NoConnectionError")),c=require("../../common/integration/Integration"),p=require("../../const");class g extends h.default{#t;constructor(t){super(t),this.#t=this.integration?.getEntityConfigNode()}async#e({done:t,message:e,send:n}){const i=this.#t?.state?.getLastPayload()?.state;this.status.setSuccess(["__value__",{value:i}]),await this.setCustomOutputs(this.node.config.outputProperties,e,{config:this.node.config,value:i}),n(e),t()}async#o({done:t,message:e,parsedMessage:n,send:i}){if(!this.integration?.isConnected)throw new m.default;if(!this.integration?.isIntegrationLoaded)throw new a.default("home-assistant.error.integration_not_loaded","home-assistant.status.error");let r=await this.typedInputService.getValue(n.value.value,n.valueType.value,{message:e});if(this.#i(r)===!1)throw new a.default("ha-time-entity.error.invalid_format","home-assistant.status.error");r=this.#n(r);const l=this.#t?.state?.getLastPayload()?.state;await this.integration?.updateValue(r),this.#t?.emit(c.IntegrationEvent.ValueChange,r,l),await this.setCustomOutputs(this.node.config.outputProperties,e,{config:this.node.config,value:r,previousValue:l}),this.status.setSuccess(["__value__",{value:r}]),i(e),t()}async onInput({done:t,message:e,parsedMessage:n,send:i}){if(this.node.config.mode===p.ValueIntegrationMode.Get)this.#e({done:t,message:e,parsedMessage:n,send:i});else if(this.node.config.mode===p.ValueIntegrationMode.Set)await this.#o({done:t,message:e,parsedMessage:n,send:i});else throw new a.default("ha-text.error.mode_not_supported","home-assistant.status.error")}#i(t){const e=/^([0-1]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$/;return new RegExp(e).test(t)}#n(t){const[e,n,i]=t.split(":");return`${e.padStart(2,"0")}:${n.padStart(2,"0")}:${i?.padStart(2,"0")??"00"}`}}