@molopos/shared 2.0.60 → 2.0.61

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
@@ -170,20 +170,25 @@ const recurrenceDate = ({ date, recurrence, duration = 1, isRecurrence = false,
170
170
  const dateNowUnix = (0, exports.dateTimeNowUtcUnixInteger)();
171
171
  const dateUnix = (0, exports.formateDateUnixInteger)(date);
172
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)());
173
+ const dateNowInit = isFutureDate
174
+ ? luxon_1.DateTime.fromJSDate(date)
175
+ : luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
180
176
  switch (recurrence) {
181
177
  case enum_1.RecurrenceEnum.Daily:
182
178
  return dateNowInit.plus({ days: duration }).toJSDate();
183
179
  case enum_1.RecurrenceEnum.Weekly:
184
180
  return dateNowInit.plus({ weeks: duration }).toJSDate();
185
- case enum_1.RecurrenceEnum.Monthly:
186
- return dateNowInit.plus({ months: duration }).toJSDate();
181
+ case enum_1.RecurrenceEnum.Monthly: {
182
+ if (isFutureDate) {
183
+ return dateNowInit.plus({ months: duration }).toJSDate();
184
+ }
185
+ const now = luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)());
186
+ let nextOccurrence = now.set({ day: date.getDate() });
187
+ if (nextOccurrence.toUnixInteger() <= dateNowUnix) {
188
+ nextOccurrence = nextOccurrence.plus({ months: duration });
189
+ }
190
+ return nextOccurrence.toJSDate();
191
+ }
187
192
  case enum_1.RecurrenceEnum.Yearly: {
188
193
  if (isFutureDate) {
189
194
  return dateNowInit.plus({ years: duration }).toJSDate();
@@ -24,7 +24,7 @@ describe("Date", () => {
24
24
  expect(dateNow).toBeDefined();
25
25
  });
26
26
  it("recurrenceDate isRecurrence = true", () => {
27
- const dateNow = new Date("2024-08-05T00:00:00.000Z");
27
+ const dateNow = new Date("2025-07-09 00:00:00+00");
28
28
  const dateNextMonth = (0, _1.recurrenceDate)({
29
29
  date: dateNow,
30
30
  isRecurrence: true,
@@ -55,7 +55,7 @@ describe("Date", () => {
55
55
  expect(dateNextWeek).toBeDefined();
56
56
  });
57
57
  it("recurrenceDate isRecurrence = false", () => {
58
- const dateNow = (0, _1.dateTimeNowUtc)();
58
+ const dateNow = new Date("2025-07-10 00:00:00+00");
59
59
  const dateNextMonth = (0, _1.recurrenceDate)({
60
60
  date: dateNow,
61
61
  isRecurrence: false,
package/package.json CHANGED
@@ -1 +1 @@
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"}}
1
+ {"name":"@molopos/shared","publishConfig":{"access":"public"},"version":"2.0.61","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"}}