UNPKG

@scmmishra/business-hours

Version:
2 lines 2.24 kB
"use strict";var a=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var k=(n,t,e)=>t in n?a(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var T=(n,t)=>{for(var e in t)a(n,e,{get:t[e],enumerable:!0})},y=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of h(t))!f.call(n,i)&&i!==e&&a(n,i,{get:()=>t[i],enumerable:!(r=c(t,i))||r.enumerable});return n};var b=n=>y(a({},"__esModule",{value:!0}),n);var u=(n,t,e)=>(k(n,typeof t!="symbol"?t+"":t,e),e);var W={};T(W,{Scheduler:()=>l});module.exports=b(W);function g(n,t,e){let[r,i]=n.split(":").map(Number),[s,o]=t.split(":").map(Number),m=new Date(e);m.setHours(r,i,0,0);let D=new Date(e);return D.setHours(s,o,0,0),[m,D]}function p(n,t){return new Date(n.getTime()+t*1e3)}var l=class{constructor(t){u(this,"hours");u(this,"holidays");this.hours=t.hours,this.holidays=t.holidays}isWorkingDay(t){if(this.isHoliday(t))return!1;let e=this.getWorkingHours(t);return e!==null&&e.length>0}isWorkingTime(t){if(!this.isWorkingDay(t))return!1;let e=this.getWorkingHours(t);if(e)for(let{start:r,end:i}of e){let[s,o]=g(r,i,t);if(t>=s&&t<=o)return!0}return!1}isHoliday(t){let e=t.toDateString();return this.holidays.some(r=>r.toDateString()===e)}nextWorkingTime(t){let e=new Date(t);if(!this.isWorkingTime(e)){e=this.nextWorkingDay(e);let r=this.hours[e.getDay()];if(r){let[i,s]=r[0].start.split(":").map(Number);e.setHours(i,s,0,0)}}return e}nextWorkingDay(t){let e=new Date(t);for(e.setDate(e.getDate()+1);!this.isWorkingDay(e);)e.setDate(e.getDate()+1);return e}getRemainingWorkingTime(t){let e=this.getWorkingHours(t);if(e)for(let{start:r,end:i}of e){let[s,o]=g(r,i,t);if(t>=s&&t<o)return Math.floor((o.getTime()-t.getTime())/1e3)}return 0}getElapsedWorkingTime(t){let e=this.getWorkingHours(t);if(e)for(let{start:r,end:i}of e){let[s,o]=g(r,i,t);if(t>=s&&t<o)return Math.floor((t.getTime()-s.getTime())/1e3)}return 0}addTime(t,e){let r=new Date(t),i=e;for(;i>0;){let s=this.getRemainingWorkingTime(r);i<=s?(r=p(r,i),i=0):(i-=s,r=this.nextWorkingTime(r))}return r}getWorkingHours(t){let e=t.getDay();return this.hours[e]}};0&&(module.exports={Scheduler}); //# sourceMappingURL=index.js.map