@timardex/cluemart-shared 1.5.505 → 1.5.506

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.
@@ -1,4 +1,4 @@
1
- import "../chunk-UA64PDR4.mjs";
1
+ import "../chunk-K4J6EBAJ.mjs";
2
2
  import "../chunk-RQDZX76B.mjs";
3
3
  import "../chunk-DWO35OY4.mjs";
4
4
  import "../chunk-I7WE3EBR.mjs";
@@ -14,7 +14,7 @@ import {
14
14
  dateFormat,
15
15
  normalizeUrl,
16
16
  timeFormat
17
- } from "../chunk-VJIFUOVU.mjs";
17
+ } from "../chunk-4H2QFRNE.mjs";
18
18
  import {
19
19
  EnumEventDateStatus,
20
20
  EnumEventType,
package/dist/index.cjs CHANGED
@@ -109,6 +109,7 @@ __export(index_exports, {
109
109
  mapArrayToOptions: () => mapArrayToOptions,
110
110
  mapBaseResourceTypeToFormData: () => mapBaseResourceTypeToFormData,
111
111
  normalizeUrl: () => normalizeUrl,
112
+ nzStartOfDay: () => nzStartOfDay,
112
113
  packagingOptions: () => packagingOptions,
113
114
  partnerBasicInfoFields: () => partnerBasicInfoFields,
114
115
  paymentMethodOptions: () => paymentMethodOptions,
@@ -729,9 +730,6 @@ var priceUnits = [
729
730
  { label: "Half dozen", value: "HALF_DOZEN" }
730
731
  ];
731
732
 
732
- // src/utils/dailyClueGame.ts
733
- var import_dayjs = __toESM(require("dayjs"));
734
-
735
733
  // src/types/game.ts
736
734
  var gameScreenIdentifierList = [
737
735
  {
@@ -844,6 +842,81 @@ var EnumGameStatus = /* @__PURE__ */ ((EnumGameStatus2) => {
844
842
  return EnumGameStatus2;
845
843
  })(EnumGameStatus || {});
846
844
 
845
+ // src/utils/date.ts
846
+ var import_dayjs = __toESM(require("dayjs"));
847
+ var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.js"));
848
+ var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
849
+ var import_timezone = __toESM(require("dayjs/plugin/timezone.js"));
850
+ var import_utc = __toESM(require("dayjs/plugin/utc.js"));
851
+ var dateFormat = "DD-MM-YYYY";
852
+ var timeFormat = "HH:mm";
853
+ import_dayjs.default.extend(import_customParseFormat.default);
854
+ import_dayjs.default.extend(import_utc.default);
855
+ import_dayjs.default.extend(import_timezone.default);
856
+ import_dayjs.default.extend(import_isSameOrAfter.default);
857
+ var NZ_TZ = "Pacific/Auckland";
858
+ function toNZTime(date3) {
859
+ return date3 ? (0, import_dayjs.default)(date3).tz(NZ_TZ) : (0, import_dayjs.default)().tz(NZ_TZ);
860
+ }
861
+ function nzStartOfDay(input) {
862
+ if (input == null) {
863
+ return (0, import_dayjs.default)().tz(NZ_TZ).startOf("day");
864
+ }
865
+ return (0, import_dayjs.default)(input).tz(NZ_TZ).startOf("day");
866
+ }
867
+ var formatDate = (dateStr, display = "datetime", timeStr) => {
868
+ const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
869
+ const dateTime = timeStr ? (0, import_dayjs.default)(dateTimeStr, `${dateFormat} ${timeFormat}`) : (0, import_dayjs.default)(dateStr, dateFormat);
870
+ const formattedDate = dateTime.format("dddd, D MMMM, YYYY");
871
+ const formattedTime = dateTime.format("h:mm a");
872
+ switch (display) {
873
+ case "date":
874
+ return formattedDate;
875
+ case "time":
876
+ return formattedTime;
877
+ case "datetime":
878
+ return `${formattedDate} at ${formattedTime}`;
879
+ default:
880
+ return formattedDate;
881
+ }
882
+ };
883
+ var getCurrentAndFutureDates = (dates) => {
884
+ const now = (0, import_dayjs.default)();
885
+ return dates.filter((dateObj) => {
886
+ const dateTime = (0, import_dayjs.default)(
887
+ `${dateObj.startDate} ${dateObj.startTime}`,
888
+ `${dateFormat} ${timeFormat}`
889
+ );
890
+ return dateTime.isSameOrAfter(now);
891
+ });
892
+ };
893
+ var isFutureDatesBeforeThreshold = (date3, minHoursFromNow) => {
894
+ const threshold = minHoursFromNow ? (0, import_dayjs.default)().add(minHoursFromNow, "hour") : (0, import_dayjs.default)().startOf("day");
895
+ const dateTime = (0, import_dayjs.default)(
896
+ `${date3.startDate} ${date3.startTime}`,
897
+ `${dateFormat} ${timeFormat}`
898
+ );
899
+ return dateTime.isSameOrAfter(threshold);
900
+ };
901
+ var formatTimestamp = (timestamp) => {
902
+ const formattedDate = toNZTime(timestamp).format(dateFormat);
903
+ return formatDate(formattedDate, "date");
904
+ };
905
+ var isIsoDateString = (value) => {
906
+ return typeof value === "string" && !isNaN(Date.parse(value));
907
+ };
908
+ function sortDatesChronologically(dates) {
909
+ if (!dates || !dates.length) {
910
+ return [];
911
+ }
912
+ return [...dates].sort((a, b) => {
913
+ const dateTimeFormat = `${dateFormat} ${timeFormat}`;
914
+ const dateA = (0, import_dayjs.default)(`${a.startDate} ${a.startTime}`, dateTimeFormat);
915
+ const dateB = (0, import_dayjs.default)(`${b.startDate} ${b.startTime}`, dateTimeFormat);
916
+ return dateA.valueOf() - dateB.valueOf();
917
+ });
918
+ }
919
+
847
920
  // src/utils/dailyClueGame.ts
848
921
  function createSeededRng(seed) {
849
922
  let t = seed >>> 0;
@@ -878,9 +951,9 @@ function getDayIndex(start, today) {
878
951
  function computeDailyClueState(dailyClue) {
879
952
  const { startDate, endDate } = dailyClue.gameFields.gameDate;
880
953
  const { shuffled, collected } = dailyClue.letterInfo;
881
- const today = (0, import_dayjs.default)().startOf("day");
882
- const start = (0, import_dayjs.default)(startDate).startOf("day");
883
- const end = (0, import_dayjs.default)(endDate).startOf("day");
954
+ const today = nzStartOfDay();
955
+ const start = nzStartOfDay(startDate);
956
+ const end = nzStartOfDay(endDate);
884
957
  const shuffledPlacements = seededShuffle(
885
958
  gameScreenIdentifierList,
886
959
  start.toISOString()
@@ -903,8 +976,18 @@ function computeDailyClueState(dailyClue) {
903
976
  }
904
977
  const index = getDayIndex(start, today);
905
978
  if (index < 0 || index >= shuffled.length) return null;
906
- if (collected?.includes(shuffled[index])) {
907
- return null;
979
+ const letterToday = shuffled[index]?.trim().toLowerCase();
980
+ if (!letterToday) return null;
981
+ const alreadyHaveTodaysSlot = (collected ?? []).some(
982
+ (l) => l.trim().toLowerCase() === letterToday
983
+ );
984
+ if (alreadyHaveTodaysSlot) {
985
+ return {
986
+ gameHistory: null,
987
+ todaysClue: null,
988
+ todaysLetter: null,
989
+ todaysPlacement: null
990
+ };
908
991
  }
909
992
  return {
910
993
  gameHistory: null,
@@ -914,75 +997,6 @@ function computeDailyClueState(dailyClue) {
914
997
  };
915
998
  }
916
999
 
917
- // src/utils/date.ts
918
- var import_dayjs2 = __toESM(require("dayjs"));
919
- var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.js"));
920
- var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
921
- var import_timezone = __toESM(require("dayjs/plugin/timezone.js"));
922
- var import_utc = __toESM(require("dayjs/plugin/utc.js"));
923
- var dateFormat = "DD-MM-YYYY";
924
- var timeFormat = "HH:mm";
925
- import_dayjs2.default.extend(import_customParseFormat.default);
926
- import_dayjs2.default.extend(import_utc.default);
927
- import_dayjs2.default.extend(import_timezone.default);
928
- import_dayjs2.default.extend(import_isSameOrAfter.default);
929
- var NZ_TZ = "Pacific/Auckland";
930
- function toNZTime(date3) {
931
- return date3 ? (0, import_dayjs2.default)(date3).tz(NZ_TZ) : (0, import_dayjs2.default)().tz(NZ_TZ);
932
- }
933
- var formatDate = (dateStr, display = "datetime", timeStr) => {
934
- const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
935
- const dateTime = timeStr ? (0, import_dayjs2.default)(dateTimeStr, `${dateFormat} ${timeFormat}`) : (0, import_dayjs2.default)(dateStr, dateFormat);
936
- const formattedDate = dateTime.format("dddd, D MMMM, YYYY");
937
- const formattedTime = dateTime.format("h:mm a");
938
- switch (display) {
939
- case "date":
940
- return formattedDate;
941
- case "time":
942
- return formattedTime;
943
- case "datetime":
944
- return `${formattedDate} at ${formattedTime}`;
945
- default:
946
- return formattedDate;
947
- }
948
- };
949
- var getCurrentAndFutureDates = (dates) => {
950
- const now = (0, import_dayjs2.default)();
951
- return dates.filter((dateObj) => {
952
- const dateTime = (0, import_dayjs2.default)(
953
- `${dateObj.startDate} ${dateObj.startTime}`,
954
- `${dateFormat} ${timeFormat}`
955
- );
956
- return dateTime.isSameOrAfter(now);
957
- });
958
- };
959
- var isFutureDatesBeforeThreshold = (date3, minHoursFromNow) => {
960
- const threshold = minHoursFromNow ? (0, import_dayjs2.default)().add(minHoursFromNow, "hour") : (0, import_dayjs2.default)().startOf("day");
961
- const dateTime = (0, import_dayjs2.default)(
962
- `${date3.startDate} ${date3.startTime}`,
963
- `${dateFormat} ${timeFormat}`
964
- );
965
- return dateTime.isSameOrAfter(threshold);
966
- };
967
- var formatTimestamp = (timestamp) => {
968
- const formattedDate = toNZTime(timestamp).format(dateFormat);
969
- return formatDate(formattedDate, "date");
970
- };
971
- var isIsoDateString = (value) => {
972
- return typeof value === "string" && !isNaN(Date.parse(value));
973
- };
974
- function sortDatesChronologically(dates) {
975
- if (!dates || !dates.length) {
976
- return [];
977
- }
978
- return [...dates].sort((a, b) => {
979
- const dateTimeFormat = `${dateFormat} ${timeFormat}`;
980
- const dateA = (0, import_dayjs2.default)(`${a.startDate} ${a.startTime}`, dateTimeFormat);
981
- const dateB = (0, import_dayjs2.default)(`${b.startDate} ${b.startTime}`, dateTimeFormat);
982
- return dateA.valueOf() - dateB.valueOf();
983
- });
984
- }
985
-
986
1000
  // src/utils/utils.ts
987
1001
  var removeTypename = (obj) => {
988
1002
  if (obj instanceof Date) {
@@ -6506,7 +6520,7 @@ var React = __toESM(require("react"));
6506
6520
  var import_react_hook_form = require("react-hook-form");
6507
6521
 
6508
6522
  // src/yupSchema/global.ts
6509
- var import_dayjs3 = __toESM(require("dayjs"));
6523
+ var import_dayjs2 = __toESM(require("dayjs"));
6510
6524
  var import_customParseFormat2 = __toESM(require("dayjs/plugin/customParseFormat.js"));
6511
6525
  var import_isSameOrAfter2 = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
6512
6526
  var yup = __toESM(require("yup"));
@@ -6535,8 +6549,8 @@ var noLeadingZeros = (fieldName, options = {}) => {
6535
6549
  return true;
6536
6550
  };
6537
6551
  };
6538
- import_dayjs3.default.extend(import_isSameOrAfter2.default);
6539
- import_dayjs3.default.extend(import_customParseFormat2.default);
6552
+ import_dayjs2.default.extend(import_isSameOrAfter2.default);
6553
+ import_dayjs2.default.extend(import_customParseFormat2.default);
6540
6554
  var emailRequiredSchema = yup.string().email("Invalid email address").required("Email is required").label("Email").transform(
6541
6555
  (value) => typeof value === "string" ? value.trim().toLowerCase() : value
6542
6556
  );
@@ -6567,12 +6581,12 @@ var contactDetailsSchema = yup.object({
6567
6581
  landlinePhone: landlinePhoneSchema
6568
6582
  }).nullable().default(void 0);
6569
6583
  var endDateNotInPastTest = yup.string().test("not-in-past", "End date cannot be in the past", (value) => {
6570
- const now = (0, import_dayjs3.default)();
6571
- return value ? (0, import_dayjs3.default)(value, dateFormat, true).isSameOrAfter(now, "day") : false;
6584
+ const now = (0, import_dayjs2.default)();
6585
+ return value ? (0, import_dayjs2.default)(value, dateFormat, true).isSameOrAfter(now, "day") : false;
6572
6586
  });
6573
6587
  var startDateNotInPastTest = yup.string().test("not-in-past", "Start date cannot be in the past", (value) => {
6574
- const now = (0, import_dayjs3.default)();
6575
- return value ? (0, import_dayjs3.default)(value, dateFormat, true).isSameOrAfter(now, "day") : false;
6588
+ const now = (0, import_dayjs2.default)();
6589
+ return value ? (0, import_dayjs2.default)(value, dateFormat, true).isSameOrAfter(now, "day") : false;
6576
6590
  });
6577
6591
  var endDateAfterStartDateTest = yup.string().test(
6578
6592
  "end-after-start",
@@ -6580,8 +6594,8 @@ var endDateAfterStartDateTest = yup.string().test(
6580
6594
  function(value) {
6581
6595
  const { startDate } = this.parent;
6582
6596
  if (!startDate || !value) return false;
6583
- return (0, import_dayjs3.default)(value, dateFormat, true).isSameOrAfter(
6584
- (0, import_dayjs3.default)(startDate, dateFormat, true),
6597
+ return (0, import_dayjs2.default)(value, dateFormat, true).isSameOrAfter(
6598
+ (0, import_dayjs2.default)(startDate, dateFormat, true),
6585
6599
  "day"
6586
6600
  );
6587
6601
  }
@@ -6592,12 +6606,12 @@ var endTimeMustBeAfterStartTimeTest = yup.string().test(
6592
6606
  function(value) {
6593
6607
  const { startDate, endDate, startTime } = this.parent;
6594
6608
  if (!startDate || !endDate || !startTime || !value) return false;
6595
- const startDateTime = (0, import_dayjs3.default)(
6609
+ const startDateTime = (0, import_dayjs2.default)(
6596
6610
  `${startDate} ${startTime}`,
6597
6611
  `${dateFormat} ${timeFormat}`,
6598
6612
  true
6599
6613
  );
6600
- const endDateTime = (0, import_dayjs3.default)(
6614
+ const endDateTime = (0, import_dayjs2.default)(
6601
6615
  `${endDate} ${value}`,
6602
6616
  `${dateFormat} ${timeFormat}`,
6603
6617
  true
@@ -6609,10 +6623,10 @@ var startTimeCannotBeInPastTest = yup.string().test(
6609
6623
  "valid-start-time",
6610
6624
  "Start time cannot be in the past",
6611
6625
  function(value) {
6612
- const now = (0, import_dayjs3.default)();
6626
+ const now = (0, import_dayjs2.default)();
6613
6627
  const { startDate } = this.parent;
6614
6628
  if (!startDate || !value) return false;
6615
- const startDateTime = (0, import_dayjs3.default)(
6629
+ const startDateTime = (0, import_dayjs2.default)(
6616
6630
  `${startDate} ${value}`,
6617
6631
  `${dateFormat} ${timeFormat}`,
6618
6632
  true
@@ -8299,6 +8313,7 @@ var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
8299
8313
  mapArrayToOptions,
8300
8314
  mapBaseResourceTypeToFormData,
8301
8315
  normalizeUrl,
8316
+ nzStartOfDay,
8302
8317
  packagingOptions,
8303
8318
  partnerBasicInfoFields,
8304
8319
  paymentMethodOptions,