node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 2.27 kB
JavaScript
;var y=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var P=(e,t)=>{for(var s in t)y(e,s,{get:t[s],enumerable:!0})},g=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of m(t))!f.call(e,i)&&i!==s&&y(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e};var v=e=>g(y({},"__esModule",{value:!0}),e);var N={};P(N,{default:()=>_,isActionNodeProperties:()=>T});module.exports=v(N);var u=require("../../common/services/IssueService"),c=require("../../common/services/IssueService/check"),n=require("../../common/services/IssueService/utils"),I=require("../../const"),d=require("../../globals");const h=[{idsProperty:"entityId",type:"stateId",issueMessage:"target_entity_not_found",issueProperty:"entity_id"},{idsProperty:"deviceId",type:"deviceId",issueMessage:"target_device_not_found",issueProperty:"device_id"},{idsProperty:"areaId",type:"areaId",issueMessage:"target_area_not_found",issueProperty:"area_id"},{idsProperty:"floorId",type:"floorId",issueMessage:"target_floor_not_found",issueProperty:"floor_id"},{idsProperty:"labelId",type:"labelId",issueMessage:"target_label_not_found",issueProperty:"label_id"}];function _(e){const t=[];if(e.action&&!(0,n.isDynamicValue)(e.action)){const r=(0,n.getHomeAssistant)(e)?.websocket.getServices(),[i,a]=e.action.toLocaleLowerCase().split(".").map(o=>o.trim());if(r?.[i]?.[a]){if(r[i]?.[a]?.fields?.entity_id!==void 0){let o={};try{if(o=JSON.parse(e.data||"{}"),e.entityId?.length&&!o.entity_id){const p=e.entityId.join(", ");t.push({type:u.IssueType.EntityId,message:d.RED._("home-assistant.service.issue.entity_id_target_data",{entity_id:p}),identity:p})}}catch{}}}else{const o=d.RED._("home-assistant.service.issue.invalid_action",{action:e.action});t.push({type:u.IssueType.InvalidAction,message:o,identity:e.action})}}for(const s of h){const r=(0,c.getInvalidIds)(s.type,e,e[s.idsProperty]);for(const i of r){if(i==="all"&&s.idsProperty==="entityId")continue;const a=d.RED._(`home-assistant.service.issue.${s.issueMessage}`,{[s.issueProperty]:i});t.push({type:s.type,message:a,identity:i})}}return t}function T(e){return e.type===I.NodeType.Action}0&&(module.exports={isActionNodeProperties});