node-red-contrib-ical-events
Version:
NodeRed calender event adapter
1 lines • 2.41 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var cron_1=require("cron"),helper_1=require("./helper"),NodeCache=require("node-cache");module.exports=function(e){function t(e,t,n,o,a,s,i,r){var c,l=new Date(e.eventStart),u=new Date(e.eventEnd);if(l<=t&&u>=t){var g=Object.assign(e,{topic:(null===(c=e.summary)||void 0===c?void 0:c.val)?e.summary.val:e.summary,on:!0,calendarName:e.calendarName||n.config.name});r.push(g),a=!0}return a}e.nodes.registerType("ical-sensor",function(n){e.nodes.createNode(this,n);var o=this;try{if(o.cache=new NodeCache,o.msg={},o.combineResponse=n.combineResponse,o.timezone=n.timezone,o.on("input",function(a,s,i){s=s||function(){o.send.apply(o,arguments)},o.config=(0,helper_1.getConfig)(e.nodes.getNode(n.confignode),e,n,a),function(n,o,a,s,i){n.job&&n.job.running?n.status({fill:"green",shape:"dot",text:"next check: ".concat(n.job.nextDate().toLocaleString())}):n.status({}),o||(o={});var r=new Date;(0,helper_1.getICal)(n,e,i).then(function(i){if(i){var c=!1,l=n.context().get("on"),u=[];for(var g in i)if(i.hasOwnProperty(g)){var d=i[g];if(d instanceof Array&&d.length>=1)for(var m=0,f=d;m<f.length;m++){var p=f[m];c=t(p,r,n,0,c,0,0,u)}else c=t(d,r,n,0,c,0,0,u)}if(c)if(n.config.combineResponse){var h=e.util.cloneMessage(o);delete h._msgid,a(l!==c?[Object.assign(h,{payload:u}),Object.assign(h,{payload:u})]:Object.assign(h,{payload:u}))}else{for(var b=[],v=0,y=u;v<y.length;v++){var j=y[v],h=e.util.cloneMessage(o);delete h._msgid,b.push(Object.assign(h,{payload:j}))}a(l!=c?[b,b]:[b])}else{var _={on:!1},h=e.util.cloneMessage(o);delete h._msgid,n.config.combineResponse&&(_=[_]),a(Object.assign(h,{payload:_})),l!=c&&a([null,Object.assign(h,{payload:_})])}n.context().set("on",c),s&&s()}}).catch(function(e){n.status({fill:"red",shape:"ring",text:e.message}),a({error:e}),s&&s(e)})}(o,a,s,i,n)}),n.timeout&&""!==n.timeout&&n.timeoutUnits&&""!==n.timeoutUnits){var a="0 0 * * * *";switch(n.timeoutUnits){case"seconds":a="*/".concat(n.timeout," * * * * *");break;case"minutes":a="0 */".concat(n.timeout," * * * *");break;case"hours":a="0 0 */".concat(n.timeout," * * *");break;case"days":a="0 0 0 */".concat(n.timeout," * *")}o.job=new cron_1.CronJob(a,function(){o.emit("input",{})}),o.job.start(),o.on("close",function(){o.job.stop()})}o.emit("input",{})}catch(e){o.error("Error: "+e.message),o.status({fill:"red",shape:"ring",text:e.message})}})};
;