@timardex/cluemart-shared 1.5.794 → 1.5.795

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,16 +1,9 @@
1
1
  import "../chunk-VA5YN2K3.mjs";
2
- import "../chunk-KKPVTN4B.mjs";
2
+ import "../chunk-KSFDYCSS.mjs";
3
3
  import {
4
- SCHOOL_MIN_STUDENT_COUNT
5
- } from "../chunk-HO7KOQ6F.mjs";
6
- import "../chunk-2US6BYNF.mjs";
7
- import "../chunk-NPFJ2CN2.mjs";
8
- import "../chunk-CID7QC75.mjs";
9
- import {
10
- dateFormat,
11
- normalizeUrl,
12
- timeFormat
13
- } from "../chunk-S7C3MFZF.mjs";
4
+ SCHOOL_MIN_STUDENT_COUNT,
5
+ normalizeUrl
6
+ } from "../chunk-B2ID4C66.mjs";
14
7
  import {
15
8
  EnumAdShowOn,
16
9
  EnumAdStatus,
@@ -19,6 +12,13 @@ import {
19
12
  EnumPostContentType,
20
13
  EnumPostType
21
14
  } from "../chunk-XY5XRXR3.mjs";
15
+ import "../chunk-2US6BYNF.mjs";
16
+ import "../chunk-NPFJ2CN2.mjs";
17
+ import "../chunk-JD7CKX4S.mjs";
18
+ import {
19
+ dateFormat,
20
+ timeFormat
21
+ } from "../chunk-E7ZEBZ3O.mjs";
22
22
  import {
23
23
  EnumEventDateStatus,
24
24
  EnumEventType,
package/dist/index.cjs CHANGED
@@ -1009,6 +1009,163 @@ var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
1009
1009
  var import_timezone = __toESM(require("dayjs/plugin/timezone.js"));
1010
1010
  var import_utc = __toESM(require("dayjs/plugin/utc.js"));
1011
1011
 
1012
+ // src/utils/mapArrayToOptions.ts
1013
+ var mapArrayToOptions = (items) => items.map((item) => ({
1014
+ label: item,
1015
+ value: item
1016
+ }));
1017
+
1018
+ // src/utils/date.ts
1019
+ var dateFormat = "DD-MM-YYYY";
1020
+ var timeFormat = "HH:mm";
1021
+ import_dayjs.default.extend(import_customParseFormat.default);
1022
+ import_dayjs.default.extend(import_utc.default);
1023
+ import_dayjs.default.extend(import_timezone.default);
1024
+ import_dayjs.default.extend(import_isSameOrAfter.default);
1025
+ var NZ_TZ = "Pacific/Auckland";
1026
+ function toNZTime(date) {
1027
+ return date ? (0, import_dayjs.default)(date).tz(NZ_TZ) : (0, import_dayjs.default)().tz(NZ_TZ);
1028
+ }
1029
+ function nzStartOfDay(input) {
1030
+ if (input == null) {
1031
+ return (0, import_dayjs.default)().tz(NZ_TZ).startOf("day");
1032
+ }
1033
+ return import_dayjs.default.tz(input, NZ_TZ).startOf("day");
1034
+ }
1035
+ var formatDate = (dateStr, display = "datetime", timeStr) => {
1036
+ const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
1037
+ const dateTime = timeStr ? (0, import_dayjs.default)(dateTimeStr, `${dateFormat} ${timeFormat}`) : (0, import_dayjs.default)(dateStr, dateFormat);
1038
+ const formattedDate = dateTime.format("dddd, D MMMM, YYYY");
1039
+ const formattedTime = dateTime.format("h:mm a");
1040
+ switch (display) {
1041
+ case "date":
1042
+ return formattedDate;
1043
+ case "time":
1044
+ return formattedTime;
1045
+ case "datetime":
1046
+ return `${formattedDate} at ${formattedTime}`;
1047
+ default:
1048
+ return formattedDate;
1049
+ }
1050
+ };
1051
+ var getCurrentAndFutureDates = (dates) => {
1052
+ const now = (0, import_dayjs.default)();
1053
+ return dates.filter((dateObj) => {
1054
+ const dateTime = (0, import_dayjs.default)(
1055
+ `${dateObj.startDate} ${dateObj.startTime}`,
1056
+ `${dateFormat} ${timeFormat}`
1057
+ );
1058
+ return dateTime.isSameOrAfter(now);
1059
+ });
1060
+ };
1061
+ var isFutureDatesBeforeThreshold = (date, minHoursFromNow) => {
1062
+ const threshold = minHoursFromNow ? (0, import_dayjs.default)().add(minHoursFromNow, "hour") : (0, import_dayjs.default)().startOf("day");
1063
+ const dateTime = (0, import_dayjs.default)(
1064
+ `${date.startDate} ${date.startTime}`,
1065
+ `${dateFormat} ${timeFormat}`
1066
+ );
1067
+ return dateTime.isSameOrAfter(threshold);
1068
+ };
1069
+ var formatTimestamp = (timestamp) => {
1070
+ const formattedDate = toNZTime(timestamp).format(dateFormat);
1071
+ return formatDate(formattedDate, "date");
1072
+ };
1073
+ var isIsoDateString = (value) => {
1074
+ return typeof value === "string" && !Number.isNaN(Date.parse(value));
1075
+ };
1076
+ function sortDatesChronologically(dates) {
1077
+ if (!dates?.length) {
1078
+ return [];
1079
+ }
1080
+ return [...dates].sort((a, b) => {
1081
+ const dateTimeFormat = `${dateFormat} ${timeFormat}`;
1082
+ const dateA = (0, import_dayjs.default)(`${a.startDate} ${a.startTime}`, dateTimeFormat);
1083
+ const dateB = (0, import_dayjs.default)(`${b.startDate} ${b.startTime}`, dateTimeFormat);
1084
+ return dateA.valueOf() - dateB.valueOf();
1085
+ });
1086
+ }
1087
+ var futureTimePeriods = mapArrayToOptions(
1088
+ Object.values(EnumEventDateStatus)
1089
+ ).filter(
1090
+ (period) => period.value !== "Starting_Soon" /* STARTING_SOON */ && period.value !== "Canceled" /* CANCELED */ && period.value !== "Rescheduled" /* RE_SCHEDULED */ && period.value !== "Started" /* STARTED */ && period.value !== "Ended" /* ENDED */ && period.value !== "Invalid" /* INVALID */
1091
+ ).map((period) => ({
1092
+ label: period.value.replaceAll("_", " "),
1093
+ value: period.value
1094
+ }));
1095
+
1096
+ // src/utils/dailyClueGame.ts
1097
+ function createSeededRng(seed) {
1098
+ let t = seed >>> 0;
1099
+ return function random() {
1100
+ t += 1831565813;
1101
+ let x = t;
1102
+ x = Math.imul(x ^ x >>> 15, x | 1);
1103
+ x ^= x + Math.imul(x ^ x >>> 7, x | 61);
1104
+ return ((x ^ x >>> 14) >>> 0) / 4294967296;
1105
+ };
1106
+ }
1107
+ function hashStringToNumber(seed) {
1108
+ let hash = 2166136261;
1109
+ for (let i = 0; i < seed.length; i++) {
1110
+ hash ^= seed.codePointAt(i) ?? 0;
1111
+ hash = Math.imul(hash, 16777619);
1112
+ }
1113
+ return hash >>> 0;
1114
+ }
1115
+ function seededShuffle(array, seed) {
1116
+ const rng = createSeededRng(hashStringToNumber(seed));
1117
+ const result = [...array];
1118
+ for (let i = result.length - 1; i > 0; i--) {
1119
+ const j = Math.floor(rng() * (i + 1));
1120
+ [result[i], result[j]] = [result[j], result[i]];
1121
+ }
1122
+ return result;
1123
+ }
1124
+ function getDayIndex(start, today) {
1125
+ return today.diff(start, "day");
1126
+ }
1127
+ function computeDailyClueState(dailyClue) {
1128
+ const { startDate, endDate } = dailyClue.gameFields.gameDate;
1129
+ const { solutionShuffled, collected } = dailyClue.letterInfo;
1130
+ const today = nzStartOfDay();
1131
+ const start = nzStartOfDay(startDate);
1132
+ const end = nzStartOfDay(endDate);
1133
+ if (today.isBefore(start)) {
1134
+ return null;
1135
+ }
1136
+ const shuffledPlacements = seededShuffle(
1137
+ gameScreenIdentifierList,
1138
+ start.toISOString()
1139
+ );
1140
+ const index = getDayIndex(start, today);
1141
+ if (today.isAfter(end)) {
1142
+ return {
1143
+ todaysClue: null,
1144
+ todaysLetter: null,
1145
+ todaysPlacement: null
1146
+ };
1147
+ }
1148
+ if (index < 0 || index >= solutionShuffled.length || index >= shuffledPlacements.length) {
1149
+ return null;
1150
+ }
1151
+ const letterToday = solutionShuffled[index];
1152
+ const placement = shuffledPlacements[index];
1153
+ if (!letterToday || !placement) return null;
1154
+ const alreadyCollectedToday = (collected ?? []).includes(letterToday);
1155
+ if (alreadyCollectedToday) {
1156
+ return {
1157
+ todaysClue: null,
1158
+ todaysLetter: null,
1159
+ todaysPlacement: null
1160
+ };
1161
+ }
1162
+ return {
1163
+ todaysClue: placement.clue,
1164
+ todaysLetter: letterToday,
1165
+ todaysPlacement: placement.id
1166
+ };
1167
+ }
1168
+
1012
1169
  // src/sharing/relationShareTypes.ts
1013
1170
  var RELATION_SHARE_INVITATION = "invitation";
1014
1171
  var RELATION_SHARE_APPLICATION = "application";
@@ -1293,10 +1450,6 @@ var truncateText = (text, maxLength = 30) => {
1293
1450
  const result = stripOverlaySubtitleSpecialChars(text);
1294
1451
  return result.length > maxLength ? result.substring(0, maxLength) + "..." : result;
1295
1452
  };
1296
- var mapArrayToOptions = (items) => items.map((item) => ({
1297
- label: item,
1298
- value: item
1299
- }));
1300
1453
  var capitalizeFirstLetter = (str) => {
1301
1454
  return str.split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
1302
1455
  };
@@ -1383,157 +1536,6 @@ function formatNZBankAccount(input) {
1383
1536
  return parts.join("-");
1384
1537
  }
1385
1538
 
1386
- // src/utils/date.ts
1387
- var dateFormat = "DD-MM-YYYY";
1388
- var timeFormat = "HH:mm";
1389
- import_dayjs.default.extend(import_customParseFormat.default);
1390
- import_dayjs.default.extend(import_utc.default);
1391
- import_dayjs.default.extend(import_timezone.default);
1392
- import_dayjs.default.extend(import_isSameOrAfter.default);
1393
- var NZ_TZ = "Pacific/Auckland";
1394
- function toNZTime(date) {
1395
- return date ? (0, import_dayjs.default)(date).tz(NZ_TZ) : (0, import_dayjs.default)().tz(NZ_TZ);
1396
- }
1397
- function nzStartOfDay(input) {
1398
- if (input == null) {
1399
- return (0, import_dayjs.default)().tz(NZ_TZ).startOf("day");
1400
- }
1401
- return import_dayjs.default.tz(input, NZ_TZ).startOf("day");
1402
- }
1403
- var formatDate = (dateStr, display = "datetime", timeStr) => {
1404
- const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
1405
- const dateTime = timeStr ? (0, import_dayjs.default)(dateTimeStr, `${dateFormat} ${timeFormat}`) : (0, import_dayjs.default)(dateStr, dateFormat);
1406
- const formattedDate = dateTime.format("dddd, D MMMM, YYYY");
1407
- const formattedTime = dateTime.format("h:mm a");
1408
- switch (display) {
1409
- case "date":
1410
- return formattedDate;
1411
- case "time":
1412
- return formattedTime;
1413
- case "datetime":
1414
- return `${formattedDate} at ${formattedTime}`;
1415
- default:
1416
- return formattedDate;
1417
- }
1418
- };
1419
- var getCurrentAndFutureDates = (dates) => {
1420
- const now = (0, import_dayjs.default)();
1421
- return dates.filter((dateObj) => {
1422
- const dateTime = (0, import_dayjs.default)(
1423
- `${dateObj.startDate} ${dateObj.startTime}`,
1424
- `${dateFormat} ${timeFormat}`
1425
- );
1426
- return dateTime.isSameOrAfter(now);
1427
- });
1428
- };
1429
- var isFutureDatesBeforeThreshold = (date, minHoursFromNow) => {
1430
- const threshold = minHoursFromNow ? (0, import_dayjs.default)().add(minHoursFromNow, "hour") : (0, import_dayjs.default)().startOf("day");
1431
- const dateTime = (0, import_dayjs.default)(
1432
- `${date.startDate} ${date.startTime}`,
1433
- `${dateFormat} ${timeFormat}`
1434
- );
1435
- return dateTime.isSameOrAfter(threshold);
1436
- };
1437
- var formatTimestamp = (timestamp) => {
1438
- const formattedDate = toNZTime(timestamp).format(dateFormat);
1439
- return formatDate(formattedDate, "date");
1440
- };
1441
- var isIsoDateString = (value) => {
1442
- return typeof value === "string" && !Number.isNaN(Date.parse(value));
1443
- };
1444
- function sortDatesChronologically(dates) {
1445
- if (!dates?.length) {
1446
- return [];
1447
- }
1448
- return [...dates].sort((a, b) => {
1449
- const dateTimeFormat = `${dateFormat} ${timeFormat}`;
1450
- const dateA = (0, import_dayjs.default)(`${a.startDate} ${a.startTime}`, dateTimeFormat);
1451
- const dateB = (0, import_dayjs.default)(`${b.startDate} ${b.startTime}`, dateTimeFormat);
1452
- return dateA.valueOf() - dateB.valueOf();
1453
- });
1454
- }
1455
- var futureTimePeriods = mapArrayToOptions(
1456
- Object.values(EnumEventDateStatus)
1457
- ).filter(
1458
- (period) => period.value !== "Starting_Soon" /* STARTING_SOON */ && period.value !== "Canceled" /* CANCELED */ && period.value !== "Rescheduled" /* RE_SCHEDULED */ && period.value !== "Started" /* STARTED */ && period.value !== "Ended" /* ENDED */ && period.value !== "Invalid" /* INVALID */
1459
- ).map((period) => ({
1460
- label: period.value.replaceAll("_", " "),
1461
- value: period.value
1462
- }));
1463
-
1464
- // src/utils/dailyClueGame.ts
1465
- function createSeededRng(seed) {
1466
- let t = seed >>> 0;
1467
- return function random() {
1468
- t += 1831565813;
1469
- let x = t;
1470
- x = Math.imul(x ^ x >>> 15, x | 1);
1471
- x ^= x + Math.imul(x ^ x >>> 7, x | 61);
1472
- return ((x ^ x >>> 14) >>> 0) / 4294967296;
1473
- };
1474
- }
1475
- function hashStringToNumber(seed) {
1476
- let hash = 2166136261;
1477
- for (let i = 0; i < seed.length; i++) {
1478
- hash ^= seed.codePointAt(i) ?? 0;
1479
- hash = Math.imul(hash, 16777619);
1480
- }
1481
- return hash >>> 0;
1482
- }
1483
- function seededShuffle(array, seed) {
1484
- const rng = createSeededRng(hashStringToNumber(seed));
1485
- const result = [...array];
1486
- for (let i = result.length - 1; i > 0; i--) {
1487
- const j = Math.floor(rng() * (i + 1));
1488
- [result[i], result[j]] = [result[j], result[i]];
1489
- }
1490
- return result;
1491
- }
1492
- function getDayIndex(start, today) {
1493
- return today.diff(start, "day");
1494
- }
1495
- function computeDailyClueState(dailyClue) {
1496
- const { startDate, endDate } = dailyClue.gameFields.gameDate;
1497
- const { solutionShuffled, collected } = dailyClue.letterInfo;
1498
- const today = nzStartOfDay();
1499
- const start = nzStartOfDay(startDate);
1500
- const end = nzStartOfDay(endDate);
1501
- if (today.isBefore(start)) {
1502
- return null;
1503
- }
1504
- const shuffledPlacements = seededShuffle(
1505
- gameScreenIdentifierList,
1506
- start.toISOString()
1507
- );
1508
- const index = getDayIndex(start, today);
1509
- if (today.isAfter(end)) {
1510
- return {
1511
- todaysClue: null,
1512
- todaysLetter: null,
1513
- todaysPlacement: null
1514
- };
1515
- }
1516
- if (index < 0 || index >= solutionShuffled.length || index >= shuffledPlacements.length) {
1517
- return null;
1518
- }
1519
- const letterToday = solutionShuffled[index];
1520
- const placement = shuffledPlacements[index];
1521
- if (!letterToday || !placement) return null;
1522
- const alreadyCollectedToday = (collected ?? []).includes(letterToday);
1523
- if (alreadyCollectedToday) {
1524
- return {
1525
- todaysClue: null,
1526
- todaysLetter: null,
1527
- todaysPlacement: null
1528
- };
1529
- }
1530
- return {
1531
- todaysClue: placement.clue,
1532
- todaysLetter: letterToday,
1533
- todaysPlacement: placement.id
1534
- };
1535
- }
1536
-
1537
1539
  // src/utils/affiliate.ts
1538
1540
  var AFFILIATE_REWARDS = {
1539
1541
  ["NEW_EVENT_REGISTRATION" /* NEW_EVENT_REGISTRATION */]: {