@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 CHANGED
@@ -1,5 +1,5 @@
1
1
  import { RecurrenceEnum } from "../enum";
2
- import { DateLike, Numberlike } from "../index";
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
- export declare const formateYYDDMM: (date: Date, locale: string) => string;
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
- * Format a date to a string
33
- * @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
34
- * @returns The formatted date (e.g. "01-01-2026", "01-01-2026 00:00:00", etc.)
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
- * formateToUnixIntegerddLLLyyyy("2026-01-01", "en-US"); // "1 Jan 2026"
42
+ * formateToyyyy("2026-01-01"); // 2026
71
43
  */
72
- export declare const formateToUnixIntegerddLLLyyyy: (date: Numberlike, locale: string) => string;
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
- * formateTDate("2026-01-01", "en-US"); // "1 Jan 2026"
47
+ * addDaysToTimeNowUtcDate(1); // 2026-01-02
81
48
  */
82
- export declare const formateTDate: (date: Date, lang: string) => string;
49
+ export declare const addDaysToTimeNowUtcDate: (dayNumber: number) => Date;
83
50
  /**
84
51
  *
85
- * @returns The current date in Unix integer format
86
- * @example 1719168000
52
+ * @example
53
+ * dateTimeNowUtcUnixInteger(); // 1719168000
87
54
  */
88
55
  export declare const dateTimeNowUtcUnixInteger: () => number;
89
56
  /**
90
- * Format a date to a Unix integer
91
- * @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
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.subtractDaysToDateTime = exports.subtractDaysToDateTimeNowUtc = exports.formateDateUnixInteger = exports.dateTimeNowUtcUnixInteger = exports.formateTDate = exports.formateToUnixIntegerddLLLyyyy = exports.formateDDDateISO = exports.formateddLLDate = exports.formateDDDate = exports.formateMMLongDate = exports.addDaysToTimeNowUtcDate = exports.viewYyformateToYyyy = exports.formateToyyyy = exports.formateToRFC2822 = exports.formateToLLLL = exports.formateTodd = exports.formateToCccc = exports.dateTimeNowUtc = exports.formateToT = exports.formatDateDDMMYYToUtc = exports.formatDateFnsToDdMMYYYYHHmm = exports.formatDateFnsToDdMMYYYY = exports.formateHHmm = exports.formateYYDDMM = exports.formateddLLLyyyy = exports.formateDate = void 0;
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
- let dateReturn = null;
27
- const todaysDate = (0, exports.dateTimeNowUtc)();
28
- const currentYear = todaysDate.getFullYear();
29
- const dateInit = luxon_1.DateTime.fromISO(String(date));
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
- const dateInit = luxon_1.DateTime.fromISO(String(date));
51
- return dateInit.setLocale(locale).toFormat("dd LLL yyyy");
31
+ return (0, date_fns_1.format)(date, "PPp", {
32
+ locale: dataFnsLocale[locale],
33
+ });
52
34
  };
53
35
  exports.formateddLLLyyyy = formateddLLLyyyy;
54
- const formateYYDDMM = (date, locale) => {
55
- const dateInit = luxon_1.DateTime.fromISO(String(date));
56
- return dateInit.setLocale(locale).toFormat("ff");
57
- };
58
- exports.formateYYDDMM = formateYYDDMM;
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
- * Format a date to a string
66
- * @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
67
- * @returns The formatted date (e.g. "01-01-2026", "01-01-2026 00:00:00", etc.)
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 formatDateDDMMYYToUtc = (date, locale) => {
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
- * formateToUnixIntegerddLLLyyyy("2026-01-01", "en-US"); // "1 Jan 2026"
64
+ * formateToyyyy("2026-01-01"); // 2026
139
65
  */
140
- const formateToUnixIntegerddLLLyyyy = (date, locale) => {
141
- const dateInit = luxon_1.DateTime.fromSeconds(Number(date));
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
- * formateTDate("2026-01-01", "en-US"); // "1 Jan 2026"
70
+ * addDaysToTimeNowUtcDate(1); // 2026-01-02
153
71
  */
154
- const formateTDate = (date, lang) => {
155
- return luxon_1.DateTime.fromJSDate(date).setLocale(lang).toFormat("t");
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
- * @returns The current date in Unix integer format
161
- * @example 1719168000
76
+ * @example
77
+ * dateTimeNowUtcUnixInteger(); // 1719168000
162
78
  */
163
- const dateTimeNowUtcUnixInteger = () => luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)()).toUnixInteger();
79
+ const dateTimeNowUtcUnixInteger = () => Number((0, date_fns_1.format)((0, exports.dateTimeNowUtc)(), "T"));
164
80
  exports.dateTimeNowUtcUnixInteger = dateTimeNowUtcUnixInteger;
165
81
  /**
166
- * Format a date to a Unix integer
167
- * @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
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) => luxon_1.DateTime.fromJSDate(date).toUnixInteger();
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 dateNowInit.plus({ days: duration }).toJSDate();
102
+ return (0, date_fns_1.addDays)(dateNowInit, duration);
207
103
  case enum_1.RecurrenceEnum.Weekly:
208
- return dateNowInit.plus({ weeks: duration }).toJSDate();
104
+ return (0, date_fns_1.addWeeks)(dateNowInit, duration);
209
105
  case enum_1.RecurrenceEnum.Monthly: {
210
106
  if (isFutureDate) {
211
- return dateNowInit.plus({ months: duration }).toJSDate();
107
+ return (0, date_fns_1.addMonths)(dateNowInit, duration);
212
108
  }
213
- const now = luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
214
- let nextOccurrence = now.set({ day: dateInit.getDate() });
215
- if (nextOccurrence.toUnixInteger() <= dateNowUnix) {
216
- nextOccurrence = nextOccurrence.plus({ months: duration });
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.toJSDate();
114
+ return nextOccurrence;
219
115
  }
220
116
  case enum_1.RecurrenceEnum.Yearly: {
221
117
  if (isFutureDate) {
222
- return dateNowInit.plus({ years: duration }).toJSDate();
118
+ return (0, date_fns_1.addYears)(dateNowInit, duration);
223
119
  }
224
- const now = luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
225
- let nextOccurrence = now.set({
226
- month: dateInit.getMonth() + 1,
227
- day: dateInit.getDate(),
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 (nextOccurrence.toUnixInteger() <= dateNowUnix) {
230
- nextOccurrence = nextOccurrence.plus({ years: duration });
125
+ if ((0, exports.formateDateUnixInteger)(nextOccurrence) <= dateNowUnix) {
126
+ nextOccurrence = (0, date_fns_1.addYears)(nextOccurrence, duration);
231
127
  }
232
- return nextOccurrence.toJSDate();
128
+ return nextOccurrence;
233
129
  }
234
130
  }
235
131
  };
@@ -1,89 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const _1 = require(".");
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, _1.formateDateUnixInteger)(new Date());
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, _1.dateTimeNowUtc)();
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, _1.dateTimeNowUtcUnixInteger)();
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, _1.formateDateUnixInteger)(new Date());
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
- const dateNow = new Date("2025-07-09 00:00:00+00");
33
- const dateNextMonth = (0, _1.recurrenceDate)({
34
- date: dateNow,
35
- isRecurrence: true,
36
- recurrence: enum_1.RecurrenceEnum.Monthly,
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: enum_1.RecurrenceEnum.Weekly,
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(dateNextMonth).toBeNull();
85
- expect(dateNextYear).toBeNull();
86
- expect(dateNextWeek).toBeNull();
87
- expect(dateNextDay).toBeNull();
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.88","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"}}
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"}}