@molopos/shared 2.0.51 → 2.0.53

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,4 +1,11 @@
1
+ import { RecurrenceEnum } from "../enum";
1
2
  import { DateLike, Numberlike } from "../index";
3
+ interface PropsRecurrence {
4
+ date: Date;
5
+ duration?: number;
6
+ recurrence: RecurrenceEnum;
7
+ isRecurrence?: boolean;
8
+ }
2
9
  /**
3
10
  * Format a date to a string
4
11
  * @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
@@ -56,3 +63,9 @@ export declare const formateToUnixIntegerddLLLyyyy: (date: Numberlike, locale: s
56
63
  * formateTDate("2026-01-01", "en-US"); // "1 Jan 2026"
57
64
  */
58
65
  export declare const formateTDate: (date: Date, lang: string) => string;
66
+ /**
67
+ * @example
68
+ * recurrenceDate({ date: new Date(), recurrence: RecurrenceEnum.Monthly }) // 23/06/2026
69
+ */
70
+ export declare const recurrenceDate: ({ date, recurrence, duration, isRecurrence, }: PropsRecurrence) => Date;
71
+ export {};
package/date/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- 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.formatDateToUtc = exports.formateHHmm = exports.formateYYDDMM = exports.formateddLLLyyyy = exports.formateDate = void 0;
3
+ exports.recurrenceDate = 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.formatDateToUtc = exports.formateHHmm = exports.formateYYDDMM = exports.formateddLLLyyyy = exports.formateDate = void 0;
4
4
  const date_fns_1 = require("date-fns");
5
5
  const luxon_1 = require("luxon");
6
+ const enum_1 = require("../enum");
6
7
  /**
7
8
  * Format a date to a string
8
9
  * @param date - The date to format (e.g. "2026-01-01", "2026-01-01T00:00:00.000Z", etc.)
@@ -127,3 +128,25 @@ const formateTDate = (date, lang) => {
127
128
  return luxon_1.DateTime.fromJSDate(date).setLocale(lang).toFormat("t");
128
129
  };
129
130
  exports.formateTDate = formateTDate;
131
+ /**
132
+ * @example
133
+ * recurrenceDate({ date: new Date(), recurrence: RecurrenceEnum.Monthly }) // 23/06/2026
134
+ */
135
+ const recurrenceDate = ({ date, recurrence, duration = 1, isRecurrence = true, }) => {
136
+ if (isRecurrence) {
137
+ switch (recurrence) {
138
+ case enum_1.RecurrenceEnum.Daily:
139
+ return luxon_1.DateTime.fromJSDate(date).plus({ days: duration }).toJSDate();
140
+ case enum_1.RecurrenceEnum.Weekly:
141
+ return luxon_1.DateTime.fromJSDate(date).plus({ weeks: duration }).toJSDate();
142
+ case enum_1.RecurrenceEnum.Monthly:
143
+ return luxon_1.DateTime.fromJSDate(date).plus({ months: duration }).toJSDate();
144
+ case enum_1.RecurrenceEnum.Yearly:
145
+ return luxon_1.DateTime.fromJSDate(date).plus({ years: duration }).toJSDate();
146
+ }
147
+ }
148
+ else {
149
+ return date;
150
+ }
151
+ };
152
+ exports.recurrenceDate = recurrenceDate;
@@ -1,3 +1,10 @@
1
+ interface Props {
2
+ value: number;
3
+ isDivide?: boolean;
4
+ currency: string;
5
+ locale?: string;
6
+ maximumFractionDigits?: number;
7
+ }
1
8
  /**
2
9
  * @example
3
10
  * fromCents(2300) // 23
@@ -24,13 +31,6 @@ export declare const calculDiscount: ({ value, percentage, }: {
24
31
  value: number;
25
32
  percentage: number;
26
33
  }) => number;
27
- interface Props {
28
- value: number;
29
- isDivide?: boolean;
30
- currency: string;
31
- locale?: string;
32
- maximumFractionDigits?: number;
33
- }
34
34
  /**
35
35
  * @example
36
36
  * formatePrice({ value: 2300, currency: 'EUR', locale: 'fr' }) // 23.00 €
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __1 = require("../..");
4
+ const date_1 = require("../../date");
3
5
  const index_1 = require("./index");
4
6
  describe("Utils", () => {
5
7
  test("fromCents", () => {
@@ -40,4 +42,31 @@ describe("Utils", () => {
40
42
  expect(result).toBeDefined();
41
43
  expect(result).toEqual("John Doe");
42
44
  });
45
+ test("recurrenceDate", () => {
46
+ const dateNow = (0, __1.dateTimeNowUtc)();
47
+ const dateNextMonth = (0, date_1.recurrenceDate)({
48
+ date: dateNow,
49
+ recurrence: __1.RecurrenceEnum.Monthly,
50
+ });
51
+ const dateNextYear = (0, date_1.recurrenceDate)({
52
+ date: dateNow,
53
+ recurrence: __1.RecurrenceEnum.Yearly,
54
+ });
55
+ const dateNextWeek = (0, date_1.recurrenceDate)({
56
+ date: dateNow,
57
+ recurrence: __1.RecurrenceEnum.Weekly,
58
+ });
59
+ const dateNextDay = (0, date_1.recurrenceDate)({
60
+ date: dateNow,
61
+ recurrence: __1.RecurrenceEnum.Daily,
62
+ });
63
+ expect(dateNextDay).not.toBeNull();
64
+ expect(dateNextYear).not.toBeNull();
65
+ expect(dateNextMonth).not.toBeNull();
66
+ expect(dateNextWeek).not.toBeNull();
67
+ expect(dateNextDay).toBeDefined();
68
+ expect(dateNextYear).toBeDefined();
69
+ expect(dateNextMonth).toBeDefined();
70
+ expect(dateNextWeek).toBeDefined();
71
+ });
43
72
  });
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@molopos/shared","publishConfig":{"access":"public"},"version":"2.0.51","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.53","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"}}