UNPKG

@shopgate/pwa-common

Version:

Common library for the Shopgate Connect PWA.

28 lines 2.46 kB
/** * @refactor install moment.js */var durationRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;var durationModifiers={Year:function Year(date,unit){return date.setFullYear(date.getFullYear()+unit);},Month:function Month(date,unit){return date.setMonth(date.getMonth()+unit);},Week:function Week(date,unit){return date.setDate(date.getDate()+unit*7);},Day:function Day(date,unit){return date.setDate(date.getDate()+unit);},Hour:function Hour(date,unit){return date.setHours(date.getHours()+unit);},Minute:function Minute(date,unit){return date.setMinutes(date.getMinutes()+unit);},Second:function Second(date,unit){return date.setSeconds(date.getSeconds()+unit);}};/** * Returns true if date exclusively before (<=). * @param {Date} date date object. * @param {Date} beforeDate comparison date. * @return {boolean}. */export var isBefore=function isBefore(date,beforeDate){return!!(beforeDate&&date<beforeDate);};/** * Returns true if date exclusively after (>=). * @param {Date} date date object. * @param {Date} afterDate comparison date. * @return {boolean}. */export var isAfter=function isAfter(date,afterDate){return!!(afterDate&&date>afterDate);};/** * Returns true if date inclusively between (>= & <=). * @param {Date} date date object. * @param {Date} leftDate left bound. * @param {Date} rightDate right bound. * @return {boolean}. */export var isBetween=function isBetween(date,leftDate,rightDate){if(!rightDate){return false;}if(!leftDate&&rightDate){return isBefore(date,rightDate);}return date>=leftDate&&date<=rightDate;};/** * Parse duration * @param {string} duration ISO 8601 duration. * @return {Object} */export var parseDuration=function parseDuration(duration){var d=durationRegex.exec(duration)||[];var fr=d[1]==='-'?-1:1;return{Year:d[2]&&(d[2]>0?d[2]*fr:d[2]),Month:d[3]&&(d[3]>0?d[3]*fr:d[3]),Week:d[4]&&(d[4]>0?d[4]*fr:d[4]),Day:d[5]&&(d[5]>0?d[5]*fr:d[5]),Hour:d[6]&&(d[6]>0?d[6]*fr:d[6]),Minute:d[7]&&(d[7]>0?d[7]*fr:d[7]),Second:d[8]&&(d[8]>0?d[8]*fr:d[8])};};/** * Add duration to given date * @param {Date} date date object. * @param {string} duration ISO 8601 duration. * @return {void} */export var addDuration=function addDuration(date,duration){var parsed=parseDuration(duration);Object.keys(parsed).forEach(function(k){if(parsed[k]){durationModifiers[k](date,parsed[k]);}});};