node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 1.92 kB
JavaScript
;var p=Object.create;var o=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var v=(n,e)=>{for(var s in e)o(n,s,{get:e[s],enumerable:!0})},u=(n,e,s,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of h(e))!M.call(n,r)&&r!==s&&o(n,r,{get:()=>e[r],enumerable:!(t=m(e,r))||t.enumerable});return n};var y=(n,e,s)=>(s=n!=null?p(P(n)):{},u(e||!n||!n.__esModule?o(s,"default",{value:n,enumerable:!0}):s,n)),b=n=>u(o({},"__esModule",{value:!0}),n);var O={};v(O,{DataSource:()=>c,default:()=>i});module.exports=b(O);var d=y(require("selectn")),c=(a=>(a.Config="config",a.Default="default",a.Message="message",a.Missing="missing",a.Transformed="transformed",a))(c||{});class i{#a;#t;#r;#e=!0;#s=[];constructor({inputs:e,nodeConfig:s,schema:t,transform:r}){this.#a=e??{},this.#t=s,this.#r=t,this.#s=r?[r]:void 0}parse(e){const s={};for(const[t,r]of Object.entries(this.#a)){let a={key:t,value:void 0,source:"missing"};if(this.#e){const f=(Array.isArray(r.messageProp)?r.messageProp:[r.messageProp]).reduce((l,g)=>l??(0,d.default)(g,e),void 0);a={key:t,value:f,source:"message"}}a.value===void 0&&r.configProp&&(a.value=(0,d.default)(r.configProp,this.#t),a.source="config"),a.value===void 0&&r.default!==void 0&&(a.value=r.default,a.source="default"),a.value===void 0&&(a.source="missing"),s[t]=a}return this.#n(s)}#n(e){return this.#s?this.#s.reduce((s,t)=>t.call(this,s),e):e}validate(e){if(!this.#r)return!0;const s=this.#o(e);return i.validateSchema(this.#r,s)}#o(e){const s={};for(const[t,r]of Object.entries(e))s[t]=r.value;return s}static validateSchema(e,s){const{error:t}=e.validate(s);if(t)throw t;return!0}disableInputOverrides(){this.#e=!1}enableInputOverrides(){this.#e=!0}get isInputOverridesEnabled(){return this.#e}addTransform(e){this.#s?.push(e)}}0&&(module.exports={DataSource});