@molopos/shared 2.0.88 → 2.0.90
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/date/index.d.ts +20 -69
- package/date/index.js +50 -154
- package/date/index.test.js +16 -64
- package/package.json +1 -1
package/date/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RecurrenceEnum } from "../enum";
|
|
2
|
-
import { DateLike
|
|
2
|
+
import { DateLike } from "../index";
|
|
3
3
|
interface PropsRecurrence {
|
|
4
4
|
date: Date;
|
|
5
5
|
duration?: number;
|
|
@@ -7,109 +7,60 @@ interface PropsRecurrence {
|
|
|
7
7
|
recurrence: RecurrenceEnum;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Format a date to a string
|
|
11
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
12
|
-
* @param locale - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
13
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
14
|
-
*
|
|
15
10
|
* @example
|
|
16
|
-
* formateDate("2026-01-01", "en-US"); // "1 Jan 2026"
|
|
11
|
+
* formateDate("2026-01-01", "en-US"); // "1 Jan 2026 00:00"
|
|
17
12
|
*/
|
|
18
13
|
export declare const formateDate: (date: Date, locale: string) => string;
|
|
19
14
|
/**
|
|
20
|
-
* Format a date to a string
|
|
21
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
22
|
-
* @param locale - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
23
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
24
|
-
*
|
|
25
15
|
* @example
|
|
26
16
|
* formateddLLLyyyy("2026-01-01", "en-US"); // "1 Jan 2026"
|
|
27
17
|
*/
|
|
28
18
|
export declare const formateddLLLyyyy: (date: DateLike, locale: string) => string;
|
|
29
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @example
|
|
21
|
+
* formateHHmm("2026-01-01", "en-US"); // "00:00"
|
|
22
|
+
*/
|
|
30
23
|
export declare const formateHHmm: (date: Date, locale: string) => string;
|
|
31
24
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
* @example
|
|
26
|
+
* formatDateDDMMYYToUtc("2026-01-01", "en"); // "01/01/2026"
|
|
27
|
+
*/
|
|
28
|
+
export declare const formatDateDDMMYYToUtc: (date: Date, locale: string) => string;
|
|
29
|
+
/**
|
|
36
30
|
* @example
|
|
37
31
|
* formatDateFnsToDdMMYYYY("2026-01-01"); // "01-01-2026"
|
|
38
32
|
*/
|
|
39
33
|
export declare const formatDateFnsToDdMMYYYY: (date: Date) => string;
|
|
40
34
|
/**
|
|
41
|
-
* Format a date to a string
|
|
42
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
43
|
-
* @returns The formatted date (e.g. "01-01-2026 00:00:00", "01-01-2026 00:00:00", etc.)
|
|
44
|
-
*
|
|
45
35
|
* @example
|
|
46
36
|
* formatDateFnsToDdMMYYYYHHmmss("2026-01-01"); // "01-01-2026 00:00:00"
|
|
47
37
|
*/
|
|
48
38
|
export declare const formatDateFnsToDdMMYYYYHHmm: (date: Date) => string;
|
|
49
|
-
export declare const formatDateDDMMYYToUtc: (date: Date, locale: string) => string;
|
|
50
|
-
export declare const formateToT: (date: Date) => string;
|
|
51
39
|
export declare const dateTimeNowUtc: () => Date;
|
|
52
|
-
export declare const formateToCccc: (date: Date, locale: string) => string;
|
|
53
|
-
export declare const formateTodd: (date: Date, locale: string) => string;
|
|
54
|
-
export declare const formateToLLLL: (date: Date, locale: string) => string;
|
|
55
|
-
export declare const formateToRFC2822: (date: Date, locale: string) => string;
|
|
56
|
-
export declare const formateToyyyy: (date: Date) => string;
|
|
57
|
-
export declare const viewYyformateToYyyy: (date: Date) => string;
|
|
58
|
-
export declare const addDaysToTimeNowUtcDate: (dayNumber: number) => Date;
|
|
59
|
-
export declare const formateMMLongDate: (date: Date, locale: string) => string;
|
|
60
|
-
export declare const formateDDDate: (date: Date, lang: string) => string;
|
|
61
|
-
export declare const formateddLLDate: (date: Date, lang: string) => string;
|
|
62
|
-
export declare const formateDDDateISO: (date: Date, locale: string) => string;
|
|
63
40
|
/**
|
|
64
|
-
* Format a date to a string
|
|
65
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
66
|
-
* @param locale - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
67
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
68
|
-
*
|
|
69
41
|
* @example
|
|
70
|
-
*
|
|
42
|
+
* formateToyyyy("2026-01-01"); // 2026
|
|
71
43
|
*/
|
|
72
|
-
export declare const
|
|
44
|
+
export declare const formateToyyyy: (date: Date) => number;
|
|
73
45
|
/**
|
|
74
|
-
* Format a date to a string
|
|
75
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
76
|
-
* @param lang - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
77
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
78
|
-
*
|
|
79
46
|
* @example
|
|
80
|
-
*
|
|
47
|
+
* addDaysToTimeNowUtcDate(1); // 2026-01-02
|
|
81
48
|
*/
|
|
82
|
-
export declare const
|
|
49
|
+
export declare const addDaysToTimeNowUtcDate: (dayNumber: number) => Date;
|
|
83
50
|
/**
|
|
84
51
|
*
|
|
85
|
-
* @
|
|
86
|
-
*
|
|
52
|
+
* @example
|
|
53
|
+
* dateTimeNowUtcUnixInteger(); // 1719168000
|
|
87
54
|
*/
|
|
88
55
|
export declare const dateTimeNowUtcUnixInteger: () => number;
|
|
89
56
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* @returns The formatted date in Unix integer format
|
|
93
|
-
* @example 1719168000
|
|
57
|
+
* @example
|
|
58
|
+
* formateDateUnixInteger("2026-01-01"); // 1719168000
|
|
94
59
|
*/
|
|
95
60
|
export declare const formateDateUnixInteger: (date: Date) => number;
|
|
96
|
-
/**
|
|
97
|
-
* Subtract days from the current date
|
|
98
|
-
* @param value - The number of days to subtract
|
|
99
|
-
* @returns The date minus the number of days
|
|
100
|
-
* @example 2026-01-01
|
|
101
|
-
*/
|
|
102
|
-
export declare const subtractDaysToDateTimeNowUtc: (value: number) => Date;
|
|
103
|
-
/**
|
|
104
|
-
* Subtract days from the current date
|
|
105
|
-
* @param value - The number of days to subtract
|
|
106
|
-
* @returns The date minus the number of days
|
|
107
|
-
* @example 2026-01-01
|
|
108
|
-
*/
|
|
109
|
-
export declare const subtractDaysToDateTime: (date: Date, value: number) => Date;
|
|
110
61
|
/**
|
|
111
62
|
* @example
|
|
112
63
|
* recurrenceDate({ date: new Date(), recurrence: RecurrenceEnum.Monthly }) // 23/06/2026
|
|
113
64
|
*/
|
|
114
|
-
export declare const recurrenceDate: ({ date, recurrence, duration, isRecurrence, }: PropsRecurrence) => Date;
|
|
65
|
+
export declare const recurrenceDate: ({ date, recurrence, duration, isRecurrence, }: PropsRecurrence) => Date | null;
|
|
115
66
|
export {};
|
package/date/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.recurrenceDate = exports.
|
|
3
|
+
exports.recurrenceDate = exports.formateDateUnixInteger = exports.dateTimeNowUtcUnixInteger = exports.addDaysToTimeNowUtcDate = exports.formateToyyyy = exports.dateTimeNowUtc = exports.formatDateFnsToDdMMYYYYHHmm = exports.formatDateFnsToDdMMYYYY = exports.formatDateDDMMYYToUtc = exports.formateHHmm = exports.formateddLLLyyyy = exports.formateDate = void 0;
|
|
4
4
|
const date_fns_1 = require("date-fns");
|
|
5
5
|
const locale_1 = require("date-fns/locale");
|
|
6
|
-
const luxon_1 = require("luxon");
|
|
7
6
|
const enum_1 = require("../enum");
|
|
8
7
|
const dataFnsLocale = {
|
|
9
8
|
es: locale_1.es,
|
|
@@ -14,178 +13,77 @@ const dataFnsLocale = {
|
|
|
14
13
|
de: locale_1.de,
|
|
15
14
|
};
|
|
16
15
|
/**
|
|
17
|
-
* Format a date to a string
|
|
18
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
19
|
-
* @param locale - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
20
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
21
|
-
*
|
|
22
16
|
* @example
|
|
23
|
-
* formateDate("2026-01-01", "en-US"); // "1 Jan 2026"
|
|
17
|
+
* formateDate("2026-01-01", "en-US"); // "1 Jan 2026 00:00"
|
|
24
18
|
*/
|
|
25
19
|
const formateDate = (date, locale) => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const dateYear = Number(dateInit.toFormat("yyyy"));
|
|
31
|
-
if (currentYear === dateYear) {
|
|
32
|
-
dateReturn = dateInit.setLocale(locale).toFormat("dd MMM HH:mm");
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
dateReturn = (0, exports.formatDateDDMMYYToUtc)(date, locale);
|
|
36
|
-
}
|
|
37
|
-
return dateReturn;
|
|
20
|
+
const formatString = locale !== "en" ? "dd MMM p" : "MMM dd p";
|
|
21
|
+
return (0, date_fns_1.format)(date, (0, date_fns_1.isThisYear)(date) ? formatString : "P", {
|
|
22
|
+
locale: dataFnsLocale[locale],
|
|
23
|
+
});
|
|
38
24
|
};
|
|
39
25
|
exports.formateDate = formateDate;
|
|
40
26
|
/**
|
|
41
|
-
* Format a date to a string
|
|
42
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
43
|
-
* @param locale - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
44
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
45
|
-
*
|
|
46
27
|
* @example
|
|
47
28
|
* formateddLLLyyyy("2026-01-01", "en-US"); // "1 Jan 2026"
|
|
48
29
|
*/
|
|
49
30
|
const formateddLLLyyyy = (date, locale) => {
|
|
50
|
-
|
|
51
|
-
|
|
31
|
+
return (0, date_fns_1.format)(date, "PPp", {
|
|
32
|
+
locale: dataFnsLocale[locale],
|
|
33
|
+
});
|
|
52
34
|
};
|
|
53
35
|
exports.formateddLLLyyyy = formateddLLLyyyy;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const formateHHmm = (date, locale) => {
|
|
60
|
-
const dateInit = luxon_1.DateTime.fromISO(String(date));
|
|
61
|
-
return dateInit.setLocale(locale).toFormat("t");
|
|
62
|
-
};
|
|
36
|
+
/**
|
|
37
|
+
* @example
|
|
38
|
+
* formateHHmm("2026-01-01", "en-US"); // "00:00"
|
|
39
|
+
*/
|
|
40
|
+
const formateHHmm = (date, locale) => (0, date_fns_1.format)(date, "p", { locale: dataFnsLocale[locale] });
|
|
63
41
|
exports.formateHHmm = formateHHmm;
|
|
64
42
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
|
|
68
|
-
|
|
43
|
+
* @example
|
|
44
|
+
* formatDateDDMMYYToUtc("2026-01-01", "en"); // "01/01/2026"
|
|
45
|
+
*/
|
|
46
|
+
const formatDateDDMMYYToUtc = (date, locale) => (0, date_fns_1.format)(date, "P", { locale: dataFnsLocale[locale] });
|
|
47
|
+
exports.formatDateDDMMYYToUtc = formatDateDDMMYYToUtc;
|
|
48
|
+
/**
|
|
69
49
|
* @example
|
|
70
50
|
* formatDateFnsToDdMMYYYY("2026-01-01"); // "01-01-2026"
|
|
71
51
|
*/
|
|
72
52
|
const formatDateFnsToDdMMYYYY = (date) => (0, date_fns_1.format)(date, "dd-MM-yyyy");
|
|
73
53
|
exports.formatDateFnsToDdMMYYYY = formatDateFnsToDdMMYYYY;
|
|
74
54
|
/**
|
|
75
|
-
* Format a date to a string
|
|
76
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
77
|
-
* @returns The formatted date (e.g. "01-01-2026 00:00:00", "01-01-2026 00:00:00", etc.)
|
|
78
|
-
*
|
|
79
55
|
* @example
|
|
80
56
|
* formatDateFnsToDdMMYYYYHHmmss("2026-01-01"); // "01-01-2026 00:00:00"
|
|
81
57
|
*/
|
|
82
58
|
const formatDateFnsToDdMMYYYYHHmm = (date) => (0, date_fns_1.format)(date, "dd-MM-yyyy HH:mm");
|
|
83
59
|
exports.formatDateFnsToDdMMYYYYHHmm = formatDateFnsToDdMMYYYYHHmm;
|
|
84
|
-
const
|
|
85
|
-
const dateInit = luxon_1.DateTime.fromISO(String(date));
|
|
86
|
-
return dateInit.setLocale(locale).toFormat("D");
|
|
87
|
-
};
|
|
88
|
-
exports.formatDateDDMMYYToUtc = formatDateDDMMYYToUtc;
|
|
89
|
-
const formateToT = (date) => luxon_1.DateTime.fromJSDate(date).toFormat("T");
|
|
90
|
-
exports.formateToT = formateToT;
|
|
91
|
-
const dateTimeNowUtc = () => luxon_1.DateTime.utc().toJSDate();
|
|
60
|
+
const dateTimeNowUtc = () => new Date();
|
|
92
61
|
exports.dateTimeNowUtc = dateTimeNowUtc;
|
|
93
|
-
const formateToCccc = (date, locale) => luxon_1.DateTime.fromISO(String(date)).setLocale(locale).toFormat("cccc");
|
|
94
|
-
exports.formateToCccc = formateToCccc;
|
|
95
|
-
const formateTodd = (date, locale) => luxon_1.DateTime.fromISO(String(date)).setLocale(locale).toFormat("dd");
|
|
96
|
-
exports.formateTodd = formateTodd;
|
|
97
|
-
const formateToLLLL = (date, locale) => luxon_1.DateTime.fromISO(String(date)).setLocale(locale).toFormat("LLLL");
|
|
98
|
-
exports.formateToLLLL = formateToLLLL;
|
|
99
|
-
const formateToRFC2822 = (date, locale) => luxon_1.DateTime.fromISO(String(date)).setLocale(locale).toFormat("DDDD");
|
|
100
|
-
exports.formateToRFC2822 = formateToRFC2822;
|
|
101
|
-
const formateToyyyy = (date) => luxon_1.DateTime.fromISO(String(date)).toFormat("yyyy");
|
|
102
|
-
exports.formateToyyyy = formateToyyyy;
|
|
103
|
-
const viewYyformateToYyyy = (date) => {
|
|
104
|
-
const todaysDate = new Date();
|
|
105
|
-
const currentYear = todaysDate.getFullYear();
|
|
106
|
-
const dateYear = Number(luxon_1.DateTime.fromISO(String(date)).toFormat("yyyy"));
|
|
107
|
-
return currentYear === dateYear ? null : `- ${dateYear}`;
|
|
108
|
-
};
|
|
109
|
-
exports.viewYyformateToYyyy = viewYyformateToYyyy;
|
|
110
|
-
const addDaysToTimeNowUtcDate = (dayNumber) => luxon_1.DateTime.utc().plus({ days: dayNumber }).toJSDate();
|
|
111
|
-
exports.addDaysToTimeNowUtcDate = addDaysToTimeNowUtcDate;
|
|
112
|
-
const formateMMLongDate = (date, locale) => {
|
|
113
|
-
return luxon_1.DateTime.fromJSDate(date)
|
|
114
|
-
.setLocale(locale)
|
|
115
|
-
.toLocaleString({ month: "long" });
|
|
116
|
-
};
|
|
117
|
-
exports.formateMMLongDate = formateMMLongDate;
|
|
118
|
-
const formateDDDate = (date, lang) => {
|
|
119
|
-
return luxon_1.DateTime.fromJSDate(date).setLocale(lang).toFormat("DD");
|
|
120
|
-
};
|
|
121
|
-
exports.formateDDDate = formateDDDate;
|
|
122
|
-
const formateddLLDate = (date, lang) => {
|
|
123
|
-
return luxon_1.DateTime.fromJSDate(date).setLocale(lang).toFormat("dd LLL");
|
|
124
|
-
};
|
|
125
|
-
exports.formateddLLDate = formateddLLDate;
|
|
126
|
-
const formateDDDateISO = (date, locale) => {
|
|
127
|
-
const dateInit = luxon_1.DateTime.fromISO(String(date));
|
|
128
|
-
return dateInit.setLocale(locale).toFormat("DD");
|
|
129
|
-
};
|
|
130
|
-
exports.formateDDDateISO = formateDDDateISO;
|
|
131
62
|
/**
|
|
132
|
-
* Format a date to a string
|
|
133
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
134
|
-
* @param locale - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
135
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
136
|
-
*
|
|
137
63
|
* @example
|
|
138
|
-
*
|
|
64
|
+
* formateToyyyy("2026-01-01"); // 2026
|
|
139
65
|
*/
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
return dateInit.setLocale(locale).toFormat("dd LLL yyyy");
|
|
143
|
-
};
|
|
144
|
-
exports.formateToUnixIntegerddLLLyyyy = formateToUnixIntegerddLLLyyyy;
|
|
66
|
+
const formateToyyyy = (date) => (0, date_fns_1.getYear)(date);
|
|
67
|
+
exports.formateToyyyy = formateToyyyy;
|
|
145
68
|
/**
|
|
146
|
-
* Format a date to a string
|
|
147
|
-
* @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
|
|
148
|
-
* @param lang - The locale to use (e.g. "en-US", "it-IT", "fr-FR", etc.)
|
|
149
|
-
* @returns The formatted date (e.g. "1 Jan 2026", "1 Jan 2026 00:00", etc.)
|
|
150
|
-
*
|
|
151
69
|
* @example
|
|
152
|
-
*
|
|
70
|
+
* addDaysToTimeNowUtcDate(1); // 2026-01-02
|
|
153
71
|
*/
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
};
|
|
157
|
-
exports.formateTDate = formateTDate;
|
|
72
|
+
const addDaysToTimeNowUtcDate = (dayNumber) => (0, date_fns_1.addDays)((0, exports.dateTimeNowUtc)(), dayNumber);
|
|
73
|
+
exports.addDaysToTimeNowUtcDate = addDaysToTimeNowUtcDate;
|
|
158
74
|
/**
|
|
159
75
|
*
|
|
160
|
-
* @
|
|
161
|
-
*
|
|
76
|
+
* @example
|
|
77
|
+
* dateTimeNowUtcUnixInteger(); // 1719168000
|
|
162
78
|
*/
|
|
163
|
-
const dateTimeNowUtcUnixInteger = () =>
|
|
79
|
+
const dateTimeNowUtcUnixInteger = () => Number((0, date_fns_1.format)((0, exports.dateTimeNowUtc)(), "T"));
|
|
164
80
|
exports.dateTimeNowUtcUnixInteger = dateTimeNowUtcUnixInteger;
|
|
165
81
|
/**
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
* @returns The formatted date in Unix integer format
|
|
169
|
-
* @example 1719168000
|
|
82
|
+
* @example
|
|
83
|
+
* formateDateUnixInteger("2026-01-01"); // 1719168000
|
|
170
84
|
*/
|
|
171
|
-
const formateDateUnixInteger = (date) =>
|
|
85
|
+
const formateDateUnixInteger = (date) => Number((0, date_fns_1.format)(date, "T"));
|
|
172
86
|
exports.formateDateUnixInteger = formateDateUnixInteger;
|
|
173
|
-
/**
|
|
174
|
-
* Subtract days from the current date
|
|
175
|
-
* @param value - The number of days to subtract
|
|
176
|
-
* @returns The date minus the number of days
|
|
177
|
-
* @example 2026-01-01
|
|
178
|
-
*/
|
|
179
|
-
const subtractDaysToDateTimeNowUtc = (value) => luxon_1.DateTime.utc().minus({ days: value }).toJSDate();
|
|
180
|
-
exports.subtractDaysToDateTimeNowUtc = subtractDaysToDateTimeNowUtc;
|
|
181
|
-
/**
|
|
182
|
-
* Subtract days from the current date
|
|
183
|
-
* @param value - The number of days to subtract
|
|
184
|
-
* @returns The date minus the number of days
|
|
185
|
-
* @example 2026-01-01
|
|
186
|
-
*/
|
|
187
|
-
const subtractDaysToDateTime = (date, value) => luxon_1.DateTime.fromJSDate(date).minus({ days: value }).toJSDate();
|
|
188
|
-
exports.subtractDaysToDateTime = subtractDaysToDateTime;
|
|
189
87
|
/**
|
|
190
88
|
* @example
|
|
191
89
|
* recurrenceDate({ date: new Date(), recurrence: RecurrenceEnum.Monthly }) // 23/06/2026
|
|
@@ -198,38 +96,36 @@ const recurrenceDate = ({ date, recurrence, duration = 1, isRecurrence = false,
|
|
|
198
96
|
const dateNowUnix = (0, exports.dateTimeNowUtcUnixInteger)();
|
|
199
97
|
const dateUnix = (0, exports.formateDateUnixInteger)(dateInit);
|
|
200
98
|
const isFutureDate = dateUnix > dateNowUnix;
|
|
201
|
-
const dateNowInit = isFutureDate
|
|
202
|
-
? luxon_1.DateTime.fromJSDate(dateInit)
|
|
203
|
-
: luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
|
|
99
|
+
const dateNowInit = isFutureDate ? dateInit : (0, exports.dateTimeNowUtc)();
|
|
204
100
|
switch (recurrence) {
|
|
205
101
|
case enum_1.RecurrenceEnum.Daily:
|
|
206
|
-
return
|
|
102
|
+
return (0, date_fns_1.addDays)(dateNowInit, duration);
|
|
207
103
|
case enum_1.RecurrenceEnum.Weekly:
|
|
208
|
-
return
|
|
104
|
+
return (0, date_fns_1.addWeeks)(dateNowInit, duration);
|
|
209
105
|
case enum_1.RecurrenceEnum.Monthly: {
|
|
210
106
|
if (isFutureDate) {
|
|
211
|
-
return
|
|
107
|
+
return (0, date_fns_1.addMonths)(dateNowInit, duration);
|
|
212
108
|
}
|
|
213
|
-
const now =
|
|
214
|
-
let nextOccurrence =
|
|
215
|
-
if (
|
|
216
|
-
nextOccurrence =
|
|
109
|
+
const now = (0, exports.dateTimeNowUtc)();
|
|
110
|
+
let nextOccurrence = (0, date_fns_1.setDate)(now, dateInit.getDate());
|
|
111
|
+
if ((0, exports.formateDateUnixInteger)(nextOccurrence) <= dateNowUnix) {
|
|
112
|
+
nextOccurrence = (0, date_fns_1.addMonths)(nextOccurrence, duration);
|
|
217
113
|
}
|
|
218
|
-
return nextOccurrence
|
|
114
|
+
return nextOccurrence;
|
|
219
115
|
}
|
|
220
116
|
case enum_1.RecurrenceEnum.Yearly: {
|
|
221
117
|
if (isFutureDate) {
|
|
222
|
-
return
|
|
118
|
+
return (0, date_fns_1.addYears)(dateNowInit, duration);
|
|
223
119
|
}
|
|
224
|
-
const now =
|
|
225
|
-
let nextOccurrence =
|
|
226
|
-
month: dateInit.getMonth()
|
|
227
|
-
|
|
120
|
+
const now = (0, exports.dateTimeNowUtc)();
|
|
121
|
+
let nextOccurrence = (0, date_fns_1.set)(now, {
|
|
122
|
+
month: dateInit.getMonth(),
|
|
123
|
+
date: dateInit.getDate(),
|
|
228
124
|
});
|
|
229
|
-
if (
|
|
230
|
-
nextOccurrence =
|
|
125
|
+
if ((0, exports.formateDateUnixInteger)(nextOccurrence) <= dateNowUnix) {
|
|
126
|
+
nextOccurrence = (0, date_fns_1.addYears)(nextOccurrence, duration);
|
|
231
127
|
}
|
|
232
|
-
return nextOccurrence
|
|
128
|
+
return nextOccurrence;
|
|
233
129
|
}
|
|
234
130
|
}
|
|
235
131
|
};
|
package/date/index.test.js
CHANGED
|
@@ -1,89 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const index_1 = require("./index");
|
|
4
4
|
const enum_1 = require("../enum");
|
|
5
5
|
describe("Date", () => {
|
|
6
6
|
it("formateDDDateISO", () => {
|
|
7
|
-
const dateNow = (0,
|
|
7
|
+
const dateNow = (0, index_1.formateDateUnixInteger)(new Date());
|
|
8
8
|
expect(dateNow).not.toBeNull();
|
|
9
9
|
expect(dateNow).toBeDefined();
|
|
10
10
|
});
|
|
11
11
|
it("dateTimeNowUtc", () => {
|
|
12
|
-
const dateNow = (0,
|
|
12
|
+
const dateNow = (0, index_1.dateTimeNowUtc)();
|
|
13
13
|
expect(dateNow).not.toBeNull();
|
|
14
14
|
expect(dateNow).toBeDefined();
|
|
15
15
|
});
|
|
16
16
|
it("dateTimeNowUtcUnixInteger", () => {
|
|
17
|
-
const dateNow = (0,
|
|
17
|
+
const dateNow = (0, index_1.dateTimeNowUtcUnixInteger)();
|
|
18
18
|
expect(dateNow).not.toBeNull();
|
|
19
19
|
expect(dateNow).toBeDefined();
|
|
20
20
|
});
|
|
21
21
|
it("formateDateUnixInteger", () => {
|
|
22
|
-
const dateNow = (0,
|
|
23
|
-
expect(dateNow).not.toBeNull();
|
|
24
|
-
expect(dateNow).toBeDefined();
|
|
25
|
-
});
|
|
26
|
-
it("subtractDaysToDateTimeNowUtc", () => {
|
|
27
|
-
const dateNow = (0, _1.subtractDaysToDateTimeNowUtc)(1);
|
|
22
|
+
const dateNow = (0, index_1.formateDateUnixInteger)(new Date());
|
|
28
23
|
expect(dateNow).not.toBeNull();
|
|
29
24
|
expect(dateNow).toBeDefined();
|
|
30
25
|
});
|
|
31
26
|
it("recurrenceDate isRecurrence = true", () => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
38
|
-
const dateNextYear = (0, _1.recurrenceDate)({
|
|
39
|
-
date: dateNow,
|
|
40
|
-
isRecurrence: true,
|
|
41
|
-
recurrence: enum_1.RecurrenceEnum.Yearly,
|
|
42
|
-
});
|
|
43
|
-
const dateNextWeek = (0, _1.recurrenceDate)({
|
|
44
|
-
date: dateNow,
|
|
27
|
+
jest.useFakeTimers();
|
|
28
|
+
jest.setSystemTime(new Date(2026, 9, 1, 14, 0, 0));
|
|
29
|
+
const date = new Date(2025, 6, 10, 2, 0, 0);
|
|
30
|
+
const nextDate = (recurrence) => (0, index_1.recurrenceDate)({
|
|
31
|
+
date,
|
|
45
32
|
isRecurrence: true,
|
|
46
|
-
recurrence
|
|
47
|
-
});
|
|
48
|
-
const dateNextDay = (0, _1.recurrenceDate)({
|
|
49
|
-
date: dateNow,
|
|
50
|
-
isRecurrence: true,
|
|
51
|
-
recurrence: enum_1.RecurrenceEnum.Daily,
|
|
52
|
-
});
|
|
53
|
-
expect(dateNextDay).not.toBeNull();
|
|
54
|
-
expect(dateNextYear).not.toBeNull();
|
|
55
|
-
expect(dateNextMonth).not.toBeNull();
|
|
56
|
-
expect(dateNextWeek).not.toBeNull();
|
|
57
|
-
expect(dateNextDay).toBeDefined();
|
|
58
|
-
expect(dateNextYear).toBeDefined();
|
|
59
|
-
expect(dateNextMonth).toBeDefined();
|
|
60
|
-
expect(dateNextWeek).toBeDefined();
|
|
61
|
-
});
|
|
62
|
-
it("recurrenceDate isRecurrence = false", () => {
|
|
63
|
-
const dateNow = new Date("2025-07-10 00:00:00+00");
|
|
64
|
-
const dateNextMonth = (0, _1.recurrenceDate)({
|
|
65
|
-
date: dateNow,
|
|
66
|
-
isRecurrence: false,
|
|
67
|
-
recurrence: enum_1.RecurrenceEnum.Monthly,
|
|
68
|
-
});
|
|
69
|
-
const dateNextYear = (0, _1.recurrenceDate)({
|
|
70
|
-
date: dateNow,
|
|
71
|
-
isRecurrence: false,
|
|
72
|
-
recurrence: enum_1.RecurrenceEnum.Yearly,
|
|
73
|
-
});
|
|
74
|
-
const dateNextWeek = (0, _1.recurrenceDate)({
|
|
75
|
-
date: dateNow,
|
|
76
|
-
isRecurrence: false,
|
|
77
|
-
recurrence: enum_1.RecurrenceEnum.Weekly,
|
|
78
|
-
});
|
|
79
|
-
const dateNextDay = (0, _1.recurrenceDate)({
|
|
80
|
-
date: dateNow,
|
|
81
|
-
isRecurrence: false,
|
|
82
|
-
recurrence: enum_1.RecurrenceEnum.Daily,
|
|
33
|
+
recurrence,
|
|
83
34
|
});
|
|
84
|
-
expect(
|
|
85
|
-
expect(
|
|
86
|
-
expect(
|
|
87
|
-
expect(
|
|
35
|
+
expect(nextDate(enum_1.RecurrenceEnum.Daily)).toEqual(new Date(2026, 9, 2, 14, 0, 0));
|
|
36
|
+
expect(nextDate(enum_1.RecurrenceEnum.Weekly)).toEqual(new Date(2026, 9, 8, 14, 0, 0));
|
|
37
|
+
expect(nextDate(enum_1.RecurrenceEnum.Monthly)).toEqual(new Date(2026, 9, 10, 14, 0, 0));
|
|
38
|
+
expect(nextDate(enum_1.RecurrenceEnum.Yearly)).toEqual(new Date(2027, 6, 10, 14, 0, 0));
|
|
39
|
+
jest.useRealTimers();
|
|
88
40
|
});
|
|
89
41
|
});
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@molopos/shared","publishConfig":{"access":"public"},"version":"2.0.
|
|
1
|
+
{"name":"@molopos/shared","publishConfig":{"access":"public"},"version":"2.0.90","description":"Shared between backend and frontend repos","license":"ISC","repository":{"type":"git","url":"https://github.com/unicubate/molopos-shared.git"},"dependencies":{"class-transformer":"^0.5.1","date-fns":"^4.4.0","luxon":"^3.7.2"}}
|