Socket
Socket
Sign inDemoInstall

aio-date

Package Overview
Dependencies
0
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.0.3 to 4.1.0

549

index.js

@@ -1,137 +0,6 @@

export default function AIODate() {
let $$ = {
isMatch(obj) {
if (!obj || !Array.isArray(obj.matchers) || obj.date === undefined) {
console.error(`AIODate().isMatch should get an object as parameter. {*date:number | string | array,*matchers:array}`, obj)
return false
}
let { date, matchers } = obj;
if (!date) { return false }
if (matchers === true) { return true }
if (matchers === false) { return false }
date = $$.convertToArray({ date })
let { isLess, isGreater, isEqual } = $$;
for (let i = 0; i < matchers.length; i++) {
let matcher = matchers[i], type, targets;
try {
let a = matcher.split(',');
type = a[0];
targets = a.slice(1, a.length);
}
catch { return false }
if (type === '<') { for (let i = 0; i < targets.length; i++) { if (isLess(date, targets[i])) { return true } } }
else if (type === '>') { for (let i = 0; i < targets.length; i++) { if (isGreater(date, targets[i])) { return true } } }
else if (type === '<=') { for (let i = 0; i < targets.length; i++) { if (isEqual(date, targets[i])) { return true } if (isLess(date, targets[i])) { return true } } }
else if (type === '>=') { for (let i = 0; i < targets.length; i++) { if (isEqual(date, targets[i])) { return true } if (isGreater(date, targets[i])) { return true } } }
else if (type === '=') { for (let i = 0; i < targets.length; i++) { if (isEqual(date, targets[i])) { return true } } }
else if (type === '!=') { for (let i = 0; i < targets.length; i++) { if (!isEqual(date, targets[i])) { return true } } }
else if (type === '<>') {
if (targets[0] && targets[1]) {
let start, end;
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; }
else { start = targets[1]; end = targets[0]; }
if (isGreater(date, start) && isLess(date, end)) { return true }
}
}
else if (type === '<=>') {
if (targets[0] && targets[1]) {
let start, end;
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; }
else { start = targets[1]; end = targets[0]; }
if (isGreater(date, start) && isLess(date, end)) { return true }
if (isEqual(date, start) || isEqual(date, end)) { return true }
}
}
else if (type === '!<>') {
if (targets[0] && targets[1]) {
let start, end;
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; }
else { start = targets[1]; end = targets[0]; }
if (!isGreater(date, start) || !isLess(date, end)) { return true }
}
}
else if (type === '!<=>') {
if (targets[0] && targets[1]) {
let start, end;
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; }
else { start = targets[1]; end = targets[0]; }
if (!isEqual(date, start) && !isEqual(date, end) && (isLess(date, start) || isGreater(date, end))) { return true }
}
}
else if (type === 'w') {
let w = $$.getWeekDay({ date }).index;
for (let i = 0; i < targets.length; i++) { if (w === +targets[i]) { return true } }
}
else if (type === '!w') {
let w = $$.getWeekDay({ date }).index;
for (let i = 0; i < targets.length; i++) { if (w !== +targets[i]) { return true } }
}
}
return false
},
getSplitter(value) {
let splitter = '/';
for (let i = 0; i < value.length; i++) {
if (isNaN(parseInt(value[i]))) { return value[i] }
}
return splitter;
},
convertToArray(obj) {
if (!obj || obj.date === undefined) {
console.error(`
export default function e(){let e={isMatch(t){if(!t||!Array.isArray(t.matchers)||void 0===t.date)return console.error("AIODate().isMatch should get an object as parameter. {*date:number | string | array,*matchers:array}",t),!1;let{date:r,matchers:a}=t;if(!r)return!1;if(!0===a)return!0;if(!1===a)return!1;r=e.convertToArray({date:r});let{isLess:n,isGreater:o,isEqual:i}=e;for(let g=0;g<a.length;g++){let l=a[g],s,$;try{let _=l.split(",");s=_[0],$=_.slice(1,_.length)}catch{break}if("<"===s){for(let d=0;d<$.length;d++)if(n(r,$[d]))return!0}else if(">"===s){for(let u=0;u<$.length;u++)if(o(r,$[u]))return!0}else if("<="===s){for(let y=0;y<$.length;y++)if(i(r,$[y])||n(r,$[y]))return!0}else if(">="===s){for(let f=0;f<$.length;f++)if(i(r,$[f])||o(r,$[f]))return!0}else if("="===s){for(let D=0;D<$.length;D++)if(i(r,$[D]))return!0}else if("!="===s){for(let h=0;h<$.length;h++)if(!i(r,$[h]))return!0}else if("<>"===s){if($[0]&&$[1]){let p,c;if(n($[0],$[1])?(p=$[0],c=$[1]):(p=$[1],c=$[0]),o(r,p)&&n(r,c))return!0}}else if("<=>"===s){if($[0]&&$[1]){let m,T;if(n($[0],$[1])?(m=$[0],T=$[1]):(m=$[1],T=$[0]),o(r,m)&&n(r,T)||i(r,m)||i(r,T))return!0}}else if("!<>"===s){if($[0]&&$[1]){let A,M;if(n($[0],$[1])?(A=$[0],M=$[1]):(A=$[1],M=$[0]),!o(r,A)||!n(r,M))return!0}}else if("!<=>"===s){if($[0]&&$[1]){let b,v;if(n($[0],$[1])?(b=$[0],v=$[1]):(b=$[1],v=$[0]),!i(r,b)&&!i(r,v)&&(n(r,b)||o(r,v)))return!0}}else if("w"===s){let O=e.getWeekDay({date:r}).index;for(let j=0;j<$.length;j++)if(O===+$[j])return!0}else if("!w"===s){let x=e.getWeekDay({date:r}).index;for(let L=0;L<$.length;L++)if(x!==+$[L])return!0}}return!1},getSplitter(e){for(let t=0;t<e.length;t++)if(isNaN(parseInt(e[t])))return e[t];return"/"},convertToArray(t){if(!t||void 0===t.date)return console.error(`
AIODate().convertToArray should get an object as parameter.
{
*date:number | string | array
}`, obj)
return false
}
let { date } = obj;
if (!date) { return [] }
if (Array.isArray(date)) { return [...date] }
else if (typeof date === 'string') {
let list;
if (date.indexOf("T") !== -1) {
//"2015-03-25T12:00:00Z"
let [d, t] = date.split("T");
t = t.split(".")[0];
t = t.split(':');
d = d.split('-');
list = d.concat(t, 0)
}
else {
list = date.split($$.getSplitter(date));
}
return list.map((date) => parseInt(date))
}
else if (typeof date === 'number') {
let d = new Date(date);
let year = d.getFullYear();
let month = d.getMonth() + 1;
let day = d.getDate();
let hour = d.getHours();
let minute = d.getMinutes();
let second = d.getSeconds();
let miliseconds = d.getMilliseconds();
let tenthsecond = Math.round(miliseconds / 100);
return [year, month, day, hour, minute, second, tenthsecond]
}
else if (typeof date === 'object') {
if(typeof date.year === 'number'){return [date.year,date.month,date.day,date.hour]}
else {
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
let miliseconds = date.getMilliseconds();
let tenthsecond = Math.round(miliseconds / 100);
return [year, month, day, hour, minute, second, tenthsecond]
}
}
else { return false }
},
toJalali(obj) {
if (!obj || obj.date === undefined) {
console.error(`
}`,t),!1;let{date:r,jalali:a}=t;if(!r)return!1;let n;if(Array.isArray(r))n=[...r];else if("string"==typeof r){if(-1!==r.indexOf("T")){let[o,i]=r.split("T");i=(i=i.split(".")[0]).split(":"),n=(o=o.split("-")).concat(i,0)}else n=r.split(e.getSplitter(r));n=n.map(e=>parseInt(e))}else if("number"==typeof r){let g=new Date(r),l=g.getFullYear(),s=g.getMonth()+1,$=g.getDate(),_=g.getHours(),d=g.getMinutes(),u=g.getSeconds(),y;n=[l,s,$,_,d,u,Math.round(g.getMilliseconds()/100)]}else{if("object"!=typeof r)return!1;if("number"==typeof r.year)return[r.year,r.month,r.day,r.hour];{let f=r.getFullYear(),D=r.getMonth()+1,h=r.getDate(),p=r.getHours(),c=r.getMinutes(),m=r.getSeconds(),T;n=[f,D,h,p,c,m,Math.round(r.getMilliseconds()/100)]}}if(a){let[A,M,b]=e.toJalali({date:[n[0],n[1],n[2]]});n[0]=A,n[1]=M,n[2]=b}return n},toJalali(t){var r,a,n,o,i,g;if(!t||void 0===t.date)return console.error(`
AIODate().toJalali should get an object as parameter.

@@ -141,24 +10,3 @@ {

pattern:string (example: {year}/{month}/{day})
}`, obj)
return false
}
if (!obj.date) { return }
let arr = $$.convertToArray({ date: obj.date });
let calendarType = $$.getCalendarType(arr);
if (calendarType === 'jalali') { return arr }
let [gy, gm, gd] = arr;
var g_d_m, jy, jm, jd, gy2, days;
g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
gy2 = (gm > 2) ? (gy + 1) : gy;
days = 355666 + (365 * gy) + ~~((gy2 + 3) / 4) - ~~((gy2 + 99) / 100) + ~~((gy2 + 399) / 400) + gd + g_d_m[gm - 1];
jy = -1595 + (33 * ~~(days / 12053)); days %= 12053; jy += 4 * ~~(days / 1461); days %= 1461;
if (days > 365) { jy += ~~((days - 1) / 365); days = (days - 1) % 365; }
if (days < 186) { jm = 1 + ~~(days / 31); jd = 1 + (days % 31); } else { jm = 7 + ~~((days - 186) / 30); jd = 1 + ((days - 186) % 30); }
arr[0] = jy; arr[1] = jm; arr[2] = jd;
if (obj.pattern) { return $$.pattern(arr, obj.pattern) }
return arr;
},
toGregorian(obj) {
if (!obj || obj.date === undefined) {
console.error(`
}`,t),!1;if(!t.date)return;let l=e.convertToArray({date:t.date});if("jalali"===e.getCalendarType(l))return l;let[s,$,_]=l;return(r=[0,31,59,90,120,151,181,212,243,273,304,334],i=$>2?s+1:s,a=-1595+33*~~((g=355666+365*s+~~((i+3)/4)-~~((i+99)/100)+~~((i+399)/400)+_+r[$-1])/12053),g%=12053,a+=4*~~(g/1461),(g%=1461)>365&&(a+=~~((g-1)/365),g=(g-1)%365),g<186?(n=1+~~(g/31),o=1+g%31):(n=7+~~((g-186)/30),o=1+(g-186)%30),l[0]=a,l[1]=n,l[2]=o,t.pattern)?e.pattern(l,t.pattern):l},toGregorian(t){var r,a,n,o,i;if(!t||void 0===t.date)return console.error(`
AIODate().toGregorian should get an object as parameter.

@@ -168,26 +16,3 @@ {

pattern:string (example: {year}/{month}/{day})
}`, obj)
return false
}
if (!obj.date) { return }
let arr = $$.convertToArray({ date: obj.date });
let calendarType = $$.getCalendarType(arr);
if (calendarType === 'gregorian') { return arr }
let [jy, jm, jd] = arr;
var sal_a, gy, gm, gd, days;
jy += 1595; days = -355668 + (365 * jy) + (~~(jy / 33) * 8) + ~~(((jy % 33) + 3) / 4) + jd + ((jm < 7) ? (jm - 1) * 31 : ((jm - 7) * 30) + 186);
gy = 400 * ~~(days / 146097); days %= 146097;
if (days > 36524) { gy += 100 * ~~(--days / 36524); days %= 36524; if (days >= 365) days++; }
gy += 4 * ~~(days / 1461); days %= 1461;
if (days > 365) { gy += ~~((days - 1) / 365); days = (days - 1) % 365; }
gd = days + 1;
sal_a = [0, 31, ((gy % 4 === 0 && gy % 100 !== 0) || (gy % 400 === 0)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for (gm = 0; gm < 13 && gd > sal_a[gm]; gm++) gd -= sal_a[gm];
arr[0] = gy; arr[1] = gm; arr[2] = gd;
if (obj.pattern) { return $$.pattern(arr, obj.pattern) }
return arr;
},
compaire(obj) {
if (!obj || obj.date === undefined || obj.otherDate === undefined) {
console.error(`
}`,t),!1;if(!t.date)return;let g=e.convertToArray({date:t.date});if("gregorian"===e.getCalendarType(g))return g;let[l,s,$]=g;for(l+=1595,a=400*~~((i=-355668+365*l+8*~~(l/33)+~~((l%33+3)/4)+$+(s<7?(s-1)*31:(s-7)*30+186))/146097),(i%=146097)>36524&&(a+=100*~~(--i/36524),(i%=36524)>=365&&i++),a+=4*~~(i/1461),(i%=1461)>365&&(a+=~~((i-1)/365),i=(i-1)%365),o=i+1,r=[0,31,a%4==0&&a%100!=0||a%400==0?29:28,31,30,31,30,31,31,30,31,30,31],n=0;n<13&&o>r[n];n++)o-=r[n];return(g[0]=a,g[1]=n,g[2]=o,t.pattern)?e.pattern(g,t.pattern):g},compaire(t){if(!t||void 0===t.date||void 0===t.otherDate)return console.error(`
AIODate().compaire should get an object as parameter.

@@ -199,65 +24,7 @@ {

and returns 'greater' | 'less' | 'equal'
`, obj)
return false
}
let { date, otherDate } = obj;
if (!date || !otherDate) { return }
let arr1 = $$.convertToArray({ date });
let arr2 = $$.convertToArray({ date: otherDate });
for (let i = 0; i < arr1.length; i++) {
let a = arr1[i];
let b = arr2[i] || 0;
if (a < b) { return 'less' }
if (a > b) { return 'greater' }
}
return 'equal';
},
getToCompaire(o1, o2) {
o1 = $$.convertToArray({ date: o1 });
o2 = $$.convertToArray({ date: o2 });
for (let i = 0; i < o1.length; i++) { if (isNaN(o2[i])) { o2[i] = o1[i] } }
return { date: o1, otherDate: o2 }
},
isLess(o1, o2) {
if (!o1 || !o2) { return false }
return $$.compaire($$.getToCompaire(o1, o2)) === 'less'
},
isEqual(o1, o2) {
if (!o1 || !o2) { return false }
return $$.compaire($$.getToCompaire(o1, o2)) === 'equal'
},
isGreater(o1, o2) {
if (!o1 || !o2) { return false }
return $$.compaire($$.getToCompaire(o1, o2)) === 'greater'
},
isBetween(o1, [o2, o3]) {
if (!o1 || !o2 || !o3) { return false }
return $$.isGreater(o1, o2) && $$.isLess(o1, o3)
},
getTime(obj) {
if (!obj || obj.date === undefined) {
console.error(`
`,t),!1;let{date:r,otherDate:a}=t;if(!r||!a)return;let n=e.convertToArray({date:r}),o=e.convertToArray({date:a});for(let i=0;i<n.length;i++){let g=n[i],l=o[i]||0;if(g<l)return"less";if(g>l)return"greater"}return"equal"},getToCompaire(t,r){t=e.convertToArray({date:t}),r=e.convertToArray({date:r});for(let a=0;a<t.length;a++)isNaN(r[a])&&(r[a]=t[a]);return{date:t,otherDate:r}},isLess:(t,r)=>!!t&&!!r&&"less"===e.compaire(e.getToCompaire(t,r)),isEqual:(t,r)=>!!t&&!!r&&"equal"===e.compaire(e.getToCompaire(t,r)),isGreater:(t,r)=>!!t&&!!r&&"greater"===e.compaire(e.getToCompaire(t,r)),isBetween:(t,[r,a])=>!!t&&!!r&&!!a&&e.isGreater(t,r)&&e.isLess(t,a),getTime(t){if(!t||void 0===t.date)return console.error(`
AIODate().getTime should get an object as parameter.
{
*date:number | string | array ,
}`, obj)
return false
}
let { date, calendarType } = obj;
if (!date) { return }
calendarType = calendarType || $$.getCalendarType(date);
if (typeof date === 'number') { return date }
date = $$.convertToArray({ date });
let [year, month = 1, day = 1, hour = 0, minute = 0, second = 0, tenthsecond = 0] = date;
if (calendarType === 'jalali') { date = $$.toGregorian({ date: [year, month, day, hour, minute, second, tenthsecond] }) }
let time = new Date(date[0], date[1] - 1, date[2]).getTime()
time += hour * 60 * 60 * 1000;
time += minute * 60 * 1000;
time += second * 1000;
time += tenthsecond * 100;
return time;
},
getNextTime(obj) {
if (!obj || obj.date === undefined || isNaN(obj.offset)) {
console.error(`
}`,t),!1;let{date:r,calendarType:a}=t;if(!r)return;if(a=a||e.getCalendarType(r),"number"==typeof r)return r;let[n,o=1,i=1,g=0,l=0,s=0,$=0]=r=e.convertToArray({date:r});"jalali"===a&&(r=e.toGregorian({date:[n,o,i,g,l,s,$]}));let _=new Date(r[0],r[1]-1,r[2]).getTime();return _+=36e5*g,_+=6e4*l,_+=1e3*s,_+=100*$},getNextTime(t){if(!t||void 0===t.date||isNaN(t.offset))return console.error(`
AIODate().getNextTime should get an object as parameter.

@@ -269,30 +36,3 @@ {

pattern:string (example: {year}/{month}/{day})
}`, obj)
return false
}
let { date, offset, pattern } = obj;
if (!offset || !date) { return date }
let calendarType = $$.getCalendarType(date);
let time = $$.getTime({ date, calendarType });
time += offset;
time = $$.convertToArray({ date: time });
if (calendarType === 'jalali' || obj.jalali) {
let [jy, jm, jd] = $$.toJalali({ date: time });
time[0] = jy; time[1] = jm; time[2] = jd;
}
if (pattern) { return $$.pattern(time, pattern) }
return time;
},
GetMonthDaysLength: {
jalali: (year, month) => {
if (month <= 6) { return 31; }
if (month <= 11) { return 30; }
if ([1, 5, 9, 13, 17, 22, 26, 30].indexOf(year % 33) === -1) { return 29; }
return 30;
},
gregorian: (year, month) => { return new Date(year, month - 1, 0).getDate(); }
},
getMonthDaysLength(obj) {
if (!obj || obj.date === undefined) {
console.error(`
}`,t),!1;let{date:r,offset:a,pattern:n}=t;if(!a||!r)return r;let o=e.getCalendarType(r),i=e.getTime({date:r,calendarType:o});if(i+=a,i=e.convertToArray({date:i}),"jalali"===o||t.jalali){let[g,l,s]=e.toJalali({date:i});i[0]=g,i[1]=l,i[2]=s}return n?e.pattern(i,n):i},GetMonthDaysLength:{jalali:(e,t)=>t<=6?31:t<=11?30:-1===[1,5,9,13,17,22,26,30].indexOf(e%33)?29:30,gregorian:(e,t)=>new Date(e,t-1,0).getDate()},getMonthDaysLength(t){if(!t||void 0===t.date)return console.error(`
AIODate().getMonthDaysLength should get an object as parameter.

@@ -302,83 +42,8 @@ {

}
`, obj)
return false
}
let { date } = obj;
if (!date) { return }
let [year, month] = $$.convertToArray({ date });
return $$.GetMonthDaysLength[$$.getCalendarType([year, month])](year, month)
},
getCalendarType(date) {
return $$.convertToArray({ date })[0] < 1700 ? 'jalali' : 'gregorian'
},
getWeekDay(obj) {
if (!obj || !obj.date) {
console.error(`AIODate().getWeekDay should get an object as parameter. {*date:string | array}`, obj)
return false
}
let date = $$.convertToArray({ date: obj.date });
let calendarType = $$.getCalendarType(date);
date = $$.toGregorian({ date })
let index = new Date(date[0], date[1] - 1, date[2]).getDay();
if (calendarType === 'jalali') {
index += 1;
index = index % 7;
}
return { weekDay: $$.getWeekDays({ calendarType })[index], index };
},
getDaysOfWeek(obj) {
if (!obj || !obj.date) {
console.error(`AIODate().getDaysOfWeek should get an object as parameter. {*date:string | array}`, obj)
return false
}
let { index } = $$.getWeekDay({ date: obj.date });
let startDate = $$.getNextTime({ date: [obj.date[0], obj.date[1], obj.date[2]], offset: -(index + 1) * 24 * 60 * 60 * 1000 });
let endDate = $$.getNextTime({ date: [obj.date[0], obj.date[1], obj.date[2]], offset: (7 - index) * 24 * 60 * 60 * 1000 });
return $$.getDatesBetween({ date: startDate, otherDate: endDate, pattern: obj.pattern, step: 24 * 60 * 60 * 1000 })
},
getDaysOfMonth(obj) {
if (!obj || !obj.date) {
console.error(`AIODate().getLastDayOfMonth should get an object as parameter. {*date:string | array}`, obj)
return false
}
let date = $$.convertToArray({ date: obj.date });
let firstDay = [date[0], date[1], 1];
let lastDay = $$.getLastDayOfMonth({ date })
let betweenDayes = $$.getDatesBetween({ date: firstDay, otherDate: lastDay, step: 24 * 60 * 60 * 1000 });
let result = [firstDay];
result = result.concat(betweenDayes);
result.push(lastDay);
if (obj.pattern) {
return result.map((o) => $$.getDateByPattern({ date: o, pattern: obj.pattern }))
}
return result;
},
getLastDayOfMonth(obj) {
if (!obj || !obj.date) {
console.error(`AIODate().getLastDayOfMonth should get an object as parameter. {*date:string | array}`, obj)
return false
}
let date = $$.convertToArray({ date: obj.date });
let length = $$.getMonthDaysLength({ date });
let lastDay = [date[0], date[1], length];
if (obj.pattern) {
return $$.getDateByPattern({ date: lastDay, pattern: obj.pattern })
}
return lastDay
},
getWeekDays({ calendarType }) {
return {
jalali: ['شنبه', 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه'],
gregorian: ['SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY']
}[calendarType]
},
getMonths({ calendarType }) {
return {
jalali: ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند',],
gregorian: ['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER']
}[calendarType]
},
getDatesBetween(obj) {
if (!obj || obj.date === undefined || obj.otherDate === undefined) {
console.error(`
`,t),!1;let{date:r}=t;if(!r)return;let[a,n]=e.convertToArray({date:r});return e.GetMonthDaysLength[e.getCalendarType([a,n])](a,n)},getYearDaysLength(t){if(!t||void 0===t.date)return console.error(`
AIODate().getYearDaysLength should get an object as parameter.
{
*date:number | string | array
}
`,t),!1;let{date:r}=t;if(!r)return;let[a]=e.convertToArray({date:r}),n=0;for(let o=1;o<=12;o++)n+=e.getMonthDaysLength({date:[a,o]});return n},getCalendarType:t=>e.convertToArray({date:t})[0]<1700?"jalali":"gregorian",getWeekDay(t){if(!t||!t.date)return console.error("AIODate().getWeekDay should get an object as parameter. {*date:string | array}",t),!1;let r=e.convertToArray({date:t.date}),a=e.getCalendarType(r);r=e.toGregorian({date:r});let n=new Date(r[0],r[1]-1,r[2]).getDay();return"jalali"===a&&(n+=1,n%=7),{weekDay:e.getWeekDays({calendarType:a})[n],index:n}},getDaysOfWeek(t){if(!t||!t.date)return console.error("AIODate().getDaysOfWeek should get an object as parameter. {*date:string | array}",t),!1;let{index:r}=e.getWeekDay({date:t.date}),a=e.getNextTime({date:[t.date[0],t.date[1],t.date[2]],offset:-(864e5*(r+1))}),n=e.getNextTime({date:[t.date[0],t.date[1],t.date[2]],offset:(7-r)*864e5});return e.getDatesBetween({date:a,otherDate:n,pattern:t.pattern,step:864e5})},getDaysOfMonth(t){if(!t||!t.date)return console.error("AIODate().getLastDayOfMonth should get an object as parameter. {*date:string | array}",t),!1;let r=e.convertToArray({date:t.date}),a=[r[0],r[1],1],n=e.getLastDayOfMonth({date:r}),o=e.getDatesBetween({date:a,otherDate:n,step:864e5}),i=[a];return((i=i.concat(o)).push(n),t.pattern)?i.map(r=>e.getDateByPattern({date:r,pattern:t.pattern})):i},getLastDayOfMonth(t){if(!t||!t.date)return console.error("AIODate().getLastDayOfMonth should get an object as parameter. {*date:string | array}",t),!1;let r=e.convertToArray({date:t.date}),a=e.getMonthDaysLength({date:r}),n=[r[0],r[1],a];return t.pattern?e.getDateByPattern({date:n,pattern:t.pattern}):n},getWeekDays:({calendarType:e})=>({jalali:["شنبه","یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه"],gregorian:["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]})[e],getMonths:({calendarType:e})=>({jalali:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند",],gregorian:["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"]})[e],getDatesBetween(t){if(!t||void 0===t.date||void 0===t.otherDate)return console.error(`
AIODate().getDatesBetween should get an object as parameter.

@@ -390,102 +55,3 @@ {

pattern:string (example '{year/{month}/{day}}')
}`)
return false;
}
let { date, otherDate, step = 24 * 60 * 60 * 1000, pattern } = obj;
date = $$.convertToArray({ date: date });
otherDate = $$.convertToArray({ date: otherDate });
if (!$$.isGreater(otherDate, date)) { return [] }
let length = $$.getDelta({ date, otherDate }).miliseconds / step;
if (isNaN(length) || length > 1000) {
console.error('AIODate().getDatesBetween() => too many dates');
return;
}
let nextDate = $$.getNextTime({ date, offset: step });
let res = [];
while ($$.isLess(nextDate, otherDate)) {
if (pattern) {
res.push($$.pattern(nextDate, pattern));
}
else {
res.push(nextDate);
}
nextDate = $$.getNextTime({ date: nextDate, offset: step });
}
return res
},
getToday(obj) {
if (!obj || ['jalali', 'gregorian'].indexOf(obj.calendarType) === -1) {
console.error(`AIODate().getToday should get an object as parameter. {*calendarType:'gregorian' | 'jalali',pattern:string}`)
return false;
}
let date = new Date();
date = [date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), Math.round(date.getMilliseconds() / 100)]
if (obj.calendarType === 'jalali') { date = $$.toJalali({ date }) }
if (obj.pattern) { return $$.pattern(date, obj.pattern) }
return date;
},
getDateByPattern(obj) {
if (!obj || !obj.date || typeof obj.pattern !== 'string') {
console.error(`AIODate().getDateByPattern should get an object as parameter. {*date:number | string | array,*pattern:string}`)
return false;
}
let { date, pattern } = obj
return $$.pattern(date, pattern)
},
pattern(date, pattern) {
date = $$.convertToArray({ date });
let [year, month, day, hour, minute, second, tenthsecond] = date;
let calendarType = $$.getCalendarType(date);
pattern = pattern.replace('{year}', year);
if(typeof month === 'number'){pattern = pattern.replace('{month}', $$.get2Digit(month));}
if(typeof day === 'number'){pattern = pattern.replace('{day}', $$.get2Digit(day));}
if(typeof hour === 'number'){pattern = pattern.replace('{hour}', $$.get2Digit(hour));}
if(typeof minute === 'number'){pattern = pattern.replace('{minute}', $$.get2Digit(minute));}
if(typeof second === 'number'){pattern = pattern.replace('{second}', $$.get2Digit(second));}
if(typeof tenthsecond === 'number'){pattern = pattern.replace('{tenthsecond}', $$.get2Digit(tenthsecond));}
if (pattern.indexOf('{monthString}') !== -1) {
pattern = pattern.replace('{monthString}', $$.getMonths({ calendarType })[month - 1]);
}
if (pattern.indexOf('{weekDay}') !== -1) {
let weekDays = $$.getWeekDays({ calendarType });
let { index } = $$.getWeekDay({ date });
pattern = pattern.replace('{weekDay}', weekDays[index]);
}
return pattern
},
convertMiliseconds({miliseconds = 0,unit = 'day',pattern}) {
let type;
if(miliseconds < 0){type = 'passed'; miliseconds = -miliseconds}
else if(miliseconds > 0){type = 'remaining'}
else {type = 'now'}
let index = ['day','hour','minute','second','tenthsecond','milisecond'].indexOf(unit);
let day = 0, hour = 0, minute = 0,second = 0, tenthsecond = 0;
let dif = miliseconds;
if(index <= 0){
day = Math.floor(dif / (24 * 60 * 60 * 1000));
dif -= day * (24 * 60 * 60 * 1000);
}
if(index <= 1){
hour = Math.floor(dif / (60 * 60 * 1000));
dif -= hour * (60 * 60 * 1000);
}
if(index <= 2){
minute = Math.floor(dif / (60 * 1000));
dif -= minute * (60 * 1000);
}
if(index <= 3){
second = Math.floor(dif / (1000));
dif -= second * (1000);
}
if(index <= 4){
tenthsecond = Math.floor(dif / (100));
}
if (pattern) {
return $$.pattern([0, 0, day, hour, minute, second, tenthsecond], pattern)
}
return { day, hour, minute, second, tenthsecond, miliseconds,type }
},
getDelta(obj) {
if (!obj || !obj.date) {
console.error(`
}`),!1;let{date:r,otherDate:a,step:n=864e5,pattern:o}=t;if(r=e.convertToArray({date:r}),a=e.convertToArray({date:a}),!e.isGreater(a,r))return[];let i=e.getDelta({date:r,otherDate:a}).miliseconds/n;if(isNaN(i)||i>1e3){console.error("AIODate().getDatesBetween() => too many dates");return}let g=e.getNextTime({date:r,offset:n}),l=[];for(;e.isLess(g,a);)o?l.push(e.pattern(g,o)):l.push(g),g=e.getNextTime({date:g,offset:n});return l},getToday(t){if(!t||-1===["jalali","gregorian"].indexOf(t.calendarType))return console.error("AIODate().getToday should get an object as parameter. {*calendarType:'gregorian' | 'jalali',pattern:string}"),!1;let r=new Date;return(r=[r.getFullYear(),r.getMonth()+1,r.getDate(),r.getHours(),r.getMinutes(),r.getSeconds(),Math.round(r.getMilliseconds()/100)],"jalali"===t.calendarType&&(r=e.toJalali({date:r})),t.pattern)?e.pattern(r,t.pattern):r},getDateByPattern(t){if(!t||!t.date||"string"!=typeof t.pattern)return console.error("AIODate().getDateByPattern should get an object as parameter. {*date:number | string | array,*pattern:string}"),!1;let{date:r,pattern:a,jalali:n}=t;return e.pattern(r,a,n)},pattern(t,r,a){let[n,o,i,g,l,s,$]=t=e.convertToArray({date:t,jalali:a}),_=e.getCalendarType(t);if(r=r.replace("{year}",n),"number"==typeof o&&(r=r.replace("{month}",e.get2Digit(o))),"number"==typeof i&&(r=r.replace("{day}",e.get2Digit(i))),"number"==typeof g&&(r=r.replace("{hour}",e.get2Digit(g))),"number"==typeof l&&(r=r.replace("{minute}",e.get2Digit(l))),"number"==typeof s&&(r=r.replace("{second}",e.get2Digit(s))),"number"==typeof $&&(r=r.replace("{tenthsecond}",e.get2Digit($))),-1!==r.indexOf("{monthString}")&&(r=r.replace("{monthString}",e.getMonths({calendarType:_})[o-1])),-1!==r.indexOf("{weekDay}")){let d=e.getWeekDays({calendarType:_}),{index:u}=e.getWeekDay({date:t});r=r.replace("{weekDay}",d[u])}return r},convertMiliseconds({miliseconds:t=0,unit:r="day",pattern:a}){let n;t<0?(n="passed",t=-t):n=t>0?"remaining":"now";let o=["day","hour","minute","second","tenthsecond","milisecond"].indexOf(r),i=0,g=0,l=0,s=0,$=0,_=t;return(o<=0&&(i=Math.floor(_/864e5),_-=864e5*i),o<=1&&(g=Math.floor(_/36e5),_-=36e5*g),o<=2&&(l=Math.floor(_/6e4),_-=6e4*l),o<=3&&(s=Math.floor(_/1e3),_-=1e3*s),o<=4&&($=Math.floor(_/100)),a)?e.pattern([0,0,i,g,l,s,$],a):{day:i,hour:g,minute:l,second:s,tenthsecond:$,miliseconds:t,type:n}},getDelta(t){if(!t||!t.date)return console.error(`
AIODate().getDelta should get an object as parameter.

@@ -497,87 +63,2 @@ {

unit:'day' | 'hour' | 'minute' | 'second' | 'tenthsecond' | 'milisecond'
}`)
return false;
}
let { date, otherDate = new Date().getTime(), pattern,unit } = obj;
let dif = $$.getTime({ date }) - $$.getTime({ date: otherDate });
return $$.convertMiliseconds({miliseconds:-dif,unit,pattern})
},
getByOffset({ date, offset, unit = 'day', calendarType = 'gregorian' }) {
if (!offset) { return date }
let fn = $$['get' + (offset > 0 ? 'Next' : 'Prev') + { 'hour': 'Hour', 'day': 'Day', 'month': 'Month', 'year': 'Year' }[unit]];
let abs = Math.abs(offset);
for (let i = 0; i < abs; i++) { date = fn(date, calendarType); }
return date;
},
getNextYear([year, month]) {
return [year + 1, month, 1, 0]
},
getPrevYear([year, month]) {
return [year - 1, month, 1, 0]
},
getNextHour([year, month, day, hour], calendarType) {
if (hour < 23) { return [year, month, day, hour + 1] }
let a = $$.getNextDay([year, month, day], calendarType);
return [a[0], a[1], a[2], 0]
},
getPrevHour([year, month, day, hour], calendarType) {
if (hour > 0) { return [year, month, day, hour - 1] }
let a = $$.getPrevDay([year, month, day], calendarType);
return [a[0], a[1], a[2], 23]
},
getNextDay([year, month, day, hour]) {
if (day < $$.getMonthDaysLength({ date: [year, month] })) { return [year, month, day + 1, hour] }
if (month < 12) { return [year, month + 1, 1, hour] }
return [year + 1, 1, 1, hour];
},
getPrevDay([year, month, day, hour], calendarType) {
if (day > 1) { return [year, month, day - 1] }
if (month > 1) {
month -= 1;
day = $$.getMonthDaysLength({ date: [year, month] });
return [year, month, day, hour];
}
year -= 1;
month = 12;
day = $$.getMonthDaysLength({ date: [year, month] });
return [year, month, day, hour];
},
getNextMonth([year, month, day, hour]) { return month < 12 ? [year, month + 1, day, hour] : [year + 1, 1, 1]; },
getPrevMonth([year, month, day, hour]) { return month > 1 ? [year, month - 1, day, hour] : [year - 1, 12, 1]; },
get2Digit(n) {
let ns;
try{ns = n.toString()}
catch{return n}
if (ns.length === 1) { ns = '0' + n }
return ns
}
}
return {
getDaysOfWeek: $$.getDaysOfWeek,
getDaysOfMonth: $$.getDaysOfMonth,
getLastDayOfMonth: $$.getLastDayOfMonth,
getByOffset: $$.getByOffset,
toJalali: $$.toJalali,
toGregorian: $$.toGregorian,
getTime: $$.getTime,
getSplitter: $$.getSplitter,
convertToArray: $$.convertToArray,
compaire: $$.compaire,
isEqual: $$.isEqual,
isGreater: $$.isGreater,
getDelta: $$.getDelta,
convertMiliseconds:$$.convertMiliseconds,
isLess: $$.isLess,
isBetween: $$.isBetween,
getMonthDaysLength: $$.getMonthDaysLength,
getWeekDay: $$.getWeekDay,
getWeekDays: $$.getWeekDays,
getMonths: $$.getMonths,
getToday: $$.getToday,
isMatch: $$.isMatch,
getNextTime: $$.getNextTime,
getDatesBetween: $$.getDatesBetween,
getDateByPattern: $$.getDateByPattern,
get2Digit:$$.get2Digit
}
}
}`),!1;let{date:r,otherDate:a=new Date().getTime(),pattern:n,unit:o}=t,i=e.getTime({date:r})-e.getTime({date:a});return e.convertMiliseconds({miliseconds:-i,unit:o,pattern:n})},getByOffset({date:t,offset:r,unit:a="day",calendarType:n="gregorian"}){if(!r)return t;let o=e["get"+(r>0?"Next":"Prev")+({hour:"Hour",day:"Day",month:"Month",year:"Year"})[a]],i=Math.abs(r);for(let g=0;g<i;g++)t=o(t,n);return t},getNextYear:([e,t])=>[e+1,t,1,0],getPrevYear:([e,t])=>[e-1,t,1,0],getNextHour([t,r,a,n],o){if(n<23)return[t,r,a,n+1];let i=e.getNextDay([t,r,a],o);return[i[0],i[1],i[2],0]},getPrevHour([t,r,a,n],o){if(n>0)return[t,r,a,n-1];let i=e.getPrevDay([t,r,a],o);return[i[0],i[1],i[2],23]},getNextDay:([t,r,a,n])=>a<e.getMonthDaysLength({date:[t,r]})?[t,r,a+1,n]:r<12?[t,r+1,1,n]:[t+1,1,1,n],getPrevDay:([t,r,a,n],o)=>a>1?[t,r,a-1]:r>1?(r-=1,a=e.getMonthDaysLength({date:[t,r]}),[t,r,a,n]):(t-=1,r=12,a=e.getMonthDaysLength({date:[t,r]}),[t,r,a,n]),getDayIndex({date:t,unit:r}){if(t=e.convertToArray({date:t}),"week"===r){let a=e.getDaysOfWeek({date:t});for(let n=0;n<a.length;n++){let[o,i,g]=a[n];if(o===t[0]&&i===t[1]&&g===t[2])return n}}if("month"===r)return t[2]-1;if("year"===r){let l=0;for(let s=0;s<t[1]-1;s++)l+=e.getMonthDaysLength({date:t});return(l+=t[1])-1}},getNextMonth:([e,t,r,a])=>t<12?[e,t+1,r,a]:[e+1,1,1],getPrevMonth:([e,t,r,a])=>t>1?[e,t-1,r,a]:[e-1,12,1],get2Digit(e){let t;try{t=e.toString()}catch{return e}return 1===t.length&&(t="0"+e),t}};return{getDaysOfWeek:e.getDaysOfWeek,getDaysOfMonth:e.getDaysOfMonth,getLastDayOfMonth:e.getLastDayOfMonth,getByOffset:e.getByOffset,getDayIndex:e.getDayIndex,toJalali:e.toJalali,toGregorian:e.toGregorian,getTime:e.getTime,getSplitter:e.getSplitter,convertToArray:e.convertToArray,compaire:e.compaire,isEqual:e.isEqual,isGreater:e.isGreater,getDelta:e.getDelta,convertMiliseconds:e.convertMiliseconds,isLess:e.isLess,isBetween:e.isBetween,getMonthDaysLength:e.getMonthDaysLength,getYearDaysLength:e.getYearDaysLength,getWeekDay:e.getWeekDay,getWeekDays:e.getWeekDays,getMonths:e.getMonths,getToday:e.getToday,isMatch:e.isMatch,getNextTime:e.getNextTime,getDatesBetween:e.getDatesBetween,getDateByPattern:e.getDateByPattern,get2Digit:e.get2Digit}};

2

package.json
{
"name": "aio-date",
"version": "4.0.3",
"version": "4.1.0",
"description": "",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc