@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 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 dateNow = (0, exports.dateTimeNowUtcUnixInteger)();
171
- const dateFromRecurrence = (0, exports.formateDateUnixInteger)(date);
172
- const dateNowInit = dateFromRecurrence > dateNow
173
- ? luxon_1.DateTime.fromJSDate(date)
174
- : luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
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
- return dateNowInit.plus({ years: duration }).toJSDate();
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;
@@ -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
- test("dateTimeNowUtc", () => {
6
+ it("dateTimeNowUtc", () => {
7
7
  const dateNow = (0, _1.dateTimeNowUtc)();
8
8
  expect(dateNow).not.toBeNull();
9
9
  expect(dateNow).toBeDefined();
10
10
  });
11
- test("dateTimeNowUtcUnixInteger", () => {
11
+ it("dateTimeNowUtcUnixInteger", () => {
12
12
  const dateNow = (0, _1.dateTimeNowUtcUnixInteger)();
13
13
  expect(dateNow).not.toBeNull();
14
14
  expect(dateNow).toBeDefined();
15
15
  });
16
- test("formateDateUnixInteger", () => {
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
- test("subtractDaysToDateTimeNowUtc", () => {
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
- test("recurrenceDate isRecurrence = true", () => {
27
- const dateNow = (0, _1.dateTimeNowUtc)();
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
- test("recurrenceDate isRecurrence = false", () => {
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.57","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.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"}}