@molopos/shared 2.0.58 → 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
@@ -170,9 +170,7 @@ 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 preservesDay = recurrence === enum_1.RecurrenceEnum.Monthly ||
174
- recurrence === enum_1.RecurrenceEnum.Yearly;
175
- const dateNowInit = preservesDay
173
+ const dateNowInit = recurrence === enum_1.RecurrenceEnum.Monthly
176
174
  ? isFutureDate
177
175
  ? luxon_1.DateTime.fromJSDate(date)
178
176
  : luxon_1.DateTime.fromJSDate((0, exports.dateTimeNowUtc)()).set({ day: date.getDate() })
@@ -186,8 +184,20 @@ const recurrenceDate = ({ date, recurrence, duration = 1, isRecurrence = false,
186
184
  return dateNowInit.plus({ weeks: duration }).toJSDate();
187
185
  case enum_1.RecurrenceEnum.Monthly:
188
186
  return dateNowInit.plus({ months: duration }).toJSDate();
189
- case enum_1.RecurrenceEnum.Yearly:
190
- 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
+ }
191
201
  }
192
202
  };
193
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.58","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"}}