topkat-utils 1.0.32 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/package.json +1 -1
- package/utils.d.ts +13 -77
- package/utils.js +8 -208
- package/utils.js.map +1 -1
- package/utils.ts +12 -241
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
package/utils.d.ts
CHANGED
|
@@ -79,7 +79,7 @@ declare function ENV(): {
|
|
|
79
79
|
* @param {any} mayBeAstring
|
|
80
80
|
* @return !!value
|
|
81
81
|
*/
|
|
82
|
-
declare function parseBool(mayBeAstring: string | boolean): boolean;
|
|
82
|
+
declare function parseBool(mayBeAstring: string | boolean | number): boolean;
|
|
83
83
|
declare type Config = {
|
|
84
84
|
env: string;
|
|
85
85
|
isProd: boolean;
|
|
@@ -152,7 +152,7 @@ declare function strAsArray(arrOrStr: any): any;
|
|
|
152
152
|
/** If not an array provided, return the array with the value
|
|
153
153
|
* /!\ NOTE /!\ In case the value is null or undefined, it will return that value
|
|
154
154
|
*/
|
|
155
|
-
declare function asArray<T>(item: T
|
|
155
|
+
declare function asArray<T extends any[] | any>(item: T): T extends undefined ? undefined : T extends any[] ? T : T[];
|
|
156
156
|
/** Array comparison
|
|
157
157
|
* @return {object} { inCommon, notInB, notInA }
|
|
158
158
|
*/
|
|
@@ -446,12 +446,12 @@ declare function isValid(...paramsToValidate: any[]): boolean;
|
|
|
446
446
|
declare function isType(value: any, type: BaseTypes): boolean;
|
|
447
447
|
declare function validatorReturnErrArray(...paramsToValidate: ValidatorObject[]): [string?, number?, object?];
|
|
448
448
|
declare function isEmpty(objOrArr: object | any[] | string | null | undefined): boolean;
|
|
449
|
-
declare function getDateAsInt12(dateAllFormat?: Date | string | number, errIfNotValid?: any):
|
|
449
|
+
declare function getDateAsInt12(dateAllFormat?: Date | string | number, errIfNotValid?: any): string;
|
|
450
450
|
declare function humanReadableTimestamp(dateAllFormat: any): number;
|
|
451
451
|
/** format for 6/8/2018 => 20180806
|
|
452
452
|
* @param dateAllFormat multiple format allowed 2012, 20120101, 201201011200, new Date(), "2019-12-08T16:19:10.341Z" and all string that new Date() can parse
|
|
453
453
|
*/
|
|
454
|
-
declare function getDateAsInt(dateAllFormat?: Date | string | number, errIfNotValid$?: boolean, withHoursAndMinutes$?: boolean):
|
|
454
|
+
declare function getDateAsInt(dateAllFormat?: Date | string | number, errIfNotValid$?: boolean, withHoursAndMinutes$?: boolean): string;
|
|
455
455
|
declare function getMonthAsInt(dateAllFormat?: Date | string | number): number;
|
|
456
456
|
/**
|
|
457
457
|
* @param dateAllFormat multiple format allowed 2012, 20120101, 201201011200, new Date(), "2019-12-08T16:19:10.341Z" and all string that new Date() can parse
|
|
@@ -481,7 +481,7 @@ declare function getTimeAsInt(timeOrDateInt?: any): number | "dateInvalid";
|
|
|
481
481
|
* @param {timeInt|dateInt12} Eg: 2222 OR 201201012222. Default, actual dateInt12
|
|
482
482
|
* @param {String} separator default: ":"
|
|
483
483
|
*/
|
|
484
|
-
declare function getIntAsTime(intOrDateTimeInt?:
|
|
484
|
+
declare function getIntAsTime(intOrDateTimeInt?: string, separator?: string): string;
|
|
485
485
|
declare function isTimeStringValid(timeStr: any, outputAnError$?: boolean): boolean;
|
|
486
486
|
declare function getDuration(startDate: any, endDate: any, inMinutes?: boolean): number | number[];
|
|
487
487
|
/** compare two object with DATE INT, if they overlap return true
|
|
@@ -493,50 +493,28 @@ declare function getDuration(startDate: any, endDate: any, inMinutes?: boolean):
|
|
|
493
493
|
* @param {Boolean} strict$ if true,
|
|
494
494
|
*/
|
|
495
495
|
declare function doDateOverlap(event1: any, event2: any, fieldNameForStartDate$?: string, fieldNameForEndDate$?: string, allowNull$?: boolean, strict$?: boolean): boolean;
|
|
496
|
-
/** Get all dates at specified days between two dates
|
|
497
|
-
* @param daysArray [0,1,2,3,4,5,6]
|
|
498
|
-
* @param {*} startDate all format
|
|
499
|
-
* @param {*} endDate all format
|
|
500
|
-
* @param {'int'|'object'} outputFormat default: int
|
|
501
|
-
*/
|
|
502
|
-
declare function getDatesForDaysArrayBetweenTwoDates(daysArray: any, startDate: any, endDate: any, outputFormat?: string): (number | Date)[];
|
|
503
|
-
declare function getEndTimeFromDurationAndStartTime(startTime: any, duration: any): {
|
|
504
|
-
days: number;
|
|
505
|
-
time: string;
|
|
506
|
-
};
|
|
507
|
-
declare function getDate12FromDateAndTime(dateAllFormat: Date | string | number, timeAllFormat: any): any;
|
|
508
|
-
declare function eachDayOfInterval(startDateAllFormat: any, endDateAllFormat: any, outputFormat?: string): (number | Date)[];
|
|
509
|
-
declare function eachMonthOfInterval(startDateAllFormat: any, endDateAllFormat: any): any[];
|
|
510
|
-
declare function isSunday(dateAllFormat?: Date | string | number): boolean;
|
|
511
|
-
declare function isMonday(dateAllFormat?: Date | string | number): boolean;
|
|
512
|
-
declare function isTuesday(dateAllFormat?: Date | string | number): boolean;
|
|
513
|
-
declare function isWednesday(dateAllFormat?: Date | string | number): boolean;
|
|
514
|
-
declare function isThursday(dateAllFormat?: Date | string | number): boolean;
|
|
515
|
-
declare function isFriday(dateAllFormat?: Date | string | number): boolean;
|
|
516
|
-
declare function isSaturday(dateAllFormat?: Date | string | number): boolean;
|
|
517
|
-
declare function isWeekend(dateAllFormat?: Date | string | number): boolean;
|
|
518
496
|
declare function nextWeekDay(fromDate: any, weekDayInt?: 0 | 1 | 2 | 3 | 4 | 5 | 6, outputFormat?: 'dateInt8' | 'dateInt12' | 'humanReadableTimestamp', sameDayAllowed?: boolean): number;
|
|
519
497
|
declare function nextWeekDay(fromDate: any, weekDayInt?: 0 | 1 | 2 | 3 | 4 | 5 | 6, outputFormat?: 'date', sameDayAllowed?: boolean): Date;
|
|
520
498
|
/**
|
|
521
499
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
522
500
|
*/
|
|
523
|
-
declare function addDays(dateAllFormat?: Date | string | number, numberOfDays?: number, outputFormat?: string): number | Date;
|
|
501
|
+
declare function addDays(dateAllFormat?: Date | string | number, numberOfDays?: number, outputFormat?: string): string | number | Date;
|
|
524
502
|
/**
|
|
525
503
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
526
504
|
*/
|
|
527
|
-
declare function addMinutes(dateAllFormat?: Date | string | number, numberOfMinutes?: number, outputFormat?: string): number | Date;
|
|
505
|
+
declare function addMinutes(dateAllFormat?: Date | string | number, numberOfMinutes?: number, outputFormat?: string): string | number | Date;
|
|
528
506
|
/**
|
|
529
507
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
530
508
|
*/
|
|
531
|
-
declare function addHours(dateAllFormat?: Date | string | number, numberOfHours?: number, outputFormat?: string): number | Date;
|
|
509
|
+
declare function addHours(dateAllFormat?: Date | string | number, numberOfHours?: number, outputFormat?: string): string | number | Date;
|
|
532
510
|
/**
|
|
533
511
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
534
512
|
*/
|
|
535
|
-
declare function addMonths(dateAllFormat?: Date | string | number, numberOfMonths?: number, outputFormat?: string): number | Date;
|
|
513
|
+
declare function addMonths(dateAllFormat?: Date | string | number, numberOfMonths?: number, outputFormat?: string): string | number | Date;
|
|
536
514
|
/**
|
|
537
515
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
538
516
|
*/
|
|
539
|
-
declare function addYears(dateAllFormat?: Date | string | number, numberOfYears?: number, outputFormat?: string): number | Date;
|
|
517
|
+
declare function addYears(dateAllFormat?: Date | string | number, numberOfYears?: number, outputFormat?: string): string | number | Date;
|
|
540
518
|
declare function getDayOfMonth(dateAllFormat?: Date | string | number): any;
|
|
541
519
|
declare function getYear(dateAllFormat?: Date | string | number): any;
|
|
542
520
|
declare function getHours(dateAllFormat?: Date | string | number): any;
|
|
@@ -544,40 +522,17 @@ declare function getMinutes(dateAllFormat?: Date | string | number): any;
|
|
|
544
522
|
/**
|
|
545
523
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
546
524
|
*/
|
|
547
|
-
declare function lastDayOfMonth(dateAllFormat?: Date | string | number, outputFormat?: string): number | Date;
|
|
525
|
+
declare function lastDayOfMonth(dateAllFormat?: Date | string | number, outputFormat?: string): string | number | Date;
|
|
548
526
|
/**
|
|
549
527
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
550
528
|
*/
|
|
551
|
-
declare function firstDayOfMonth(dateAllFormat?: Date | string | number, outputFormat?: string): number | Date;
|
|
529
|
+
declare function firstDayOfMonth(dateAllFormat?: Date | string | number, outputFormat?: string): string | number | Date;
|
|
552
530
|
declare function differenceInMilliseconds(startDateAllFormat: any, endDateAllFormat: any): number;
|
|
553
531
|
declare function differenceInSeconds(startDateAllFormat: any, endDateAllFormat: any): number;
|
|
554
532
|
declare function differenceInMinutes(startDateAllFormat: any, endDateAllFormat: any): number;
|
|
555
533
|
declare function differenceInHours(startDateAllFormat: any, endDateAllFormat: any): number;
|
|
556
534
|
declare function differenceInDays(startDateAllFormat: any, endDateAllFormat: any): number;
|
|
557
535
|
declare function differenceInWeeks(startDateAllFormat: any, endDateAllFormat: any): number;
|
|
558
|
-
declare function differenceInMonths(startDateAllFormat: any, endDateAllFormat: any): number;
|
|
559
|
-
/** Will check if that date exists, and if not, this will
|
|
560
|
-
* Usefull for monthly subscription or reccuring month dates
|
|
561
|
-
* @param {any} dateAllFormat default: new Date()
|
|
562
|
-
* @returns {Date} Date object
|
|
563
|
-
*/
|
|
564
|
-
declare function getClosestExistingDateOfMonth(dateAllFormat?: Date | string | number): any;
|
|
565
|
-
/** Compute the best possible date for next month same day
|
|
566
|
-
* Usefull for monthly subscription or reccuring month dates
|
|
567
|
-
* @param {any} dateAllFormat default: new Date()
|
|
568
|
-
* @param {Boolean} onlyFuture if true return the future date relative to any date in the past, else, it return the next month date possible relative to the dateAllFormat
|
|
569
|
-
* @returns {Date} Date object
|
|
570
|
-
*/
|
|
571
|
-
declare function getNextMonthlyDate(dateAllFormat?: Date | string | number, onlyFuture?: boolean): any;
|
|
572
|
-
declare function getHolidayReferenceYear(dateAllFormat: Date | string | number): number;
|
|
573
|
-
/**
|
|
574
|
-
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
575
|
-
*/
|
|
576
|
-
declare function getFirstDayOfHolidayReferenceYear(dateAllFormat: Date | string | number, outputFormat?: string): number | Date;
|
|
577
|
-
/**
|
|
578
|
-
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
579
|
-
*/
|
|
580
|
-
declare function getLastDayOfHolidayReferenceYear(dateAllFormat: Date | string | number, outputFormat?: string): number | Date;
|
|
581
536
|
/**
|
|
582
537
|
// console colored output
|
|
583
538
|
// * console.log(C.green(C.dim('Hey bro !')))
|
|
@@ -823,18 +778,7 @@ declare const _: {
|
|
|
823
778
|
isTimeStringValid: typeof isTimeStringValid;
|
|
824
779
|
getDuration: typeof getDuration;
|
|
825
780
|
doDateOverlap: typeof doDateOverlap;
|
|
826
|
-
getDatesForDaysArrayBetweenTwoDates: typeof getDatesForDaysArrayBetweenTwoDates;
|
|
827
|
-
getEndTimeFromDurationAndStartTime: typeof getEndTimeFromDurationAndStartTime;
|
|
828
|
-
getDate12FromDateAndTime: typeof getDate12FromDateAndTime;
|
|
829
781
|
getMonthAsInt: typeof getMonthAsInt;
|
|
830
|
-
isSunday: typeof isSunday;
|
|
831
|
-
isMonday: typeof isMonday;
|
|
832
|
-
isTuesday: typeof isTuesday;
|
|
833
|
-
isWednesday: typeof isWednesday;
|
|
834
|
-
isThursday: typeof isThursday;
|
|
835
|
-
isFriday: typeof isFriday;
|
|
836
|
-
isSaturday: typeof isSaturday;
|
|
837
|
-
isWeekend: typeof isWeekend;
|
|
838
782
|
nextWeekDay: typeof nextWeekDay;
|
|
839
783
|
addMinutes: typeof addMinutes;
|
|
840
784
|
addHours: typeof addHours;
|
|
@@ -847,20 +791,12 @@ declare const _: {
|
|
|
847
791
|
getMinutes: typeof getMinutes;
|
|
848
792
|
firstDayOfMonth: typeof firstDayOfMonth;
|
|
849
793
|
lastDayOfMonth: typeof lastDayOfMonth;
|
|
850
|
-
eachDayOfInterval: typeof eachDayOfInterval;
|
|
851
|
-
eachMonthOfInterval: typeof eachMonthOfInterval;
|
|
852
794
|
differenceInMilliseconds: typeof differenceInMilliseconds;
|
|
853
795
|
differenceInSeconds: typeof differenceInSeconds;
|
|
854
796
|
differenceInMinutes: typeof differenceInMinutes;
|
|
855
797
|
differenceInHours: typeof differenceInHours;
|
|
856
798
|
differenceInDays: typeof differenceInDays;
|
|
857
799
|
differenceInWeeks: typeof differenceInWeeks;
|
|
858
|
-
differenceInMonths: typeof differenceInMonths;
|
|
859
|
-
getClosestExistingDateOfMonth: typeof getClosestExistingDateOfMonth;
|
|
860
|
-
getNextMonthlyDate: typeof getNextMonthlyDate;
|
|
861
|
-
getHolidayReferenceYear: typeof getHolidayReferenceYear;
|
|
862
|
-
getFirstDayOfHolidayReferenceYear: typeof getFirstDayOfHolidayReferenceYear;
|
|
863
|
-
getLastDayOfHolidayReferenceYear: typeof getLastDayOfHolidayReferenceYear;
|
|
864
800
|
getDateAsArrayFormatted: typeof dateArray;
|
|
865
801
|
getDateAsArray: typeof dateStringToArray;
|
|
866
802
|
convertDateAsInt: typeof getDateAsInt;
|
|
@@ -928,4 +864,4 @@ declare const _: {
|
|
|
928
864
|
export default _;
|
|
929
865
|
export { round, random, cln, pad, int, minMax, generateToken, moyenne, average, sumArray, sortUrlsByDeepnessInArrayOrObject, urlPathJoin, miniTemplater, isBetween, simpleObjectMaskOrSelect, ENV, parseBool, registerConfig, configFn, findByAddress, objForceWrite, objForceWriteIfNotSet, strAsArray, asArray, compareArrays, getArrayInCommon, getArrayDiff, getNotInArrayA, noDuplicateFilter, arrayCount, arrayToObjectSorted, pushIfNotExist, isNotEmptyArray, randomItemInArray, arrayUniqueValue, deepClone, cloneObject, JSONstringyParse, has, isObject, mergeDeep, flattenObject, unflattenObject, recursiveGenericFunction, recursiveGenericFunctionSync, findByAddressAll, objFilterUndefined, readOnly, reassignForbidden, readOnlyForAll, mergeDeepOverrideArrays, mergeDeepConfigurable, objFilterUndefinedRecursive, removeUndefinedKeys, // alias
|
|
930
866
|
sortObjKeyAccordingToValue, ensureObjectProp, filterKeys, deleteByAddress, ensureIsArrayAndPush, removeCircularJSONstringify, isset, cleanStackTrace, shuffleArray, shuffleArray as randomizeArray, round2, camelCase, snakeCase, kebabCase, kebabCase as dashCase, snakeCase as underscoreCase, titleCase, pascalCase, lowerCase, upperCase, capitalize1st, camelCaseToWords, firstMatch, allMatches, getValuesBetweenSeparator, getValuesBetweenStrings, escapeRegexp, validator, validator as required, // alias for readability
|
|
931
|
-
validatorReturnErrArray, assert, restTestMini, isValid, isType, isDateObject, issetOr, isEmptyOrNotSet, errIfNotSet, err500IfNotSet, errIfEmptyOrNotSet, err500IfEmptyOrNotSet, errXXXIfNotSet, isEmpty, checkAllObjectValuesAreEmpty, checkCtxIntegrity, issetOr as orIsset, getDateAsInt12, humanReadableTimestamp, getDateAsInt, getDateAsObject, isDateIntOrStringValid, isDateIsoOrObjectValid, dateStringToArray, dateArray, dateArrayInt, dateFormatted as dateSlash, dateFormatted, dateOffset, getTimeAsInt, getIntAsTime, isTimeStringValid, getDuration, doDateOverlap,
|
|
867
|
+
validatorReturnErrArray, assert, restTestMini, isValid, isType, isDateObject, issetOr, isEmptyOrNotSet, errIfNotSet, err500IfNotSet, errIfEmptyOrNotSet, err500IfEmptyOrNotSet, errXXXIfNotSet, isEmpty, checkAllObjectValuesAreEmpty, checkCtxIntegrity, issetOr as orIsset, getDateAsInt12, humanReadableTimestamp, getDateAsInt, getDateAsObject, isDateIntOrStringValid, isDateIsoOrObjectValid, dateStringToArray, dateArray, dateArrayInt, dateFormatted as dateSlash, dateFormatted, dateOffset, getTimeAsInt, getIntAsTime, isTimeStringValid, getDuration, doDateOverlap, getMonthAsInt, nextWeekDay, addMinutes, addHours, addDays, addMonths, addYears, getYear, getDayOfMonth, getHours, getMinutes, firstDayOfMonth, lastDayOfMonth, differenceInMilliseconds, differenceInSeconds, differenceInMinutes, differenceInHours, differenceInDays, differenceInWeeks, getDateAsInt as convertDateAsInt, getDateAsObject as convertDateAsObject, C, cliProgressBar, cliLoadingSpinner, convertAccentedCharacters, executeInDelayedLoop, timeout, runAsync, waitUntilTrue, transaction, waitForTransaction, getId, mergeMixins, mongoFilterMerger, mongoPush, tryCatch, };
|
package/utils.js
CHANGED
|
@@ -348,7 +348,7 @@ function strAsArray(arrOrStr) {
|
|
|
348
348
|
* /!\ NOTE /!\ In case the value is null or undefined, it will return that value
|
|
349
349
|
*/
|
|
350
350
|
function asArray(item) {
|
|
351
|
-
return typeof item === 'undefined' ? item : Array.isArray(item) ? item : [item];
|
|
351
|
+
return (typeof item === 'undefined' ? item : Array.isArray(item) ? item : [item]);
|
|
352
352
|
}
|
|
353
353
|
/** Array comparison
|
|
354
354
|
* @return {object} { inCommon, notInB, notInA }
|
|
@@ -1006,9 +1006,6 @@ function validator(...paramsToValidate) {
|
|
|
1006
1006
|
}
|
|
1007
1007
|
const restTestMini = {
|
|
1008
1008
|
reset() {
|
|
1009
|
-
restTestMini.nbSuccess = 0;
|
|
1010
|
-
restTestMini.nbError = 0;
|
|
1011
|
-
restTestMini.lastErrors = [];
|
|
1012
1009
|
},
|
|
1013
1010
|
printStats() {
|
|
1014
1011
|
// TODO print last errz
|
|
@@ -1223,7 +1220,12 @@ function humanReadableTimestamp(dateAllFormat) {
|
|
|
1223
1220
|
*/
|
|
1224
1221
|
function getDateAsInt(dateAllFormat = new Date(), errIfNotValid$ = false, withHoursAndMinutes$ = false) {
|
|
1225
1222
|
let dateInt;
|
|
1226
|
-
if (
|
|
1223
|
+
if (typeof dateAllFormat === 'string' && dateAllFormat.includes('/')) {
|
|
1224
|
+
// 01/01/2020 format
|
|
1225
|
+
const [d, m, y] = dateAllFormat.split('/');
|
|
1226
|
+
return y + m.toString().padStart(2, '0') + d.toString().padStart(2, '0');
|
|
1227
|
+
}
|
|
1228
|
+
else if (isDateIntOrStringValid(dateAllFormat)) {
|
|
1227
1229
|
// we can pass an int or string format (20180106)
|
|
1228
1230
|
dateInt = (dateAllFormat + '00000000').substr(0, 12); // add default 000000 for "month days minutes:sec" if not set
|
|
1229
1231
|
}
|
|
@@ -1409,92 +1411,6 @@ function doDateOverlap(event1, event2, fieldNameForStartDate$ = 'startDate', fie
|
|
|
1409
1411
|
return (!event2[fieldNameForEndDate$] || event1[fieldNameForStartDate$] < event2[fieldNameForEndDate$]) && (!event1[fieldNameForEndDate$] || event1[fieldNameForEndDate$] > event2[fieldNameForStartDate$]);
|
|
1410
1412
|
return (!event2[fieldNameForEndDate$] || event1[fieldNameForStartDate$] <= event2[fieldNameForEndDate$]) && (!event1[fieldNameForEndDate$] || event1[fieldNameForEndDate$] >= event2[fieldNameForStartDate$]);
|
|
1411
1413
|
}
|
|
1412
|
-
/** Get all dates at specified days between two dates
|
|
1413
|
-
* @param daysArray [0,1,2,3,4,5,6]
|
|
1414
|
-
* @param {*} startDate all format
|
|
1415
|
-
* @param {*} endDate all format
|
|
1416
|
-
* @param {'int'|'object'} outputFormat default: int
|
|
1417
|
-
*/
|
|
1418
|
-
function getDatesForDaysArrayBetweenTwoDates(daysArray, startDate, endDate, outputFormat = 'int') {
|
|
1419
|
-
const dateArr = [];
|
|
1420
|
-
let actualDate = getDateAsObject(startDate);
|
|
1421
|
-
endDate = getDateAsObject(endDate);
|
|
1422
|
-
while (actualDate <= endDate) {
|
|
1423
|
-
if (daysArray.includes(actualDate.getUTCDay()))
|
|
1424
|
-
dateArr.push(getDateAsObject(actualDate)); // cloned
|
|
1425
|
-
actualDate.setUTCDate(actualDate.getUTCDate() + 1);
|
|
1426
|
-
}
|
|
1427
|
-
return dateArr.map(d => getDateAs(d, outputFormat));
|
|
1428
|
-
}
|
|
1429
|
-
function getEndTimeFromDurationAndStartTime(startTime, duration) {
|
|
1430
|
-
const timeArr = startTime.split(':').map(n => parseInt(n));
|
|
1431
|
-
let endTime = (timeArr[0] * 60 + timeArr[1]) + duration;
|
|
1432
|
-
return {
|
|
1433
|
-
days: Math.floor(endTime / 1440),
|
|
1434
|
-
time: pad(Math.floor((endTime % 1440) / 60)) + ':' + pad(endTime % 60)
|
|
1435
|
-
};
|
|
1436
|
-
}
|
|
1437
|
-
function getDate12FromDateAndTime(dateAllFormat, timeAllFormat) {
|
|
1438
|
-
if (typeof dateAllFormat !== 'number' || dateAllFormat > 99991231 || dateAllFormat < 0)
|
|
1439
|
-
dateAllFormat = getDateAsInt(dateAllFormat);
|
|
1440
|
-
if (typeof timeAllFormat !== 'number' || timeAllFormat > 2359 || timeAllFormat < 0)
|
|
1441
|
-
timeAllFormat = getTimeAsInt(timeAllFormat);
|
|
1442
|
-
return dateAllFormat * 10000 + timeAllFormat;
|
|
1443
|
-
}
|
|
1444
|
-
function eachDayOfInterval(startDateAllFormat, endDateAllFormat, outputFormat = 'int') {
|
|
1445
|
-
const start = getDateAsObject(startDateAllFormat);
|
|
1446
|
-
const end = getDateAsObject(endDateAllFormat);
|
|
1447
|
-
let days = [];
|
|
1448
|
-
let current = new Date();
|
|
1449
|
-
current.setTime(start.getTime());
|
|
1450
|
-
while (current <= end) {
|
|
1451
|
-
days.push(new Date(current.getTime()));
|
|
1452
|
-
current.setTime(current.getTime() + 1000 * 60 * 60 * 24);
|
|
1453
|
-
}
|
|
1454
|
-
return days.map(d => getDateAs(d, outputFormat));
|
|
1455
|
-
}
|
|
1456
|
-
function eachMonthOfInterval(startDateAllFormat, endDateAllFormat) {
|
|
1457
|
-
const months = [];
|
|
1458
|
-
const current = firstDayOfMonth(startDateAllFormat, 'Object');
|
|
1459
|
-
const end = firstDayOfMonth(endDateAllFormat, 'Object');
|
|
1460
|
-
while (current <= end) {
|
|
1461
|
-
months.push(getMonthAsInt(current));
|
|
1462
|
-
current.setUTCMonth(current.getUTCMonth() + 1);
|
|
1463
|
-
}
|
|
1464
|
-
return months;
|
|
1465
|
-
}
|
|
1466
|
-
function isSunday(dateAllFormat = getDateAsInt()) {
|
|
1467
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1468
|
-
return date.getUTCDay() === 0;
|
|
1469
|
-
}
|
|
1470
|
-
function isMonday(dateAllFormat = getDateAsInt()) {
|
|
1471
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1472
|
-
return date.getUTCDay() === 1;
|
|
1473
|
-
}
|
|
1474
|
-
function isTuesday(dateAllFormat = getDateAsInt()) {
|
|
1475
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1476
|
-
return date.getUTCDay() === 2;
|
|
1477
|
-
}
|
|
1478
|
-
function isWednesday(dateAllFormat = getDateAsInt()) {
|
|
1479
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1480
|
-
return date.getUTCDay() === 3;
|
|
1481
|
-
}
|
|
1482
|
-
function isThursday(dateAllFormat = getDateAsInt()) {
|
|
1483
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1484
|
-
return date.getUTCDay() === 4;
|
|
1485
|
-
}
|
|
1486
|
-
function isFriday(dateAllFormat = getDateAsInt()) {
|
|
1487
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1488
|
-
return date.getUTCDay() === 5;
|
|
1489
|
-
}
|
|
1490
|
-
function isSaturday(dateAllFormat = getDateAsInt()) {
|
|
1491
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1492
|
-
return date.getUTCDay() === 6;
|
|
1493
|
-
}
|
|
1494
|
-
function isWeekend(dateAllFormat = getDateAsInt()) {
|
|
1495
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1496
|
-
return date.getUTCDay() === 6 || date.getUTCDay() === 0;
|
|
1497
|
-
}
|
|
1498
1414
|
function nextWeekDay(fromDate, weekDayInt, outputFormat = 'date', sameDayAllowed = false) {
|
|
1499
1415
|
const date = getDateAsObject(fromDate);
|
|
1500
1416
|
if (!isset(weekDayInt))
|
|
@@ -1606,103 +1522,6 @@ function differenceInDays(startDateAllFormat, endDateAllFormat) {
|
|
|
1606
1522
|
function differenceInWeeks(startDateAllFormat, endDateAllFormat) {
|
|
1607
1523
|
return differenceInDays(startDateAllFormat, endDateAllFormat) / 7;
|
|
1608
1524
|
}
|
|
1609
|
-
function differenceInMonths(startDateAllFormat, endDateAllFormat) {
|
|
1610
|
-
const startDate = getDateAsInt(startDateAllFormat);
|
|
1611
|
-
const endDate = getDateAsInt(endDateAllFormat);
|
|
1612
|
-
const monthesForStart = parseInt(getYear(startDate)) * 12 + parseInt(getMonthForHuman(startDate));
|
|
1613
|
-
const monthesForEnd = parseInt(getYear(endDate)) * 12 + parseInt(getMonthForHuman(endDate));
|
|
1614
|
-
if (monthesForStart === monthesForEnd) {
|
|
1615
|
-
const firstDay = firstDayOfMonth(startDate);
|
|
1616
|
-
const lastDay = lastDayOfMonth(endDate);
|
|
1617
|
-
const differenceBetweenStartAndEnd = differenceInDays(startDate, endDate);
|
|
1618
|
-
const numberOfDaysInMonth = differenceInDays(firstDay, lastDay);
|
|
1619
|
-
return round(differenceBetweenStartAndEnd / numberOfDaysInMonth, 2);
|
|
1620
|
-
}
|
|
1621
|
-
const firstDayOfStartDateMonth = firstDayOfMonth(startDate);
|
|
1622
|
-
const lastDayOfStartDateMonth = lastDayOfMonth(startDate);
|
|
1623
|
-
const firstDayOfEndDateMonth = firstDayOfMonth(endDate);
|
|
1624
|
-
const lastDayOfEndDateMonth = lastDayOfMonth(endDate);
|
|
1625
|
-
const differenceBetweenStartDateAndEndOfStartMonth = differenceInDays(startDate, lastDayOfStartDateMonth);
|
|
1626
|
-
const differenceBetweenStartOfEndMonthAndEndDate = differenceInDays(firstDayOfEndDateMonth, endDate);
|
|
1627
|
-
const numberOfDaysInStartMonth = differenceInDays(firstDayOfStartDateMonth, lastDayOfStartDateMonth);
|
|
1628
|
-
const numberOfDaysInEndMonth = differenceInDays(firstDayOfEndDateMonth, lastDayOfEndDateMonth);
|
|
1629
|
-
return round(monthesForEnd - monthesForStart - 1 + differenceBetweenStartDateAndEndOfStartMonth / numberOfDaysInStartMonth + differenceBetweenStartOfEndMonthAndEndDate / numberOfDaysInEndMonth, 2);
|
|
1630
|
-
}
|
|
1631
|
-
/** Will check if that date exists, and if not, this will
|
|
1632
|
-
* Usefull for monthly subscription or reccuring month dates
|
|
1633
|
-
* @param {any} dateAllFormat default: new Date()
|
|
1634
|
-
* @returns {Date} Date object
|
|
1635
|
-
*/
|
|
1636
|
-
function getClosestExistingDateOfMonth(dateAllFormat = getDateAsInt()) {
|
|
1637
|
-
let [day, month, year] = dateArrayInt(dateAllFormat);
|
|
1638
|
-
const zeroBasedMonth = minMax(month - 1, 0, 11);
|
|
1639
|
-
if (!isBetween(month, 1, 12))
|
|
1640
|
-
console.error('Wrong month provided for getClosestExistingDateOfMonth: ' + month + ' Shall be between 1-12. Converted to ' + zeroBasedMonth);
|
|
1641
|
-
let dayNb = minMax(day, 1, 31);
|
|
1642
|
-
let date;
|
|
1643
|
-
let increment = dayNb < 1;
|
|
1644
|
-
let tooMuchRecursionCount = 0;
|
|
1645
|
-
do
|
|
1646
|
-
date = new Date(year, zeroBasedMonth, (increment ? dayNb++ : dayNb--), 12);
|
|
1647
|
-
while (date.getUTCMonth() !== zeroBasedMonth && tooMuchRecursionCount < 99);
|
|
1648
|
-
if (tooMuchRecursionCount)
|
|
1649
|
-
throw new dataValidationUtilErrorHandler(`tooMuchRecursionCount`, 500, { origin: 'getClosestExistingDateOfMonth', day, month, year });
|
|
1650
|
-
return date;
|
|
1651
|
-
}
|
|
1652
|
-
/** Compute the best possible date for next month same day
|
|
1653
|
-
* Usefull for monthly subscription or reccuring month dates
|
|
1654
|
-
* @param {any} dateAllFormat default: new Date()
|
|
1655
|
-
* @param {Boolean} onlyFuture if true return the future date relative to any date in the past, else, it return the next month date possible relative to the dateAllFormat
|
|
1656
|
-
* @returns {Date} Date object
|
|
1657
|
-
*/
|
|
1658
|
-
function getNextMonthlyDate(dateAllFormat = getDateAsInt(), onlyFuture = false) {
|
|
1659
|
-
let [day, month, year] = dateArrayInt(dateAllFormat);
|
|
1660
|
-
day = minMax(day, 1, 31);
|
|
1661
|
-
month = minMax(month, 1, 12);
|
|
1662
|
-
err422IfNotSet({ year, month, day });
|
|
1663
|
-
const isDatePast = getDateAsInt(dateAllFormat) <= getDateAsInt();
|
|
1664
|
-
if (onlyFuture && isDatePast) {
|
|
1665
|
-
let [, todayMonth, todayYear] = dateArrayInt();
|
|
1666
|
-
month = todayMonth;
|
|
1667
|
-
year = todayYear;
|
|
1668
|
-
}
|
|
1669
|
-
let nextMonth;
|
|
1670
|
-
if (month === 12) {
|
|
1671
|
-
nextMonth = 1;
|
|
1672
|
-
year++;
|
|
1673
|
-
}
|
|
1674
|
-
else
|
|
1675
|
-
nextMonth = month + 1;
|
|
1676
|
-
return getClosestExistingDateOfMonth(new Date(year, nextMonth - 1, day));
|
|
1677
|
-
}
|
|
1678
|
-
function getHolidayReferenceYear(dateAllFormat) {
|
|
1679
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1680
|
-
if (date.getUTCMonth() > 4)
|
|
1681
|
-
return date.getUTCFullYear();
|
|
1682
|
-
return date.getUTCFullYear() - 1;
|
|
1683
|
-
}
|
|
1684
|
-
/**
|
|
1685
|
-
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1686
|
-
*/
|
|
1687
|
-
function getFirstDayOfHolidayReferenceYear(dateAllFormat, outputFormat = 'int') {
|
|
1688
|
-
const date = getDateAsObject(dateAllFormat);
|
|
1689
|
-
let year = date.getUTCFullYear();
|
|
1690
|
-
if (date.getUTCMonth() < 4)
|
|
1691
|
-
year = date.getUTCFullYear() - 1;
|
|
1692
|
-
const firstDayAsInt = year + '0601';
|
|
1693
|
-
return getDateAs(firstDayAsInt, outputFormat);
|
|
1694
|
-
}
|
|
1695
|
-
/**
|
|
1696
|
-
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1697
|
-
*/
|
|
1698
|
-
function getLastDayOfHolidayReferenceYear(dateAllFormat, outputFormat = 'int') {
|
|
1699
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1700
|
-
let year = date.getUTCFullYear() + 1;
|
|
1701
|
-
if (date.getUTCMonth() < 4)
|
|
1702
|
-
year = date.getUTCFullYear();
|
|
1703
|
-
const firstDayAsInt = year + '0531';
|
|
1704
|
-
return getDateAs(firstDayAsInt, outputFormat);
|
|
1705
|
-
}
|
|
1706
1525
|
/**
|
|
1707
1526
|
* @param {String} outputDateFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1708
1527
|
*/
|
|
@@ -2352,18 +2171,7 @@ const _ = {
|
|
|
2352
2171
|
isTimeStringValid,
|
|
2353
2172
|
getDuration,
|
|
2354
2173
|
doDateOverlap,
|
|
2355
|
-
getDatesForDaysArrayBetweenTwoDates,
|
|
2356
|
-
getEndTimeFromDurationAndStartTime,
|
|
2357
|
-
getDate12FromDateAndTime,
|
|
2358
2174
|
getMonthAsInt,
|
|
2359
|
-
isSunday,
|
|
2360
|
-
isMonday,
|
|
2361
|
-
isTuesday,
|
|
2362
|
-
isWednesday,
|
|
2363
|
-
isThursday,
|
|
2364
|
-
isFriday,
|
|
2365
|
-
isSaturday,
|
|
2366
|
-
isWeekend,
|
|
2367
2175
|
nextWeekDay,
|
|
2368
2176
|
addMinutes,
|
|
2369
2177
|
addHours,
|
|
@@ -2376,20 +2184,12 @@ const _ = {
|
|
|
2376
2184
|
getMinutes,
|
|
2377
2185
|
firstDayOfMonth,
|
|
2378
2186
|
lastDayOfMonth,
|
|
2379
|
-
eachDayOfInterval,
|
|
2380
|
-
eachMonthOfInterval,
|
|
2381
2187
|
differenceInMilliseconds,
|
|
2382
2188
|
differenceInSeconds,
|
|
2383
2189
|
differenceInMinutes,
|
|
2384
2190
|
differenceInHours,
|
|
2385
2191
|
differenceInDays,
|
|
2386
2192
|
differenceInWeeks,
|
|
2387
|
-
differenceInMonths,
|
|
2388
|
-
getClosestExistingDateOfMonth,
|
|
2389
|
-
getNextMonthlyDate,
|
|
2390
|
-
getHolidayReferenceYear,
|
|
2391
|
-
getFirstDayOfHolidayReferenceYear,
|
|
2392
|
-
getLastDayOfHolidayReferenceYear,
|
|
2393
2193
|
// ALIASES
|
|
2394
2194
|
getDateAsArrayFormatted: dateArray,
|
|
2395
2195
|
getDateAsArray: dateStringToArray,
|
|
@@ -2430,7 +2230,7 @@ issetOr as orIsset,
|
|
|
2430
2230
|
// DATE
|
|
2431
2231
|
getDateAsInt12, humanReadableTimestamp, getDateAsInt, getDateAsObject, isDateIntOrStringValid, isDateIsoOrObjectValid, dateStringToArray, dateArray, dateArrayInt, dateFormatted as dateSlash, dateFormatted, dateOffset, getTimeAsInt, getIntAsTime, isTimeStringValid,
|
|
2432
2232
|
// isDateObject <= see validator.js
|
|
2433
|
-
getDuration, doDateOverlap,
|
|
2233
|
+
getDuration, doDateOverlap, getMonthAsInt, nextWeekDay, addMinutes, addHours, addDays, addMonths, addYears, getYear, getDayOfMonth, getHours, getMinutes, firstDayOfMonth, lastDayOfMonth, differenceInMilliseconds, differenceInSeconds, differenceInMinutes, differenceInHours, differenceInDays, differenceInWeeks,
|
|
2434
2234
|
// ALIASES
|
|
2435
2235
|
getDateAsInt as convertDateAsInt, getDateAsObject as convertDateAsObject,
|
|
2436
2236
|
// LOGGER
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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"}
|
package/utils.ts
CHANGED
|
@@ -189,7 +189,7 @@ function ENV(): { [key: string]: any } {
|
|
|
189
189
|
* @param {any} mayBeAstring
|
|
190
190
|
* @return !!value
|
|
191
191
|
*/
|
|
192
|
-
function parseBool(mayBeAstring: string | boolean): boolean {
|
|
192
|
+
function parseBool(mayBeAstring: string | boolean | number): boolean {
|
|
193
193
|
if (typeof mayBeAstring === 'boolean') return mayBeAstring;
|
|
194
194
|
else return mayBeAstring === 'true' ? true : mayBeAstring === 'false' ? false : !!mayBeAstring;
|
|
195
195
|
}
|
|
@@ -390,8 +390,8 @@ function strAsArray(arrOrStr) {
|
|
|
390
390
|
/** If not an array provided, return the array with the value
|
|
391
391
|
* /!\ NOTE /!\ In case the value is null or undefined, it will return that value
|
|
392
392
|
*/
|
|
393
|
-
function asArray<T>(item: T
|
|
394
|
-
return typeof item === 'undefined' ? item : Array.isArray(item) ? item : [item]
|
|
393
|
+
function asArray<T extends any[] | any>(item: T): T extends undefined ? undefined : T extends any[] ? T : T[] {
|
|
394
|
+
return ((typeof item === 'undefined' ? item : Array.isArray(item) ? item : [item]) as T extends undefined ? undefined : T extends any[] ? T : T[])
|
|
395
395
|
}
|
|
396
396
|
|
|
397
397
|
/** Array comparison
|
|
@@ -1164,9 +1164,6 @@ function validator(...paramsToValidate: ValidatorObject[]) {
|
|
|
1164
1164
|
|
|
1165
1165
|
const restTestMini = {
|
|
1166
1166
|
reset() {
|
|
1167
|
-
restTestMini.nbSuccess = 0
|
|
1168
|
-
restTestMini.nbError = 0
|
|
1169
|
-
restTestMini.lastErrors = []
|
|
1170
1167
|
},
|
|
1171
1168
|
printStats() {
|
|
1172
1169
|
// TODO print last errz
|
|
@@ -1369,7 +1366,7 @@ function err422IfNotSet(o) {
|
|
|
1369
1366
|
if (m.length) throw new dataValidationUtilErrorHandler(`requiredVariableEmptyOrNotSet`, 422, { origin: 'Validator', varNames: m.join(', ') })
|
|
1370
1367
|
}
|
|
1371
1368
|
|
|
1372
|
-
function getDateAsInt12(dateAllFormat?: Date | string | number, errIfNotValid?):
|
|
1369
|
+
function getDateAsInt12(dateAllFormat?: Date | string | number, errIfNotValid?): string { return getDateAsInt(dateAllFormat, errIfNotValid, true); } // alias
|
|
1373
1370
|
|
|
1374
1371
|
function humanReadableTimestamp(dateAllFormat: any): number {
|
|
1375
1372
|
if (isset(dateAllFormat)) dateAllFormat = getDateAsObject(dateAllFormat);
|
|
@@ -1379,9 +1376,13 @@ function humanReadableTimestamp(dateAllFormat: any): number {
|
|
|
1379
1376
|
/** format for 6/8/2018 => 20180806
|
|
1380
1377
|
* @param dateAllFormat multiple format allowed 2012, 20120101, 201201011200, new Date(), "2019-12-08T16:19:10.341Z" and all string that new Date() can parse
|
|
1381
1378
|
*/
|
|
1382
|
-
function getDateAsInt(dateAllFormat: Date | string | number = new Date(), errIfNotValid$ = false, withHoursAndMinutes$ = false):
|
|
1379
|
+
function getDateAsInt(dateAllFormat: Date | string | number = new Date(), errIfNotValid$ = false, withHoursAndMinutes$ = false): string { // optional
|
|
1383
1380
|
let dateInt;
|
|
1384
|
-
if (
|
|
1381
|
+
if (typeof dateAllFormat === 'string' && dateAllFormat.includes('/')) {
|
|
1382
|
+
// 01/01/2020 format
|
|
1383
|
+
const [d, m, y] = dateAllFormat.split('/')
|
|
1384
|
+
return y + m.toString().padStart(2, '0') + d.toString().padStart(2, '0')
|
|
1385
|
+
} else if (isDateIntOrStringValid(dateAllFormat)) {
|
|
1385
1386
|
// we can pass an int or string format (20180106)
|
|
1386
1387
|
dateInt = (dateAllFormat + '00000000').substr(0, 12); // add default 000000 for "month days minutes:sec" if not set
|
|
1387
1388
|
} else {
|
|
@@ -1578,106 +1579,6 @@ function doDateOverlap(event1, event2, fieldNameForStartDate$ = 'startDate', fie
|
|
|
1578
1579
|
return (!event2[fieldNameForEndDate$] || event1[fieldNameForStartDate$] <= event2[fieldNameForEndDate$]) && (!event1[fieldNameForEndDate$] || event1[fieldNameForEndDate$] >= event2[fieldNameForStartDate$]);
|
|
1579
1580
|
}
|
|
1580
1581
|
|
|
1581
|
-
|
|
1582
|
-
/** Get all dates at specified days between two dates
|
|
1583
|
-
* @param daysArray [0,1,2,3,4,5,6]
|
|
1584
|
-
* @param {*} startDate all format
|
|
1585
|
-
* @param {*} endDate all format
|
|
1586
|
-
* @param {'int'|'object'} outputFormat default: int
|
|
1587
|
-
*/
|
|
1588
|
-
function getDatesForDaysArrayBetweenTwoDates(daysArray, startDate, endDate, outputFormat = 'int') {
|
|
1589
|
-
const dateArr = [];
|
|
1590
|
-
let actualDate = getDateAsObject(startDate);
|
|
1591
|
-
endDate = getDateAsObject(endDate);
|
|
1592
|
-
while (actualDate <= endDate) {
|
|
1593
|
-
if (daysArray.includes(actualDate.getUTCDay())) dateArr.push(getDateAsObject(actualDate)); // cloned
|
|
1594
|
-
actualDate.setUTCDate(actualDate.getUTCDate() + 1);
|
|
1595
|
-
}
|
|
1596
|
-
return dateArr.map(d => getDateAs(d, outputFormat));
|
|
1597
|
-
}
|
|
1598
|
-
|
|
1599
|
-
function getEndTimeFromDurationAndStartTime(startTime, duration) {
|
|
1600
|
-
const timeArr = startTime.split(':').map(n => parseInt(n));
|
|
1601
|
-
let endTime = (timeArr[0] * 60 + timeArr[1]) + duration;
|
|
1602
|
-
|
|
1603
|
-
return {
|
|
1604
|
-
days: Math.floor(endTime / 1440),
|
|
1605
|
-
time: pad(Math.floor((endTime % 1440) / 60)) + ':' + pad(endTime % 60)
|
|
1606
|
-
};
|
|
1607
|
-
}
|
|
1608
|
-
|
|
1609
|
-
function getDate12FromDateAndTime(dateAllFormat: Date | string | number, timeAllFormat) {
|
|
1610
|
-
if (typeof dateAllFormat !== 'number' || dateAllFormat > 99991231 || dateAllFormat < 0) dateAllFormat = getDateAsInt(dateAllFormat);
|
|
1611
|
-
|
|
1612
|
-
if (typeof timeAllFormat !== 'number' || timeAllFormat > 2359 || timeAllFormat < 0) timeAllFormat = getTimeAsInt(timeAllFormat);
|
|
1613
|
-
|
|
1614
|
-
return dateAllFormat * 10000 + timeAllFormat;
|
|
1615
|
-
}
|
|
1616
|
-
|
|
1617
|
-
function eachDayOfInterval(startDateAllFormat, endDateAllFormat, outputFormat = 'int') {
|
|
1618
|
-
const start = getDateAsObject(startDateAllFormat);
|
|
1619
|
-
const end = getDateAsObject(endDateAllFormat);
|
|
1620
|
-
let days = [];
|
|
1621
|
-
let current = new Date();
|
|
1622
|
-
current.setTime(start.getTime());
|
|
1623
|
-
while (current <= end) {
|
|
1624
|
-
days.push(new Date(current.getTime()));
|
|
1625
|
-
current.setTime(current.getTime() + 1000 * 60 * 60 * 24);
|
|
1626
|
-
}
|
|
1627
|
-
return days.map(d => getDateAs(d, outputFormat));
|
|
1628
|
-
}
|
|
1629
|
-
|
|
1630
|
-
function eachMonthOfInterval(startDateAllFormat, endDateAllFormat) {
|
|
1631
|
-
const months = [];
|
|
1632
|
-
const current: any = firstDayOfMonth(startDateAllFormat, 'Object');
|
|
1633
|
-
const end = firstDayOfMonth(endDateAllFormat, 'Object');
|
|
1634
|
-
while (current <= end) {
|
|
1635
|
-
months.push(getMonthAsInt(current));
|
|
1636
|
-
current.setUTCMonth(current.getUTCMonth() + 1);
|
|
1637
|
-
}
|
|
1638
|
-
return months;
|
|
1639
|
-
}
|
|
1640
|
-
|
|
1641
|
-
function isSunday(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1642
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1643
|
-
return date.getUTCDay() === 0;
|
|
1644
|
-
}
|
|
1645
|
-
|
|
1646
|
-
function isMonday(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1647
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1648
|
-
return date.getUTCDay() === 1;
|
|
1649
|
-
}
|
|
1650
|
-
|
|
1651
|
-
function isTuesday(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1652
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1653
|
-
return date.getUTCDay() === 2;
|
|
1654
|
-
}
|
|
1655
|
-
|
|
1656
|
-
function isWednesday(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1657
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1658
|
-
return date.getUTCDay() === 3;
|
|
1659
|
-
}
|
|
1660
|
-
|
|
1661
|
-
function isThursday(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1662
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1663
|
-
return date.getUTCDay() === 4;
|
|
1664
|
-
}
|
|
1665
|
-
|
|
1666
|
-
function isFriday(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1667
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1668
|
-
return date.getUTCDay() === 5;
|
|
1669
|
-
}
|
|
1670
|
-
|
|
1671
|
-
function isSaturday(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1672
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1673
|
-
return date.getUTCDay() === 6;
|
|
1674
|
-
}
|
|
1675
|
-
|
|
1676
|
-
function isWeekend(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1677
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1678
|
-
return date.getUTCDay() === 6 || date.getUTCDay() === 0;
|
|
1679
|
-
}
|
|
1680
|
-
|
|
1681
1582
|
type DateAllFormat = 'dateInt8' | 'dateInt12' | 'date' | 'humanReadableTimestamp'
|
|
1682
1583
|
|
|
1683
1584
|
function nextWeekDay(fromDate, weekDayInt?: 0 | 1 | 2 | 3 | 4 | 5 | 6, outputFormat?: 'dateInt8' | 'dateInt12' | 'humanReadableTimestamp', sameDayAllowed?: boolean): number
|
|
@@ -1762,6 +1663,7 @@ function getMinutes(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
|
1762
1663
|
const [, , , , m] = dateStringToArray(dateAsInt);
|
|
1763
1664
|
return m;
|
|
1764
1665
|
}
|
|
1666
|
+
|
|
1765
1667
|
/**
|
|
1766
1668
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1767
1669
|
*/
|
|
@@ -1771,6 +1673,7 @@ function lastDayOfMonth(dateAllFormat: Date | string | number = getDateAsInt(),
|
|
|
1771
1673
|
lastDay.setUTCHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());
|
|
1772
1674
|
return getDateAs(lastDay, outputFormat);
|
|
1773
1675
|
}
|
|
1676
|
+
|
|
1774
1677
|
/**
|
|
1775
1678
|
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1776
1679
|
*/
|
|
@@ -1807,100 +1710,6 @@ function differenceInWeeks(startDateAllFormat, endDateAllFormat) {
|
|
|
1807
1710
|
return differenceInDays(startDateAllFormat, endDateAllFormat) / 7;
|
|
1808
1711
|
}
|
|
1809
1712
|
|
|
1810
|
-
function differenceInMonths(startDateAllFormat, endDateAllFormat) {
|
|
1811
|
-
const startDate = getDateAsInt(startDateAllFormat);
|
|
1812
|
-
const endDate = getDateAsInt(endDateAllFormat);
|
|
1813
|
-
const monthesForStart = parseInt(getYear(startDate)) * 12 + parseInt(getMonthForHuman(startDate));
|
|
1814
|
-
const monthesForEnd = parseInt(getYear(endDate)) * 12 + parseInt(getMonthForHuman(endDate));
|
|
1815
|
-
if (monthesForStart === monthesForEnd) {
|
|
1816
|
-
const firstDay = firstDayOfMonth(startDate);
|
|
1817
|
-
const lastDay = lastDayOfMonth(endDate);
|
|
1818
|
-
const differenceBetweenStartAndEnd = differenceInDays(startDate, endDate);
|
|
1819
|
-
const numberOfDaysInMonth = differenceInDays(firstDay, lastDay);
|
|
1820
|
-
return round(differenceBetweenStartAndEnd / numberOfDaysInMonth, 2);
|
|
1821
|
-
}
|
|
1822
|
-
const firstDayOfStartDateMonth = firstDayOfMonth(startDate);
|
|
1823
|
-
const lastDayOfStartDateMonth = lastDayOfMonth(startDate);
|
|
1824
|
-
const firstDayOfEndDateMonth = firstDayOfMonth(endDate);
|
|
1825
|
-
const lastDayOfEndDateMonth = lastDayOfMonth(endDate);
|
|
1826
|
-
const differenceBetweenStartDateAndEndOfStartMonth = differenceInDays(startDate, lastDayOfStartDateMonth);
|
|
1827
|
-
const differenceBetweenStartOfEndMonthAndEndDate = differenceInDays(firstDayOfEndDateMonth, endDate);
|
|
1828
|
-
const numberOfDaysInStartMonth = differenceInDays(firstDayOfStartDateMonth, lastDayOfStartDateMonth);
|
|
1829
|
-
const numberOfDaysInEndMonth = differenceInDays(firstDayOfEndDateMonth, lastDayOfEndDateMonth);
|
|
1830
|
-
return round(monthesForEnd - monthesForStart - 1 + differenceBetweenStartDateAndEndOfStartMonth / numberOfDaysInStartMonth + differenceBetweenStartOfEndMonthAndEndDate / numberOfDaysInEndMonth, 2);
|
|
1831
|
-
}
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
/** Will check if that date exists, and if not, this will
|
|
1835
|
-
* Usefull for monthly subscription or reccuring month dates
|
|
1836
|
-
* @param {any} dateAllFormat default: new Date()
|
|
1837
|
-
* @returns {Date} Date object
|
|
1838
|
-
*/
|
|
1839
|
-
function getClosestExistingDateOfMonth(dateAllFormat: Date | string | number = getDateAsInt()) {
|
|
1840
|
-
let [day, month, year] = dateArrayInt(dateAllFormat);
|
|
1841
|
-
const zeroBasedMonth = minMax(month - 1, 0, 11);
|
|
1842
|
-
if (!isBetween(month, 1, 12)) console.error('Wrong month provided for getClosestExistingDateOfMonth: ' + month + ' Shall be between 1-12. Converted to ' + zeroBasedMonth);
|
|
1843
|
-
let dayNb = minMax(day, 1, 31);
|
|
1844
|
-
let date;
|
|
1845
|
-
let increment = dayNb < 1;
|
|
1846
|
-
let tooMuchRecursionCount = 0;
|
|
1847
|
-
do date = new Date(year, zeroBasedMonth, (increment ? dayNb++ : dayNb--), 12);
|
|
1848
|
-
while (date.getUTCMonth() !== zeroBasedMonth && tooMuchRecursionCount < 99);
|
|
1849
|
-
if (tooMuchRecursionCount) throw new dataValidationUtilErrorHandler(`tooMuchRecursionCount`, 500, { origin: 'getClosestExistingDateOfMonth', day, month, year });
|
|
1850
|
-
return date;
|
|
1851
|
-
}
|
|
1852
|
-
|
|
1853
|
-
/** Compute the best possible date for next month same day
|
|
1854
|
-
* Usefull for monthly subscription or reccuring month dates
|
|
1855
|
-
* @param {any} dateAllFormat default: new Date()
|
|
1856
|
-
* @param {Boolean} onlyFuture if true return the future date relative to any date in the past, else, it return the next month date possible relative to the dateAllFormat
|
|
1857
|
-
* @returns {Date} Date object
|
|
1858
|
-
*/
|
|
1859
|
-
function getNextMonthlyDate(dateAllFormat: Date | string | number = getDateAsInt(), onlyFuture = false) {
|
|
1860
|
-
let [day, month, year] = dateArrayInt(dateAllFormat);
|
|
1861
|
-
day = minMax(day, 1, 31);
|
|
1862
|
-
month = minMax(month, 1, 12);
|
|
1863
|
-
err422IfNotSet({ year, month, day });
|
|
1864
|
-
const isDatePast = getDateAsInt(dateAllFormat) <= getDateAsInt();
|
|
1865
|
-
if (onlyFuture && isDatePast) {
|
|
1866
|
-
let [, todayMonth, todayYear] = dateArrayInt();
|
|
1867
|
-
month = todayMonth
|
|
1868
|
-
year = todayYear
|
|
1869
|
-
}
|
|
1870
|
-
let nextMonth;
|
|
1871
|
-
if (month === 12) {
|
|
1872
|
-
nextMonth = 1;
|
|
1873
|
-
year++;
|
|
1874
|
-
} else nextMonth = month + 1;
|
|
1875
|
-
return getClosestExistingDateOfMonth(new Date(year, nextMonth - 1, day));
|
|
1876
|
-
}
|
|
1877
|
-
|
|
1878
|
-
function getHolidayReferenceYear(dateAllFormat: Date | string | number) {
|
|
1879
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1880
|
-
if (date.getUTCMonth() > 4) return date.getUTCFullYear();
|
|
1881
|
-
return date.getUTCFullYear() - 1;
|
|
1882
|
-
}
|
|
1883
|
-
/**
|
|
1884
|
-
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1885
|
-
*/
|
|
1886
|
-
function getFirstDayOfHolidayReferenceYear(dateAllFormat: Date | string | number, outputFormat = 'int') {
|
|
1887
|
-
const date = getDateAsObject(dateAllFormat);
|
|
1888
|
-
let year = date.getUTCFullYear();
|
|
1889
|
-
if (date.getUTCMonth() < 4) year = date.getUTCFullYear() - 1;
|
|
1890
|
-
const firstDayAsInt = year + '0601';
|
|
1891
|
-
return getDateAs(firstDayAsInt, outputFormat);
|
|
1892
|
-
}
|
|
1893
|
-
/**
|
|
1894
|
-
* @param {String} outputFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1895
|
-
*/
|
|
1896
|
-
function getLastDayOfHolidayReferenceYear(dateAllFormat: Date | string | number, outputFormat = 'int') {
|
|
1897
|
-
let date = getDateAsObject(dateAllFormat);
|
|
1898
|
-
let year = date.getUTCFullYear() + 1;
|
|
1899
|
-
if (date.getUTCMonth() < 4) year = date.getUTCFullYear();
|
|
1900
|
-
const firstDayAsInt = year + '0531';
|
|
1901
|
-
return getDateAs(firstDayAsInt, outputFormat);
|
|
1902
|
-
}
|
|
1903
|
-
|
|
1904
1713
|
/**
|
|
1905
1714
|
* @param {String} outputDateFormat dateInt, dateInt8, dateInt12, date, humanReadableTimestamp, int (dateInt8)
|
|
1906
1715
|
*/
|
|
@@ -2566,18 +2375,7 @@ const _ = {
|
|
|
2566
2375
|
isTimeStringValid,
|
|
2567
2376
|
getDuration,
|
|
2568
2377
|
doDateOverlap,
|
|
2569
|
-
getDatesForDaysArrayBetweenTwoDates,
|
|
2570
|
-
getEndTimeFromDurationAndStartTime,
|
|
2571
|
-
getDate12FromDateAndTime,
|
|
2572
2378
|
getMonthAsInt,
|
|
2573
|
-
isSunday,
|
|
2574
|
-
isMonday,
|
|
2575
|
-
isTuesday,
|
|
2576
|
-
isWednesday,
|
|
2577
|
-
isThursday,
|
|
2578
|
-
isFriday,
|
|
2579
|
-
isSaturday,
|
|
2580
|
-
isWeekend,
|
|
2581
2379
|
nextWeekDay,
|
|
2582
2380
|
addMinutes,
|
|
2583
2381
|
addHours,
|
|
@@ -2590,20 +2388,12 @@ const _ = {
|
|
|
2590
2388
|
getMinutes,
|
|
2591
2389
|
firstDayOfMonth,
|
|
2592
2390
|
lastDayOfMonth,
|
|
2593
|
-
eachDayOfInterval,
|
|
2594
|
-
eachMonthOfInterval,
|
|
2595
2391
|
differenceInMilliseconds,
|
|
2596
2392
|
differenceInSeconds,
|
|
2597
2393
|
differenceInMinutes,
|
|
2598
2394
|
differenceInHours,
|
|
2599
2395
|
differenceInDays,
|
|
2600
2396
|
differenceInWeeks,
|
|
2601
|
-
differenceInMonths,
|
|
2602
|
-
getClosestExistingDateOfMonth,
|
|
2603
|
-
getNextMonthlyDate,
|
|
2604
|
-
getHolidayReferenceYear,
|
|
2605
|
-
getFirstDayOfHolidayReferenceYear,
|
|
2606
|
-
getLastDayOfHolidayReferenceYear,
|
|
2607
2397
|
// ALIASES
|
|
2608
2398
|
getDateAsArrayFormatted: dateArray,
|
|
2609
2399
|
getDateAsArray: dateStringToArray,
|
|
@@ -2772,18 +2562,7 @@ export {
|
|
|
2772
2562
|
// isDateObject <= see validator.js
|
|
2773
2563
|
getDuration,
|
|
2774
2564
|
doDateOverlap,
|
|
2775
|
-
getDatesForDaysArrayBetweenTwoDates,
|
|
2776
|
-
getEndTimeFromDurationAndStartTime,
|
|
2777
|
-
getDate12FromDateAndTime,
|
|
2778
2565
|
getMonthAsInt,
|
|
2779
|
-
isSunday,
|
|
2780
|
-
isMonday,
|
|
2781
|
-
isTuesday,
|
|
2782
|
-
isWednesday,
|
|
2783
|
-
isThursday,
|
|
2784
|
-
isFriday,
|
|
2785
|
-
isSaturday,
|
|
2786
|
-
isWeekend,
|
|
2787
2566
|
nextWeekDay,
|
|
2788
2567
|
addMinutes,
|
|
2789
2568
|
addHours,
|
|
@@ -2796,20 +2575,12 @@ export {
|
|
|
2796
2575
|
getMinutes,
|
|
2797
2576
|
firstDayOfMonth,
|
|
2798
2577
|
lastDayOfMonth,
|
|
2799
|
-
eachDayOfInterval,
|
|
2800
|
-
eachMonthOfInterval,
|
|
2801
2578
|
differenceInMilliseconds,
|
|
2802
2579
|
differenceInSeconds,
|
|
2803
2580
|
differenceInMinutes,
|
|
2804
2581
|
differenceInHours,
|
|
2805
2582
|
differenceInDays,
|
|
2806
2583
|
differenceInWeeks,
|
|
2807
|
-
differenceInMonths,
|
|
2808
|
-
getClosestExistingDateOfMonth,
|
|
2809
|
-
getNextMonthlyDate,
|
|
2810
|
-
getHolidayReferenceYear,
|
|
2811
|
-
getFirstDayOfHolidayReferenceYear,
|
|
2812
|
-
getLastDayOfHolidayReferenceYear,
|
|
2813
2584
|
// ALIASES
|
|
2814
2585
|
getDateAsInt as convertDateAsInt,
|
|
2815
2586
|
getDateAsObject as convertDateAsObject,
|