@molopos/shared 2.0.57 → 2.0.60
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.js +24 -7
- package/date/index.test.js +7 -7
- package/package.json +1 -1
package/date/index.js
CHANGED
|
@@ -167,11 +167,16 @@ const recurrenceDate = ({ date, recurrence, duration = 1, isRecurrence = false,
|
|
|
167
167
|
if (!isRecurrence) {
|
|
168
168
|
return null;
|
|
169
169
|
}
|
|
170
|
-
const
|
|
171
|
-
const
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
170
|
+
const dateNowUnix = (0, exports.dateTimeNowUtcUnixInteger)();
|
|
171
|
+
const dateUnix = (0, exports.formateDateUnixInteger)(date);
|
|
172
|
+
const isFutureDate = dateUnix > dateNowUnix;
|
|
173
|
+
const dateNowInit = recurrence === enum_1.RecurrenceEnum.Monthly
|
|
174
|
+
? isFutureDate
|
|
175
|
+
? luxon_1.DateTime.fromJSDate(date)
|
|
176
|
+
: luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)()).set({ day: date.getDate() })
|
|
177
|
+
: isFutureDate
|
|
178
|
+
? luxon_1.DateTime.fromJSDate(date)
|
|
179
|
+
: luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
|
|
175
180
|
switch (recurrence) {
|
|
176
181
|
case enum_1.RecurrenceEnum.Daily:
|
|
177
182
|
return dateNowInit.plus({ days: duration }).toJSDate();
|
|
@@ -179,8 +184,20 @@ const recurrenceDate = ({ date, recurrence, duration = 1, isRecurrence = false,
|
|
|
179
184
|
return dateNowInit.plus({ weeks: duration }).toJSDate();
|
|
180
185
|
case enum_1.RecurrenceEnum.Monthly:
|
|
181
186
|
return dateNowInit.plus({ months: duration }).toJSDate();
|
|
182
|
-
case enum_1.RecurrenceEnum.Yearly:
|
|
183
|
-
|
|
187
|
+
case enum_1.RecurrenceEnum.Yearly: {
|
|
188
|
+
if (isFutureDate) {
|
|
189
|
+
return dateNowInit.plus({ years: duration }).toJSDate();
|
|
190
|
+
}
|
|
191
|
+
const now = luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
|
|
192
|
+
let nextOccurrence = now.set({
|
|
193
|
+
month: date.getMonth() + 1,
|
|
194
|
+
day: date.getDate(),
|
|
195
|
+
});
|
|
196
|
+
if (nextOccurrence.toUnixInteger() <= dateNowUnix) {
|
|
197
|
+
nextOccurrence = nextOccurrence.plus({ years: duration });
|
|
198
|
+
}
|
|
199
|
+
return nextOccurrence.toJSDate();
|
|
200
|
+
}
|
|
184
201
|
}
|
|
185
202
|
};
|
|
186
203
|
exports.recurrenceDate = recurrenceDate;
|
package/date/index.test.js
CHANGED
|
@@ -3,28 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const _1 = require(".");
|
|
4
4
|
const enum_1 = require("../enum");
|
|
5
5
|
describe("Date", () => {
|
|
6
|
-
|
|
6
|
+
it("dateTimeNowUtc", () => {
|
|
7
7
|
const dateNow = (0, _1.dateTimeNowUtc)();
|
|
8
8
|
expect(dateNow).not.toBeNull();
|
|
9
9
|
expect(dateNow).toBeDefined();
|
|
10
10
|
});
|
|
11
|
-
|
|
11
|
+
it("dateTimeNowUtcUnixInteger", () => {
|
|
12
12
|
const dateNow = (0, _1.dateTimeNowUtcUnixInteger)();
|
|
13
13
|
expect(dateNow).not.toBeNull();
|
|
14
14
|
expect(dateNow).toBeDefined();
|
|
15
15
|
});
|
|
16
|
-
|
|
16
|
+
it("formateDateUnixInteger", () => {
|
|
17
17
|
const dateNow = (0, _1.formateDateUnixInteger)(new Date());
|
|
18
18
|
expect(dateNow).not.toBeNull();
|
|
19
19
|
expect(dateNow).toBeDefined();
|
|
20
20
|
});
|
|
21
|
-
|
|
21
|
+
it("subtractDaysToDateTimeNowUtc", () => {
|
|
22
22
|
const dateNow = (0, _1.subtractDaysToDateTimeNowUtc)(1);
|
|
23
23
|
expect(dateNow).not.toBeNull();
|
|
24
24
|
expect(dateNow).toBeDefined();
|
|
25
25
|
});
|
|
26
|
-
|
|
27
|
-
const dateNow = (
|
|
26
|
+
it("recurrenceDate isRecurrence = true", () => {
|
|
27
|
+
const dateNow = new Date("2024-08-05T00:00:00.000Z");
|
|
28
28
|
const dateNextMonth = (0, _1.recurrenceDate)({
|
|
29
29
|
date: dateNow,
|
|
30
30
|
isRecurrence: true,
|
|
@@ -54,7 +54,7 @@ describe("Date", () => {
|
|
|
54
54
|
expect(dateNextMonth).toBeDefined();
|
|
55
55
|
expect(dateNextWeek).toBeDefined();
|
|
56
56
|
});
|
|
57
|
-
|
|
57
|
+
it("recurrenceDate isRecurrence = false", () => {
|
|
58
58
|
const dateNow = (0, _1.dateTimeNowUtc)();
|
|
59
59
|
const dateNextMonth = (0, _1.recurrenceDate)({
|
|
60
60
|
date: dateNow,
|
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.60","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"}}
|