@explorins/pers-shared 2.1.187 → 2.1.189

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.
@@ -31,4 +31,27 @@ export type BookingSource = 'manual' | 'api' | 'import' | 'migration';
31
31
  * isBookingStatusValid('future', 'any'); // true
32
32
  */
33
33
  export declare function isBookingStatusValid(status: BookingStatus, requirement: BookingRequirementType): boolean;
34
+ /**
35
+ * Compute booking status based on check-in and check-out dates.
36
+ *
37
+ * Logic:
38
+ * - 'past': Check-out date is before today (booking ended yesterday or earlier)
39
+ * - 'active': Check-in date is today or earlier, AND check-out is today or later (guest is staying)
40
+ * - 'future': Check-in date is after today (upcoming booking)
41
+ *
42
+ * Note: Checkout day itself counts as 'active' since guest is there until end of day.
43
+ *
44
+ * @param checkInDate - Booking start date
45
+ * @param checkOutDate - Booking end date
46
+ * @param referenceDate - Date to compare against (defaults to current date)
47
+ * @returns Computed booking status
48
+ *
49
+ * @example
50
+ * // Today is June 5
51
+ * computeBookingStatus('2026-06-01', '2026-06-04') // 'past' (checked out yesterday)
52
+ * computeBookingStatus('2026-06-01', '2026-06-05') // 'active' (checking out today)
53
+ * computeBookingStatus('2026-06-03', '2026-06-08') // 'active' (currently staying)
54
+ * computeBookingStatus('2026-06-10', '2026-06-15') // 'future' (upcoming)
55
+ */
56
+ export declare function computeBookingStatus(checkInDate: Date | string, checkOutDate: Date | string, referenceDate?: Date): BookingStatus;
34
57
  //# sourceMappingURL=booking.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"booking.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,eAAe,GACf,KAAK,CAAC;AAEV;;;GAGG;AACH,eAAO,MAAM,cAAc,wEAMjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,sBAAsB,GAClC,OAAO,CAeT"}
1
+ {"version":3,"file":"booking.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,eAAe,GACf,KAAK,CAAC;AAEV;;;GAGG;AACH,eAAO,MAAM,cAAc,wEAMjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,sBAAsB,GAClC,OAAO,CAeT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,IAAI,GAAG,MAAM,EAC1B,YAAY,EAAE,IAAI,GAAG,MAAM,EAC3B,aAAa,GAAE,IAAiB,GAC/B,aAAa,CAmBf"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LOCATION_TYPES = void 0;
4
4
  exports.isBookingStatusValid = isBookingStatusValid;
5
+ exports.computeBookingStatus = computeBookingStatus;
5
6
  /**
6
7
  * Location types for bookings.
7
8
  * Broad categories for different booking contexts.
@@ -41,4 +42,46 @@ function isBookingStatusValid(status, requirement) {
41
42
  return false;
42
43
  }
43
44
  }
45
+ /**
46
+ * Compute booking status based on check-in and check-out dates.
47
+ *
48
+ * Logic:
49
+ * - 'past': Check-out date is before today (booking ended yesterday or earlier)
50
+ * - 'active': Check-in date is today or earlier, AND check-out is today or later (guest is staying)
51
+ * - 'future': Check-in date is after today (upcoming booking)
52
+ *
53
+ * Note: Checkout day itself counts as 'active' since guest is there until end of day.
54
+ *
55
+ * @param checkInDate - Booking start date
56
+ * @param checkOutDate - Booking end date
57
+ * @param referenceDate - Date to compare against (defaults to current date)
58
+ * @returns Computed booking status
59
+ *
60
+ * @example
61
+ * // Today is June 5
62
+ * computeBookingStatus('2026-06-01', '2026-06-04') // 'past' (checked out yesterday)
63
+ * computeBookingStatus('2026-06-01', '2026-06-05') // 'active' (checking out today)
64
+ * computeBookingStatus('2026-06-03', '2026-06-08') // 'active' (currently staying)
65
+ * computeBookingStatus('2026-06-10', '2026-06-15') // 'future' (upcoming)
66
+ */
67
+ function computeBookingStatus(checkInDate, checkOutDate, referenceDate = new Date()) {
68
+ // Normalize all dates to start of day (00:00:00)
69
+ const now = new Date(referenceDate);
70
+ const checkIn = new Date(checkInDate);
71
+ const checkOut = new Date(checkOutDate);
72
+ now.setHours(0, 0, 0, 0);
73
+ checkIn.setHours(0, 0, 0, 0);
74
+ checkOut.setHours(0, 0, 0, 0);
75
+ // Checkout day itself counts as still active (guest there until end of day)
76
+ if (checkOut < now) {
77
+ return 'past';
78
+ }
79
+ else if (checkIn <= now) {
80
+ // Note: checkOut >= now is implicit here (already ruled out checkOut < now above)
81
+ return 'active';
82
+ }
83
+ else {
84
+ return 'future';
85
+ }
86
+ }
44
87
  //# sourceMappingURL=booking.type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"booking.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":";;;AAgDA,oDAkBC;AAlDD;;;GAGG;AACU,QAAA,cAAc,GAAG;IAC5B,UAAU,EAAM,qDAAqD;IACrE,SAAS,EAAO,iDAAiD;IACjE,OAAO,EAAS,gDAAgD;IAChE,YAAY,EAAI,8CAA8C;IAC9D,aAAa,EAAG,sDAAsD;CAC9D,CAAC;AAUX;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAClC,MAAqB,EACrB,WAAmC;IAEnC,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,MAAM,KAAK,MAAM,CAAC;QAC3B,KAAK,eAAe;YAClB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;QACpD,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"booking.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":";;;AAgDA,oDAkBC;AAwBD,oDAuBC;AAjGD;;;GAGG;AACU,QAAA,cAAc,GAAG;IAC5B,UAAU,EAAM,qDAAqD;IACrE,SAAS,EAAO,iDAAiD;IACjE,OAAO,EAAS,gDAAgD;IAChE,YAAY,EAAI,8CAA8C;IAC9D,aAAa,EAAG,sDAAsD;CAC9D,CAAC;AAUX;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAClC,MAAqB,EACrB,WAAmC;IAEnC,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,MAAM,KAAK,MAAM,CAAC;QAC3B,KAAK,eAAe;YAClB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;QACpD,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,oBAAoB,CAClC,WAA0B,EAC1B,YAA2B,EAC3B,gBAAsB,IAAI,IAAI,EAAE;IAEhC,iDAAiD;IACjD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAExC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9B,4EAA4E;IAC5E,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QAC1B,kFAAkF;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -31,4 +31,27 @@ export type BookingSource = 'manual' | 'api' | 'import' | 'migration';
31
31
  * isBookingStatusValid('future', 'any'); // true
32
32
  */
33
33
  export declare function isBookingStatusValid(status: BookingStatus, requirement: BookingRequirementType): boolean;
34
+ /**
35
+ * Compute booking status based on check-in and check-out dates.
36
+ *
37
+ * Logic:
38
+ * - 'past': Check-out date is before today (booking ended yesterday or earlier)
39
+ * - 'active': Check-in date is today or earlier, AND check-out is today or later (guest is staying)
40
+ * - 'future': Check-in date is after today (upcoming booking)
41
+ *
42
+ * Note: Checkout day itself counts as 'active' since guest is there until end of day.
43
+ *
44
+ * @param checkInDate - Booking start date
45
+ * @param checkOutDate - Booking end date
46
+ * @param referenceDate - Date to compare against (defaults to current date)
47
+ * @returns Computed booking status
48
+ *
49
+ * @example
50
+ * // Today is June 5
51
+ * computeBookingStatus('2026-06-01', '2026-06-04') // 'past' (checked out yesterday)
52
+ * computeBookingStatus('2026-06-01', '2026-06-05') // 'active' (checking out today)
53
+ * computeBookingStatus('2026-06-03', '2026-06-08') // 'active' (currently staying)
54
+ * computeBookingStatus('2026-06-10', '2026-06-15') // 'future' (upcoming)
55
+ */
56
+ export declare function computeBookingStatus(checkInDate: Date | string, checkOutDate: Date | string, referenceDate?: Date): BookingStatus;
34
57
  //# sourceMappingURL=booking.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"booking.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,eAAe,GACf,KAAK,CAAC;AAEV;;;GAGG;AACH,eAAO,MAAM,cAAc,wEAMjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,sBAAsB,GAClC,OAAO,CAeT"}
1
+ {"version":3,"file":"booking.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,eAAe,GACf,KAAK,CAAC;AAEV;;;GAGG;AACH,eAAO,MAAM,cAAc,wEAMjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,sBAAsB,GAClC,OAAO,CAeT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,IAAI,GAAG,MAAM,EAC1B,YAAY,EAAE,IAAI,GAAG,MAAM,EAC3B,aAAa,GAAE,IAAiB,GAC/B,aAAa,CAmBf"}
@@ -37,4 +37,46 @@ export function isBookingStatusValid(status, requirement) {
37
37
  return false;
38
38
  }
39
39
  }
40
+ /**
41
+ * Compute booking status based on check-in and check-out dates.
42
+ *
43
+ * Logic:
44
+ * - 'past': Check-out date is before today (booking ended yesterday or earlier)
45
+ * - 'active': Check-in date is today or earlier, AND check-out is today or later (guest is staying)
46
+ * - 'future': Check-in date is after today (upcoming booking)
47
+ *
48
+ * Note: Checkout day itself counts as 'active' since guest is there until end of day.
49
+ *
50
+ * @param checkInDate - Booking start date
51
+ * @param checkOutDate - Booking end date
52
+ * @param referenceDate - Date to compare against (defaults to current date)
53
+ * @returns Computed booking status
54
+ *
55
+ * @example
56
+ * // Today is June 5
57
+ * computeBookingStatus('2026-06-01', '2026-06-04') // 'past' (checked out yesterday)
58
+ * computeBookingStatus('2026-06-01', '2026-06-05') // 'active' (checking out today)
59
+ * computeBookingStatus('2026-06-03', '2026-06-08') // 'active' (currently staying)
60
+ * computeBookingStatus('2026-06-10', '2026-06-15') // 'future' (upcoming)
61
+ */
62
+ export function computeBookingStatus(checkInDate, checkOutDate, referenceDate = new Date()) {
63
+ // Normalize all dates to start of day (00:00:00)
64
+ const now = new Date(referenceDate);
65
+ const checkIn = new Date(checkInDate);
66
+ const checkOut = new Date(checkOutDate);
67
+ now.setHours(0, 0, 0, 0);
68
+ checkIn.setHours(0, 0, 0, 0);
69
+ checkOut.setHours(0, 0, 0, 0);
70
+ // Checkout day itself counts as still active (guest there until end of day)
71
+ if (checkOut < now) {
72
+ return 'past';
73
+ }
74
+ else if (checkIn <= now) {
75
+ // Note: checkOut >= now is implicit here (already ruled out checkOut < now above)
76
+ return 'active';
77
+ }
78
+ else {
79
+ return 'future';
80
+ }
81
+ }
40
82
  //# sourceMappingURL=booking.type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"booking.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAM,qDAAqD;IACrE,SAAS,EAAO,iDAAiD;IACjE,OAAO,EAAS,gDAAgD;IAChE,YAAY,EAAI,8CAA8C;IAC9D,aAAa,EAAG,sDAAsD;CAC9D,CAAC;AAUX;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,WAAmC;IAEnC,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,MAAM,KAAK,MAAM,CAAC;QAC3B,KAAK,eAAe;YAClB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;QACpD,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"booking.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/booking.type.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAM,qDAAqD;IACrE,SAAS,EAAO,iDAAiD;IACjE,OAAO,EAAS,gDAAgD;IAChE,YAAY,EAAI,8CAA8C;IAC9D,aAAa,EAAG,sDAAsD;CAC9D,CAAC;AAUX;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,WAAmC;IAEnC,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,QAAQ,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,MAAM,KAAK,MAAM,CAAC;QAC3B,KAAK,eAAe;YAClB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;QACpD,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAA0B,EAC1B,YAA2B,EAC3B,gBAAsB,IAAI,IAAI,EAAE;IAEhC,iDAAiD;IACjD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAExC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9B,4EAA4E;IAC5E,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QAC1B,kFAAkF;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@explorins/pers-shared",
3
- "version": "2.1.187",
3
+ "version": "2.1.189",
4
4
  "scripts": {
5
5
  "clean": "find dist -type f -delete 2>/dev/null || true",
6
6
  "build:esm": "tsc -p tsconfig.esm.json && node scripts/add-js-extensions.js",