@timardex/cluemart-shared 1.6.112 → 1.7.0
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/dist/ad-CVkVX_z5.d.ts +296 -0
- package/dist/ad-DA9ECAhK.d.mts +296 -0
- package/dist/affiliate-1RtkLnLP.d.ts +35 -0
- package/dist/affiliate-Cos2Syz5.d.mts +35 -0
- package/dist/{chunk-R6PCFOYO.mjs → chunk-HZMP7GXC.mjs} +2628 -948
- package/dist/chunk-HZMP7GXC.mjs.map +1 -0
- package/dist/{chunk-X3OLM35T.mjs → chunk-KZTOISPA.mjs} +8 -14
- package/dist/chunk-KZTOISPA.mjs.map +1 -0
- package/dist/{chunk-ILILH7E2.mjs → chunk-MVQ3CFQR.mjs} +23 -12
- package/dist/chunk-MVQ3CFQR.mjs.map +1 -0
- package/dist/{chunk-AYO3E4DM.mjs → chunk-RKIRWZCH.mjs} +183 -39
- package/dist/chunk-RKIRWZCH.mjs.map +1 -0
- package/dist/{chunk-LBEJECG3.mjs → chunk-TAECMXM4.mjs} +219 -249
- package/dist/{chunk-LBEJECG3.mjs.map → chunk-TAECMXM4.mjs.map} +1 -1
- package/dist/{chunk-BIJ5NDXW.mjs → chunk-ZZJSCYJK.mjs} +42 -46
- package/dist/chunk-ZZJSCYJK.mjs.map +1 -0
- package/dist/{contactUs-CBWzefUS.d.mts → contactUs-DGrDzJaM.d.mts} +1 -1
- package/dist/{contactUs--NoohZBu.d.ts → contactUs-H7799pWe.d.ts} +1 -1
- package/dist/enums/index.cjs +7 -13
- package/dist/enums/index.cjs.map +1 -1
- package/dist/enums/index.d.mts +9 -15
- package/dist/enums/index.d.ts +9 -15
- package/dist/enums/index.mjs +1 -1
- package/dist/formFields/index.cjs +73 -136
- package/dist/formFields/index.cjs.map +1 -1
- package/dist/formFields/index.d.mts +2 -3
- package/dist/formFields/index.d.ts +2 -3
- package/dist/formFields/index.mjs +4 -9
- package/dist/{global-DePDtOFt.d.mts → global-BUUfmCo7.d.mts} +11 -12
- package/dist/{global-CUYYxpy2.d.ts → global-fKbMmluy.d.ts} +11 -12
- package/dist/graphql/index.cjs +1251 -694
- package/dist/graphql/index.cjs.map +1 -1
- package/dist/graphql/index.d.mts +173 -423
- package/dist/graphql/index.d.ts +173 -423
- package/dist/graphql/index.mjs +21 -33
- package/dist/hooks/index.cjs +306 -936
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.mts +4 -10
- package/dist/hooks/index.d.ts +4 -10
- package/dist/hooks/index.mjs +58 -170
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/images/apple-maps-icon.webp.d.ts +1 -8
- package/dist/images/banner-horizontal.webp.d.ts +1 -8
- package/dist/images/banner-vertical.webp.d.ts +1 -8
- package/dist/images/cluiTui.webp.d.ts +1 -8
- package/dist/images/corporate.webp.d.ts +1 -8
- package/dist/images/facebook.webp.d.ts +1 -8
- package/dist/images/gazebo-top.webp.d.ts +1 -8
- package/dist/images/google-maps-icon.webp.d.ts +1 -8
- package/dist/images/googleMaps-logo-dark.webp.d.ts +1 -8
- package/dist/images/googleMaps-logo-light.webp.d.ts +1 -8
- package/dist/images/instagram.webp.d.ts +1 -8
- package/dist/images/logo-atr.webp.d.ts +1 -8
- package/dist/images/logo-dark.webp.d.ts +1 -8
- package/dist/images/logo.webp.d.ts +1 -8
- package/dist/images/meet.webp.d.ts +1 -8
- package/dist/images/mini-market1.webp.d.ts +1 -8
- package/dist/images/mini-market2.webp.d.ts +1 -8
- package/dist/images/mini-market3.webp.d.ts +1 -8
- package/dist/images/mini-market4.webp.d.ts +1 -8
- package/dist/images/mini-market5.webp.d.ts +1 -8
- package/dist/images/poll.webp.d.ts +1 -8
- package/dist/images/poster1.webp.d.ts +1 -8
- package/dist/images/poster2.webp.d.ts +1 -8
- package/dist/images/poster3.webp.d.ts +1 -8
- package/dist/images/poster4.webp.d.ts +1 -8
- package/dist/images/private.webp.d.ts +1 -8
- package/dist/images/qr-code.webp.d.ts +1 -8
- package/dist/images/school.webp.d.ts +1 -8
- package/dist/images/sima.webp.d.ts +1 -8
- package/dist/images/store-android.webp.d.ts +1 -8
- package/dist/images/store-ios.webp.d.ts +1 -8
- package/dist/images/tablas.webp.d.ts +1 -8
- package/dist/images/telefonos.webp.d.ts +1 -8
- package/dist/images/tiktok.webp.d.ts +1 -8
- package/dist/images/tip.webp.d.ts +1 -8
- package/dist/images/ugralos.webp.d.ts +1 -8
- package/dist/images/waze-maps-icon.webp.d.ts +1 -8
- package/dist/images/website.webp.d.ts +1 -8
- package/dist/images/youtube.webp.d.ts +1 -8
- package/dist/index.cjs +1673 -1623
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +240 -654
- package/dist/index.d.ts +240 -654
- package/dist/index.mjs +1672 -1585
- package/dist/index.mjs.map +1 -1
- package/dist/map/index.cjs +9 -14
- package/dist/map/index.cjs.map +1 -1
- package/dist/map/index.d.mts +13 -16
- package/dist/map/index.d.ts +13 -16
- package/dist/map/index.mjs +9 -14
- package/dist/map/index.mjs.map +1 -1
- package/dist/{resourceActivities-CMUcn2P7.d.ts → resourceActivities-BL_12IAo.d.ts} +4 -9
- package/dist/{resourceActivities-CwbJFGIp.d.mts → resourceActivities-zczOntNk.d.mts} +4 -9
- package/dist/sharing/index.cjs +1252 -39
- package/dist/sharing/index.cjs.map +1 -1
- package/dist/sharing/index.d.mts +5 -17
- package/dist/sharing/index.d.ts +5 -17
- package/dist/sharing/index.mjs +30 -34
- package/dist/types/index.cjs +2 -15
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.mts +23 -10
- package/dist/types/index.d.ts +23 -10
- package/dist/types/index.mjs +5 -9
- package/dist/utils/index.cjs +136 -355
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.mts +35 -87
- package/dist/utils/index.d.ts +35 -87
- package/dist/utils/index.mjs +15 -42
- package/package.json +10 -31
- package/dist/ad-BUYzE6zx.d.ts +0 -181
- package/dist/ad-BhLoEul3.d.mts +0 -181
- package/dist/affiliate-BbtjeUP4.d.mts +0 -73
- package/dist/affiliate-C51nzKsw.d.ts +0 -73
- package/dist/apollo/index.cjs +0 -1383
- package/dist/apollo/index.cjs.map +0 -1
- package/dist/apollo/index.d.mts +0 -323
- package/dist/apollo/index.d.ts +0 -323
- package/dist/apollo/index.mjs +0 -1295
- package/dist/apollo/index.mjs.map +0 -1
- package/dist/auth/index.cjs +0 -1727
- package/dist/auth/index.cjs.map +0 -1
- package/dist/auth/index.d.mts +0 -166
- package/dist/auth/index.d.ts +0 -166
- package/dist/auth/index.mjs +0 -380
- package/dist/auth/index.mjs.map +0 -1
- package/dist/chunk-32MKHJTX.mjs +0 -1207
- package/dist/chunk-32MKHJTX.mjs.map +0 -1
- package/dist/chunk-AYO3E4DM.mjs.map +0 -1
- package/dist/chunk-BIJ5NDXW.mjs.map +0 -1
- package/dist/chunk-DQ7ZHIXW.mjs +0 -26
- package/dist/chunk-DQ7ZHIXW.mjs.map +0 -1
- package/dist/chunk-ILILH7E2.mjs.map +0 -1
- package/dist/chunk-R6PCFOYO.mjs.map +0 -1
- package/dist/chunk-RAYUJODN.mjs +0 -45
- package/dist/chunk-RAYUJODN.mjs.map +0 -1
- package/dist/chunk-SD42WIMV.mjs +0 -297
- package/dist/chunk-SD42WIMV.mjs.map +0 -1
- package/dist/chunk-VPANTTZI.mjs +0 -262
- package/dist/chunk-VPANTTZI.mjs.map +0 -1
- package/dist/chunk-X3OLM35T.mjs.map +0 -1
- package/dist/subscription-BU8GvH2K.d.ts +0 -12
- package/dist/subscription-bmAdrnfi.d.mts +0 -12
- package/dist/user-D47MLFyH.d.ts +0 -134
- package/dist/user-DE8edl3u.d.mts +0 -134
|
@@ -1,97 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
dateFormat,
|
|
3
|
-
formatDate,
|
|
4
|
-
isIsoDateString,
|
|
5
|
-
mapArrayToOptions,
|
|
6
|
-
nzStartOfDay,
|
|
7
|
-
sortDatesChronologically,
|
|
8
|
-
stripOverlaySubtitleSpecialChars
|
|
9
|
-
} from "./chunk-SD42WIMV.mjs";
|
|
10
1
|
import {
|
|
11
2
|
PROMO_CODE_PREFIX,
|
|
12
3
|
gameScreenIdentifierList
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import {
|
|
15
|
-
isTransientNetworkError
|
|
16
|
-
} from "./chunk-RAYUJODN.mjs";
|
|
4
|
+
} from "./chunk-MVQ3CFQR.mjs";
|
|
17
5
|
import {
|
|
6
|
+
EnumEventDateStatus,
|
|
18
7
|
EnumInviteStatus,
|
|
19
8
|
EnumPaymentMethod,
|
|
20
9
|
EnumRegions
|
|
21
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-KZTOISPA.mjs";
|
|
22
11
|
|
|
23
|
-
// src/utils/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
x = Math.imul(x ^ x >>> 15, x | 1);
|
|
30
|
-
x ^= x + Math.imul(x ^ x >>> 7, x | 61);
|
|
31
|
-
return ((x ^ x >>> 14) >>> 0) / 4294967296;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
function hashStringToNumber(seed) {
|
|
35
|
-
let hash = 2166136261;
|
|
36
|
-
for (let i = 0; i < seed.length; i++) {
|
|
37
|
-
hash ^= seed.codePointAt(i) ?? 0;
|
|
38
|
-
hash = Math.imul(hash, 16777619);
|
|
39
|
-
}
|
|
40
|
-
return hash >>> 0;
|
|
41
|
-
}
|
|
42
|
-
function seededShuffle(array, seed) {
|
|
43
|
-
const rng = createSeededRng(hashStringToNumber(seed));
|
|
44
|
-
const result = [...array];
|
|
45
|
-
for (let i = result.length - 1; i > 0; i--) {
|
|
46
|
-
const j = Math.floor(rng() * (i + 1));
|
|
47
|
-
[result[i], result[j]] = [result[j], result[i]];
|
|
48
|
-
}
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
function getDayIndex(start, today) {
|
|
52
|
-
return today.diff(start, "day");
|
|
53
|
-
}
|
|
54
|
-
function computeDailyClueState(dailyClue) {
|
|
55
|
-
const { startDate, endDate } = dailyClue.gameFields.gameDate;
|
|
56
|
-
const { solutionShuffled, collected } = dailyClue.letterInfo;
|
|
57
|
-
const today = nzStartOfDay();
|
|
58
|
-
const start = nzStartOfDay(startDate);
|
|
59
|
-
const end = nzStartOfDay(endDate);
|
|
60
|
-
if (today.isBefore(start)) {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
const shuffledPlacements = seededShuffle(
|
|
64
|
-
gameScreenIdentifierList,
|
|
65
|
-
start.toISOString()
|
|
66
|
-
);
|
|
67
|
-
const index = getDayIndex(start, today);
|
|
68
|
-
if (today.isAfter(end)) {
|
|
69
|
-
return {
|
|
70
|
-
todaysClue: null,
|
|
71
|
-
todaysLetter: null,
|
|
72
|
-
todaysPlacement: null
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
if (index < 0 || index >= solutionShuffled.length || index >= shuffledPlacements.length) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
const letterToday = solutionShuffled[index];
|
|
79
|
-
const placement = shuffledPlacements[index];
|
|
80
|
-
if (!letterToday || !placement) return null;
|
|
81
|
-
const alreadyCollectedToday = (collected ?? []).includes(letterToday);
|
|
82
|
-
if (alreadyCollectedToday) {
|
|
83
|
-
return {
|
|
84
|
-
todaysClue: null,
|
|
85
|
-
todaysLetter: null,
|
|
86
|
-
todaysPlacement: null
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
todaysClue: placement.clue,
|
|
91
|
-
todaysLetter: letterToday,
|
|
92
|
-
todaysPlacement: placement.id
|
|
93
|
-
};
|
|
94
|
-
}
|
|
12
|
+
// src/utils/date.ts
|
|
13
|
+
import dayjs from "dayjs";
|
|
14
|
+
import customParseFormat from "dayjs/plugin/customParseFormat.js";
|
|
15
|
+
import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js";
|
|
16
|
+
import timezone from "dayjs/plugin/timezone.js";
|
|
17
|
+
import utc from "dayjs/plugin/utc.js";
|
|
95
18
|
|
|
96
19
|
// src/utils/utils.ts
|
|
97
20
|
var removeTypename = (obj) => {
|
|
@@ -117,9 +40,12 @@ var removeTypename = (obj) => {
|
|
|
117
40
|
return obj;
|
|
118
41
|
};
|
|
119
42
|
var truncateText = (text, maxLength = 30) => {
|
|
120
|
-
|
|
121
|
-
return result.length > maxLength ? result.substring(0, maxLength) + "..." : result;
|
|
43
|
+
return text.length > maxLength ? text.substring(0, maxLength) + "..." : text;
|
|
122
44
|
};
|
|
45
|
+
var mapArrayToOptions = (items) => items.map((item) => ({
|
|
46
|
+
label: item,
|
|
47
|
+
value: item
|
|
48
|
+
}));
|
|
123
49
|
var capitalizeFirstLetter = (str) => {
|
|
124
50
|
return str.split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
|
|
125
51
|
};
|
|
@@ -136,8 +62,10 @@ var paymentMethodOptions = mapArrayToOptions(
|
|
|
136
62
|
Object.values(EnumPaymentMethod)
|
|
137
63
|
);
|
|
138
64
|
function normalizeUrl(url) {
|
|
139
|
-
|
|
140
|
-
|
|
65
|
+
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
|
66
|
+
return `https://${url}`;
|
|
67
|
+
}
|
|
68
|
+
return url;
|
|
141
69
|
}
|
|
142
70
|
var licenseNiceNames = {
|
|
143
71
|
["pro_event" /* PRO_EVENT */]: "Pro Event",
|
|
@@ -146,9 +74,7 @@ var licenseNiceNames = {
|
|
|
146
74
|
["standard_vendor" /* STANDARD_VENDOR */]: "Standard Stallholder",
|
|
147
75
|
["pro_plus_event" /* PRO_PLUS_EVENT */]: "Pro+Ads Event",
|
|
148
76
|
["pro_plus_vendor" /* PRO_PLUS_VENDOR */]: "Pro+Ads Stallholder",
|
|
149
|
-
["standard_partner" /* STANDARD_PARTNER */]: "Partner"
|
|
150
|
-
["standard_affiliate" /* STANDARD_AFFILIATE */]: "Affiliate",
|
|
151
|
-
["standard_school" /* STANDARD_SCHOOL */]: "School"
|
|
77
|
+
["standard_partner" /* STANDARD_PARTNER */]: "Partner"
|
|
152
78
|
};
|
|
153
79
|
var cluemartSocialMedia = [
|
|
154
80
|
{
|
|
@@ -194,14 +120,184 @@ var PostTypeLabels = {
|
|
|
194
120
|
};
|
|
195
121
|
var CM_SCHOOL_PROMO_CODE = `${PROMO_CODE_PREFIX}SCHOOL`;
|
|
196
122
|
var CM_AFFILIATE_PROMO_CODE = `${PROMO_CODE_PREFIX}AFFILIATE`;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
123
|
+
|
|
124
|
+
// src/utils/date.ts
|
|
125
|
+
var dateFormat = "DD-MM-YYYY";
|
|
126
|
+
var timeFormat = "HH:mm";
|
|
127
|
+
dayjs.extend(customParseFormat);
|
|
128
|
+
dayjs.extend(utc);
|
|
129
|
+
dayjs.extend(timezone);
|
|
130
|
+
dayjs.extend(isSameOrAfter);
|
|
131
|
+
var NZ_TZ = "Pacific/Auckland";
|
|
132
|
+
function toNZTime(date) {
|
|
133
|
+
return date ? dayjs(date).tz(NZ_TZ) : dayjs().tz(NZ_TZ);
|
|
134
|
+
}
|
|
135
|
+
function nzStartOfDay(input) {
|
|
136
|
+
if (input == null) {
|
|
137
|
+
return dayjs().tz(NZ_TZ).startOf("day");
|
|
138
|
+
}
|
|
139
|
+
return dayjs.tz(input, NZ_TZ).startOf("day");
|
|
140
|
+
}
|
|
141
|
+
var formatDate = (dateStr, display = "datetime", timeStr) => {
|
|
142
|
+
const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
|
|
143
|
+
const dateTime = timeStr ? dayjs(dateTimeStr, `${dateFormat} ${timeFormat}`) : dayjs(dateStr, dateFormat);
|
|
144
|
+
const formattedDate = dateTime.format("dddd, D MMMM, YYYY");
|
|
145
|
+
const formattedTime = dateTime.format("h:mm a");
|
|
146
|
+
switch (display) {
|
|
147
|
+
case "date":
|
|
148
|
+
return formattedDate;
|
|
149
|
+
case "time":
|
|
150
|
+
return formattedTime;
|
|
151
|
+
case "datetime":
|
|
152
|
+
return `${formattedDate} at ${formattedTime}`;
|
|
153
|
+
default:
|
|
154
|
+
return formattedDate;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
var getCurrentAndFutureDates = (dates) => {
|
|
158
|
+
const now = dayjs();
|
|
159
|
+
return dates.filter((dateObj) => {
|
|
160
|
+
const dateTime = dayjs(
|
|
161
|
+
`${dateObj.startDate} ${dateObj.startTime}`,
|
|
162
|
+
`${dateFormat} ${timeFormat}`
|
|
163
|
+
);
|
|
164
|
+
return dateTime.isSameOrAfter(now);
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
var isFutureDatesBeforeThreshold = (date, minHoursFromNow) => {
|
|
168
|
+
const threshold = minHoursFromNow ? dayjs().add(minHoursFromNow, "hour") : dayjs().startOf("day");
|
|
169
|
+
const dateTime = dayjs(
|
|
170
|
+
`${date.startDate} ${date.startTime}`,
|
|
171
|
+
`${dateFormat} ${timeFormat}`
|
|
172
|
+
);
|
|
173
|
+
return dateTime.isSameOrAfter(threshold);
|
|
174
|
+
};
|
|
175
|
+
var formatTimestamp = (timestamp) => {
|
|
176
|
+
const formattedDate = toNZTime(timestamp).format(dateFormat);
|
|
177
|
+
return formatDate(formattedDate, "date");
|
|
178
|
+
};
|
|
179
|
+
var isIsoDateString = (value) => {
|
|
180
|
+
return typeof value === "string" && !Number.isNaN(Date.parse(value));
|
|
181
|
+
};
|
|
182
|
+
function sortDatesChronologically(dates) {
|
|
183
|
+
if (!dates?.length) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
return [...dates].sort((a, b) => {
|
|
187
|
+
const dateTimeFormat = `${dateFormat} ${timeFormat}`;
|
|
188
|
+
const dateA = dayjs(`${a.startDate} ${a.startTime}`, dateTimeFormat);
|
|
189
|
+
const dateB = dayjs(`${b.startDate} ${b.startTime}`, dateTimeFormat);
|
|
190
|
+
return dateA.valueOf() - dateB.valueOf();
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
var futureTimePeriods = mapArrayToOptions(
|
|
194
|
+
Object.values(EnumEventDateStatus)
|
|
195
|
+
).filter(
|
|
196
|
+
(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 */
|
|
197
|
+
).map((period) => ({
|
|
198
|
+
label: period.value.replaceAll("_", " "),
|
|
199
|
+
value: period.value
|
|
200
|
+
}));
|
|
201
|
+
|
|
202
|
+
// src/utils/dailyClueGame.ts
|
|
203
|
+
function createSeededRng(seed) {
|
|
204
|
+
let t = seed >>> 0;
|
|
205
|
+
return function random() {
|
|
206
|
+
t += 1831565813;
|
|
207
|
+
let x = t;
|
|
208
|
+
x = Math.imul(x ^ x >>> 15, x | 1);
|
|
209
|
+
x ^= x + Math.imul(x ^ x >>> 7, x | 61);
|
|
210
|
+
return ((x ^ x >>> 14) >>> 0) / 4294967296;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
function hashStringToNumber(seed) {
|
|
214
|
+
let hash = 2166136261;
|
|
215
|
+
for (let i = 0; i < seed.length; i++) {
|
|
216
|
+
hash ^= seed.codePointAt(i) ?? 0;
|
|
217
|
+
hash = Math.imul(hash, 16777619);
|
|
218
|
+
}
|
|
219
|
+
return hash >>> 0;
|
|
220
|
+
}
|
|
221
|
+
function seededShuffle(array, seed) {
|
|
222
|
+
const rng = createSeededRng(hashStringToNumber(seed));
|
|
223
|
+
const result = [...array];
|
|
224
|
+
for (let i = result.length - 1; i > 0; i--) {
|
|
225
|
+
const j = Math.floor(rng() * (i + 1));
|
|
226
|
+
[result[i], result[j]] = [result[j], result[i]];
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
function getDayIndex(start, today) {
|
|
231
|
+
return today.diff(start, "day");
|
|
232
|
+
}
|
|
233
|
+
function computeDailyClueState(dailyClue) {
|
|
234
|
+
const { startDate, endDate } = dailyClue.gameFields.gameDate;
|
|
235
|
+
const { solutionShuffled, collected } = dailyClue.letterInfo;
|
|
236
|
+
const today = nzStartOfDay();
|
|
237
|
+
const start = nzStartOfDay(startDate);
|
|
238
|
+
const end = nzStartOfDay(endDate);
|
|
239
|
+
if (today.isBefore(start)) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
const shuffledPlacements = seededShuffle(
|
|
243
|
+
gameScreenIdentifierList,
|
|
244
|
+
start.toISOString()
|
|
245
|
+
);
|
|
246
|
+
const index = getDayIndex(start, today);
|
|
247
|
+
if (today.isAfter(end)) {
|
|
248
|
+
return {
|
|
249
|
+
todaysClue: null,
|
|
250
|
+
todaysLetter: null,
|
|
251
|
+
todaysPlacement: null
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
if (index < 0 || index >= solutionShuffled.length || index >= shuffledPlacements.length) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
const letterToday = solutionShuffled[index];
|
|
258
|
+
const placement = shuffledPlacements[index];
|
|
259
|
+
if (!letterToday || !placement) return null;
|
|
260
|
+
const alreadyCollectedToday = (collected ?? []).includes(letterToday);
|
|
261
|
+
if (alreadyCollectedToday) {
|
|
262
|
+
return {
|
|
263
|
+
todaysClue: null,
|
|
264
|
+
todaysLetter: null,
|
|
265
|
+
todaysPlacement: null
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
todaysClue: placement.clue,
|
|
270
|
+
todaysLetter: letterToday,
|
|
271
|
+
todaysPlacement: placement.id
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// src/utils/affiliate.ts
|
|
276
|
+
var AFFILIATE_REWARDS = {
|
|
277
|
+
["NEW_EVENT_REGISTRATION" /* NEW_EVENT_REGISTRATION */]: {
|
|
278
|
+
description: "10 points for new event registration (one-time reward)",
|
|
279
|
+
value: 10
|
|
280
|
+
},
|
|
281
|
+
["NEW_VENDOR_REGISTRATION" /* NEW_VENDOR_REGISTRATION */]: {
|
|
282
|
+
description: "5 points for new vendor registration (one-time reward)",
|
|
283
|
+
value: 5
|
|
284
|
+
},
|
|
285
|
+
["NEW_PARTNER_REGISTRATION" /* NEW_PARTNER_REGISTRATION */]: {
|
|
286
|
+
description: "",
|
|
287
|
+
value: 0
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
function createAffiliateReward(rewardType, createdAt) {
|
|
291
|
+
const reward = AFFILIATE_REWARDS[rewardType];
|
|
292
|
+
return {
|
|
293
|
+
createdAt,
|
|
294
|
+
deletedAt: null,
|
|
295
|
+
redeemedAt: null,
|
|
296
|
+
rewardDescription: reward.description,
|
|
297
|
+
rewardType,
|
|
298
|
+
rewardValue: reward.value,
|
|
299
|
+
updatedAt: null
|
|
300
|
+
};
|
|
205
301
|
}
|
|
206
302
|
|
|
207
303
|
// src/utils/resourceImage.ts
|
|
@@ -255,18 +351,18 @@ function filterEventsByDateStatusPeriod(events, period) {
|
|
|
255
351
|
}
|
|
256
352
|
|
|
257
353
|
// src/calendar/eventCalendar.ts
|
|
258
|
-
import
|
|
354
|
+
import dayjs2 from "dayjs";
|
|
259
355
|
var KNOWN_EVENT_SCHEDULE_STATUSES = /* @__PURE__ */ new Set([
|
|
260
356
|
"Started" /* STARTED */,
|
|
261
357
|
"Starting_Soon" /* STARTING_SOON */,
|
|
262
358
|
"Ended" /* ENDED */
|
|
263
359
|
]);
|
|
264
360
|
function toCalendarIsoDate(startDate) {
|
|
265
|
-
const formatted =
|
|
266
|
-
return
|
|
361
|
+
const formatted = dayjs2(startDate, dateFormat).format("YYYY-MM-DD");
|
|
362
|
+
return dayjs2(formatted, "YYYY-MM-DD", true).isValid() ? formatted : null;
|
|
267
363
|
}
|
|
268
364
|
function fromCalendarIsoDate(isoDate) {
|
|
269
|
-
return
|
|
365
|
+
return dayjs2(isoDate, "YYYY-MM-DD").format(dateFormat);
|
|
270
366
|
}
|
|
271
367
|
function getEventCalendarIsoDates(dateTimes) {
|
|
272
368
|
return dateTimes?.map((dateTime) => toCalendarIsoDate(dateTime.startDate)).filter((date) => Boolean(date)) ?? [];
|
|
@@ -1488,139 +1584,10 @@ function getVendorEventsEmptyMessage() {
|
|
|
1488
1584
|
return "No events found.";
|
|
1489
1585
|
}
|
|
1490
1586
|
|
|
1491
|
-
// src/utils/affiliate.ts
|
|
1492
|
-
var AFFILIATE_PARTICIPANT_TYPE_LABELS = {
|
|
1493
|
-
["INDIVIDUAL" /* INDIVIDUAL */]: "Individual",
|
|
1494
|
-
["SOLE_TRADER" /* SOLE_TRADER */]: "Sole Trader",
|
|
1495
|
-
["COMPANY" /* COMPANY */]: "Company"
|
|
1496
|
-
};
|
|
1497
|
-
var AFFILIATE_REWARDS = {
|
|
1498
|
-
["NEW_EVENT_REGISTRATION" /* NEW_EVENT_REGISTRATION */]: {
|
|
1499
|
-
description: "10 points for new event registration (one-time reward)",
|
|
1500
|
-
value: 10
|
|
1501
|
-
},
|
|
1502
|
-
["NEW_VENDOR_REGISTRATION" /* NEW_VENDOR_REGISTRATION */]: {
|
|
1503
|
-
description: "5 points for new vendor registration (one-time reward)",
|
|
1504
|
-
value: 5
|
|
1505
|
-
},
|
|
1506
|
-
["ACTIVE_VENDOR_PRO_SUBSCRIPTION" /* ACTIVE_VENDOR_PRO_SUBSCRIPTION */]: {
|
|
1507
|
-
description: "3 points for active vendor pro subscription (monthly reward)",
|
|
1508
|
-
value: 3
|
|
1509
|
-
},
|
|
1510
|
-
["ACTIVE_VENDOR_STANDARD_SUBSCRIPTION" /* ACTIVE_VENDOR_STANDARD_SUBSCRIPTION */]: {
|
|
1511
|
-
description: "1 point for active vendor standard subscription (monthly reward)",
|
|
1512
|
-
value: 1
|
|
1513
|
-
},
|
|
1514
|
-
["ACTIVE_VENDOR_BONUS_REWARD" /* ACTIVE_VENDOR_BONUS_REWARD */]: {
|
|
1515
|
-
description: "5 bonus points for every 10th active vendor (one-time reward)",
|
|
1516
|
-
value: 5
|
|
1517
|
-
},
|
|
1518
|
-
["ACTIVE_EVENT_WITH_VENDOR_REGISTRATIONS" /* ACTIVE_EVENT_WITH_VENDOR_REGISTRATIONS */]: {
|
|
1519
|
-
description: "40 points for active event with vendor registrations (one-time reward)",
|
|
1520
|
-
value: 40
|
|
1521
|
-
}
|
|
1522
|
-
};
|
|
1523
|
-
function createAffiliateReward(rewardType, createdAt) {
|
|
1524
|
-
const reward = AFFILIATE_REWARDS[rewardType];
|
|
1525
|
-
return {
|
|
1526
|
-
createdAt,
|
|
1527
|
-
redeemedAt: null,
|
|
1528
|
-
rewardDescription: reward.description,
|
|
1529
|
-
rewardType,
|
|
1530
|
-
rewardValue: reward.value
|
|
1531
|
-
};
|
|
1532
|
-
}
|
|
1533
|
-
|
|
1534
|
-
// src/utils/irdNumber.ts
|
|
1535
|
-
var PRIMARY_WEIGHTS = [3, 2, 7, 6, 5, 4, 3, 2];
|
|
1536
|
-
var SECONDARY_WEIGHTS = [7, 4, 3, 2, 5, 2, 7, 6];
|
|
1537
|
-
var IRD_MIN = 1e7;
|
|
1538
|
-
var IRD_MAX = 2e8;
|
|
1539
|
-
function calculateCheckDigit(baseDigits, weights) {
|
|
1540
|
-
const sum = [...baseDigits].reduce(
|
|
1541
|
-
(acc, digit, index) => acc + Number(digit) * weights[index],
|
|
1542
|
-
0
|
|
1543
|
-
);
|
|
1544
|
-
const remainder = sum % 11;
|
|
1545
|
-
return remainder === 0 ? 0 : 11 - remainder;
|
|
1546
|
-
}
|
|
1547
|
-
function normalizeIrdNumber(value) {
|
|
1548
|
-
return value.replace(/\D/g, "");
|
|
1549
|
-
}
|
|
1550
|
-
function formatIrdNumber(input) {
|
|
1551
|
-
const digitsOnly = normalizeIrdNumber(input).slice(0, 9);
|
|
1552
|
-
const parts = [];
|
|
1553
|
-
if (digitsOnly.length > 0) parts.push(digitsOnly.slice(0, 3));
|
|
1554
|
-
if (digitsOnly.length > 3) parts.push(digitsOnly.slice(3, 6));
|
|
1555
|
-
if (digitsOnly.length > 6) parts.push(digitsOnly.slice(6, 9));
|
|
1556
|
-
return parts.join("-");
|
|
1557
|
-
}
|
|
1558
|
-
function isValidIrdNumber(value) {
|
|
1559
|
-
const digits = normalizeIrdNumber(value);
|
|
1560
|
-
if (!/^\d{8,9}$/.test(digits)) {
|
|
1561
|
-
return false;
|
|
1562
|
-
}
|
|
1563
|
-
const ird = Number(digits);
|
|
1564
|
-
if (ird < IRD_MIN || ird > IRD_MAX) {
|
|
1565
|
-
return false;
|
|
1566
|
-
}
|
|
1567
|
-
const padded = digits.padStart(9, "0");
|
|
1568
|
-
const baseDigits = padded.slice(0, -1);
|
|
1569
|
-
const checkDigit = Number(padded.slice(-1));
|
|
1570
|
-
let calculated = calculateCheckDigit(baseDigits, PRIMARY_WEIGHTS);
|
|
1571
|
-
if (calculated === 10) {
|
|
1572
|
-
calculated = calculateCheckDigit(baseDigits, SECONDARY_WEIGHTS);
|
|
1573
|
-
if (calculated === 10) {
|
|
1574
|
-
return false;
|
|
1575
|
-
}
|
|
1576
|
-
}
|
|
1577
|
-
return calculated === checkDigit;
|
|
1578
|
-
}
|
|
1579
|
-
|
|
1580
|
-
// src/utils/toUserFacingErrorMessage.ts
|
|
1581
|
-
var DEFAULT_USER_FACING_ERROR = "Something went wrong. Please try again.";
|
|
1582
|
-
var NETWORK_USER_FACING_ERROR = "Unable to connect. Please check your internet connection and try again.";
|
|
1583
|
-
var INTERNAL_ERROR_PATTERNS = [
|
|
1584
|
-
/connection\s*<monitor>/i,
|
|
1585
|
-
/\bmongo/i,
|
|
1586
|
-
/\b\d{1,3}(?:\.\d{1,3}){3}(?::\d+)?\b/,
|
|
1587
|
-
/\beconn(?:refused|reset|aborted)\b/i,
|
|
1588
|
-
/\betimedout\b/i,
|
|
1589
|
-
/\benotfound\b/i,
|
|
1590
|
-
/\bsocket hang up\b/i,
|
|
1591
|
-
/\binternal server error\b/i,
|
|
1592
|
-
/received status code 5\d\d/i,
|
|
1593
|
-
/\bat\s+\S+\s+\([^)]+:\d+:\d+\)/
|
|
1594
|
-
];
|
|
1595
|
-
function isInternalErrorMessage(message) {
|
|
1596
|
-
return INTERNAL_ERROR_PATTERNS.some((pattern) => pattern.test(message));
|
|
1597
|
-
}
|
|
1598
|
-
function toUserFacingErrorMessage(error, fallback = DEFAULT_USER_FACING_ERROR) {
|
|
1599
|
-
const message = (error ?? "").trim();
|
|
1600
|
-
if (!message) return fallback;
|
|
1601
|
-
if (isTransientNetworkError(message)) {
|
|
1602
|
-
return NETWORK_USER_FACING_ERROR;
|
|
1603
|
-
}
|
|
1604
|
-
if (isInternalErrorMessage(message)) {
|
|
1605
|
-
return fallback;
|
|
1606
|
-
}
|
|
1607
|
-
return message;
|
|
1608
|
-
}
|
|
1609
|
-
function getErrorMessage(error, fallback = DEFAULT_USER_FACING_ERROR) {
|
|
1610
|
-
let raw;
|
|
1611
|
-
if (error instanceof Error) {
|
|
1612
|
-
raw = error.message;
|
|
1613
|
-
} else if (typeof error === "string") {
|
|
1614
|
-
raw = error;
|
|
1615
|
-
}
|
|
1616
|
-
return toUserFacingErrorMessage(raw, fallback);
|
|
1617
|
-
}
|
|
1618
|
-
|
|
1619
1587
|
export {
|
|
1620
|
-
seededShuffle,
|
|
1621
|
-
computeDailyClueState,
|
|
1622
1588
|
removeTypename,
|
|
1623
1589
|
truncateText,
|
|
1590
|
+
mapArrayToOptions,
|
|
1624
1591
|
capitalizeFirstLetter,
|
|
1625
1592
|
statusOptions,
|
|
1626
1593
|
availableRegionTypes,
|
|
@@ -1638,7 +1605,21 @@ export {
|
|
|
1638
1605
|
PostTypeLabels,
|
|
1639
1606
|
CM_SCHOOL_PROMO_CODE,
|
|
1640
1607
|
CM_AFFILIATE_PROMO_CODE,
|
|
1641
|
-
|
|
1608
|
+
dateFormat,
|
|
1609
|
+
timeFormat,
|
|
1610
|
+
toNZTime,
|
|
1611
|
+
nzStartOfDay,
|
|
1612
|
+
formatDate,
|
|
1613
|
+
getCurrentAndFutureDates,
|
|
1614
|
+
isFutureDatesBeforeThreshold,
|
|
1615
|
+
formatTimestamp,
|
|
1616
|
+
isIsoDateString,
|
|
1617
|
+
sortDatesChronologically,
|
|
1618
|
+
futureTimePeriods,
|
|
1619
|
+
seededShuffle,
|
|
1620
|
+
computeDailyClueState,
|
|
1621
|
+
AFFILIATE_REWARDS,
|
|
1622
|
+
createAffiliateReward,
|
|
1642
1623
|
resolveResourceImageActive,
|
|
1643
1624
|
normalizeResourceImage,
|
|
1644
1625
|
isResourceImageActive,
|
|
@@ -1683,17 +1664,6 @@ export {
|
|
|
1683
1664
|
collectVendorEventRelationDateTimes,
|
|
1684
1665
|
getVendorEventRelationStartDates,
|
|
1685
1666
|
getVendorEventRelationDateOptions,
|
|
1686
|
-
getVendorEventsEmptyMessage
|
|
1687
|
-
AFFILIATE_PARTICIPANT_TYPE_LABELS,
|
|
1688
|
-
AFFILIATE_REWARDS,
|
|
1689
|
-
createAffiliateReward,
|
|
1690
|
-
normalizeIrdNumber,
|
|
1691
|
-
formatIrdNumber,
|
|
1692
|
-
isValidIrdNumber,
|
|
1693
|
-
DEFAULT_USER_FACING_ERROR,
|
|
1694
|
-
NETWORK_USER_FACING_ERROR,
|
|
1695
|
-
isInternalErrorMessage,
|
|
1696
|
-
toUserFacingErrorMessage,
|
|
1697
|
-
getErrorMessage
|
|
1667
|
+
getVendorEventsEmptyMessage
|
|
1698
1668
|
};
|
|
1699
|
-
//# sourceMappingURL=chunk-
|
|
1669
|
+
//# sourceMappingURL=chunk-TAECMXM4.mjs.map
|