@timardex/cluemart-shared 1.5.503 → 1.5.505
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/{chunk-KEUG6IHV.mjs → chunk-UA64PDR4.mjs} +2 -2
- package/dist/{chunk-P7FGPPWG.mjs → chunk-VJIFUOVU.mjs} +19 -16
- package/dist/chunk-VJIFUOVU.mjs.map +1 -0
- package/dist/formFields/index.cjs +3 -1
- package/dist/formFields/index.cjs.map +1 -1
- package/dist/formFields/index.mjs +2 -2
- package/dist/hooks/index.cjs +3 -1
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.mjs +2 -2
- package/dist/index.cjs +18 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +14 -11
- package/dist/index.d.ts +14 -11
- package/dist/index.mjs +17 -14
- package/dist/index.mjs.map +1 -1
- package/dist/utils/index.cjs +54 -52
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.mts +14 -11
- package/dist/utils/index.d.ts +14 -11
- package/dist/utils/index.mjs +3 -1
- package/package.json +1 -1
- package/dist/chunk-P7FGPPWG.mjs.map +0 -1
- /package/dist/{chunk-KEUG6IHV.mjs.map → chunk-UA64PDR4.mjs.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mapArrayToOptions
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VJIFUOVU.mjs";
|
|
4
4
|
import {
|
|
5
5
|
EnumFoodFlavor
|
|
6
6
|
} from "./chunk-534WN2SR.mjs";
|
|
@@ -1952,4 +1952,4 @@ export {
|
|
|
1952
1952
|
contactUsFields,
|
|
1953
1953
|
partnerBasicInfoFields
|
|
1954
1954
|
};
|
|
1955
|
-
//# sourceMappingURL=chunk-
|
|
1955
|
+
//# sourceMappingURL=chunk-UA64PDR4.mjs.map
|
|
@@ -78,7 +78,7 @@ function computeDailyClueState(dailyClue) {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
// src/utils/
|
|
81
|
+
// src/utils/date.ts
|
|
82
82
|
import dayjs2 from "dayjs";
|
|
83
83
|
import customParseFormat from "dayjs/plugin/customParseFormat.js";
|
|
84
84
|
import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js";
|
|
@@ -92,7 +92,7 @@ dayjs2.extend(timezone);
|
|
|
92
92
|
dayjs2.extend(isSameOrAfter);
|
|
93
93
|
var NZ_TZ = "Pacific/Auckland";
|
|
94
94
|
function toNZTime(date) {
|
|
95
|
-
return dayjs2(date).tz(NZ_TZ).
|
|
95
|
+
return date ? dayjs2(date).tz(NZ_TZ) : dayjs2().tz(NZ_TZ);
|
|
96
96
|
}
|
|
97
97
|
var formatDate = (dateStr, display = "datetime", timeStr) => {
|
|
98
98
|
const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
|
|
@@ -129,12 +129,25 @@ var isFutureDatesBeforeThreshold = (date, minHoursFromNow) => {
|
|
|
129
129
|
return dateTime.isSameOrAfter(threshold);
|
|
130
130
|
};
|
|
131
131
|
var formatTimestamp = (timestamp) => {
|
|
132
|
-
const formattedDate =
|
|
132
|
+
const formattedDate = toNZTime(timestamp).format(dateFormat);
|
|
133
133
|
return formatDate(formattedDate, "date");
|
|
134
134
|
};
|
|
135
135
|
var isIsoDateString = (value) => {
|
|
136
136
|
return typeof value === "string" && !isNaN(Date.parse(value));
|
|
137
137
|
};
|
|
138
|
+
function sortDatesChronologically(dates) {
|
|
139
|
+
if (!dates || !dates.length) {
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
return [...dates].sort((a, b) => {
|
|
143
|
+
const dateTimeFormat = `${dateFormat} ${timeFormat}`;
|
|
144
|
+
const dateA = dayjs2(`${a.startDate} ${a.startTime}`, dateTimeFormat);
|
|
145
|
+
const dateB = dayjs2(`${b.startDate} ${b.startTime}`, dateTimeFormat);
|
|
146
|
+
return dateA.valueOf() - dateB.valueOf();
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// src/utils/utils.ts
|
|
138
151
|
var removeTypename = (obj) => {
|
|
139
152
|
if (obj instanceof Date) {
|
|
140
153
|
return obj;
|
|
@@ -174,17 +187,6 @@ var statusOptions = [
|
|
|
174
187
|
})).sort((a, b) => a.label.localeCompare(b.label))
|
|
175
188
|
// Sort the options alphabetically
|
|
176
189
|
];
|
|
177
|
-
function sortDatesChronologically(dates) {
|
|
178
|
-
if (!dates || !dates.length) {
|
|
179
|
-
return [];
|
|
180
|
-
}
|
|
181
|
-
return [...dates].sort((a, b) => {
|
|
182
|
-
const dateTimeFormat = `${dateFormat} ${timeFormat}`;
|
|
183
|
-
const dateA = dayjs2(`${a.startDate} ${a.startTime}`, dateTimeFormat);
|
|
184
|
-
const dateB = dayjs2(`${b.startDate} ${b.startTime}`, dateTimeFormat);
|
|
185
|
-
return dateA.valueOf() - dateB.valueOf();
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
190
|
var availableRegionTypes = Object.values(EnumRegions);
|
|
189
191
|
var availableRegionOptions = mapArrayToOptions(availableRegionTypes);
|
|
190
192
|
var paymentMethodOptions = mapArrayToOptions(
|
|
@@ -236,12 +238,13 @@ export {
|
|
|
236
238
|
getCurrentAndFutureDates,
|
|
237
239
|
isFutureDatesBeforeThreshold,
|
|
238
240
|
formatTimestamp,
|
|
241
|
+
isIsoDateString,
|
|
242
|
+
sortDatesChronologically,
|
|
239
243
|
removeTypename,
|
|
240
244
|
truncateText,
|
|
241
245
|
mapArrayToOptions,
|
|
242
246
|
capitalizeFirstLetter,
|
|
243
247
|
statusOptions,
|
|
244
|
-
sortDatesChronologically,
|
|
245
248
|
availableRegionTypes,
|
|
246
249
|
availableRegionOptions,
|
|
247
250
|
paymentMethodOptions,
|
|
@@ -251,4 +254,4 @@ export {
|
|
|
251
254
|
IOS_URL,
|
|
252
255
|
ANDROID_URL
|
|
253
256
|
};
|
|
254
|
-
//# sourceMappingURL=chunk-
|
|
257
|
+
//# sourceMappingURL=chunk-VJIFUOVU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/dailyClueGame.ts","../src/utils/date.ts","../src/utils/utils.ts"],"sourcesContent":["import dayjs from \"dayjs\";\n\nimport {\n DailyClueGameData,\n EnumGameStatus,\n GameHistory,\n GamePlacement,\n GamePlacementClue,\n gameScreenIdentifierList,\n} from \"../types/game\";\n\nfunction createSeededRng(seed: number) {\n let t = seed >>> 0;\n\n return function random() {\n t += 0x6d2b79f5;\n let x = t;\n\n x = Math.imul(x ^ (x >>> 15), x | 1);\n x ^= x + Math.imul(x ^ (x >>> 7), x | 61);\n\n return ((x ^ (x >>> 14)) >>> 0) / 4294967296;\n };\n}\n\nfunction hashStringToNumber(seed: string): number {\n let hash = 2166136261;\n\n for (let i = 0; i < seed.length; i++) {\n hash ^= seed.codePointAt(i) ?? 0;\n hash = Math.imul(hash, 16777619);\n }\n\n return hash >>> 0;\n}\n\n/** Seeded shuffle so all players see the same letter order / placements for a game. */\nexport function seededShuffle<T>(array: readonly T[], seed: string): T[] {\n const rng = createSeededRng(hashStringToNumber(seed));\n const result = [...array];\n\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(rng() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n\n return result;\n}\n\nfunction getDayIndex(start: dayjs.Dayjs, today: dayjs.Dayjs): number {\n return today.diff(start, \"day\");\n}\n\nexport function computeDailyClueState(dailyClue: DailyClueGameData): {\n gameHistory: GameHistory | null;\n todaysClue: GamePlacementClue | null;\n todaysLetter: string | null;\n todaysPlacement: GamePlacement | null;\n} | null {\n const { startDate, endDate } = dailyClue.gameFields.gameDate;\n const { shuffled, collected } = dailyClue.letterInfo;\n\n const today = dayjs().startOf(\"day\");\n const start = dayjs(startDate).startOf(\"day\");\n const end = dayjs(endDate).startOf(\"day\");\n\n const shuffledPlacements = seededShuffle(\n gameScreenIdentifierList,\n start.toISOString(),\n );\n\n if (today.isBefore(start)) {\n return null;\n }\n\n if (today.isAfter(end)) {\n return {\n gameHistory: {\n gameDate: dailyClue.gameFields.gameDate,\n gameStatus: EnumGameStatus.GAME_COMPLETED,\n gameType: dailyClue.gameFields.gameType,\n pointsEarned: dailyClue.points,\n },\n todaysClue: null,\n todaysLetter: null,\n todaysPlacement: null,\n };\n }\n\n const index = getDayIndex(start, today);\n\n if (index < 0 || index >= shuffled.length) return null;\n\n if (collected?.includes(shuffled[index])) {\n return null;\n }\n\n return {\n gameHistory: null,\n todaysClue: shuffledPlacements[index].clue,\n todaysLetter: shuffled[index],\n todaysPlacement: shuffledPlacements[index].id,\n };\n}\n","import dayjs from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat.js\";\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter.js\";\nimport timezone from \"dayjs/plugin/timezone.js\";\nimport utc from \"dayjs/plugin/utc.js\";\n\nexport const dateFormat = \"DD-MM-YYYY\";\nexport const timeFormat = \"HH:mm\";\n\n// Enable custom format parsing\ndayjs.extend(customParseFormat);\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(isSameOrAfter);\n\nconst NZ_TZ = \"Pacific/Auckland\";\n\nexport function toNZTime(date?: Date | string) {\n return date ? dayjs(date).tz(NZ_TZ) : dayjs().tz(NZ_TZ);\n}\n\ntype DateFormat = \"date\" | \"time\" | \"datetime\";\n\n/**\n * Format a date string to a more readable format.\n * @param dateStr - the date string\n * @param timeStr - optional time string\n * @param display - 'date' | 'time' | 'datetime'\n * @returns formatted string based on display option\n */\nexport const formatDate = (\n dateStr: string,\n display: DateFormat = \"datetime\",\n timeStr?: string,\n) => {\n // Combine date and time into a single string if time is provided\n const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;\n\n // Parse with formats\n const dateTime = timeStr\n ? dayjs(dateTimeStr, `${dateFormat} ${timeFormat}`)\n : dayjs(dateStr, dateFormat);\n\n // Format parts\n const formattedDate = dateTime.format(\"dddd, D MMMM, YYYY\");\n const formattedTime = dateTime.format(\"h:mm a\");\n\n // Return based on display option\n switch (display) {\n case \"date\":\n return formattedDate;\n case \"time\":\n return formattedTime;\n case \"datetime\":\n return `${formattedDate} at ${formattedTime}`;\n default:\n return formattedDate;\n }\n};\n\nexport const getCurrentAndFutureDates = <\n T extends { startDate: string; startTime: string },\n>(\n dates: T[],\n): T[] => {\n const now = dayjs(); // current date and time\n\n return dates.filter((dateObj) => {\n const dateTime = dayjs(\n `${dateObj.startDate} ${dateObj.startTime}`,\n `${dateFormat} ${timeFormat}`,\n );\n return dateTime.isSameOrAfter(now);\n });\n};\n\nexport const isFutureDatesBeforeThreshold = (\n date: {\n startDate: string;\n startTime: string;\n },\n minHoursFromNow: number,\n): boolean => {\n const threshold = minHoursFromNow\n ? dayjs().add(minHoursFromNow, \"hour\")\n : dayjs().startOf(\"day\");\n\n const dateTime = dayjs(\n `${date.startDate} ${date.startTime}`,\n `${dateFormat} ${timeFormat}`,\n );\n\n return dateTime.isSameOrAfter(threshold);\n};\n\nexport const formatTimestamp = (timestamp: string) => {\n const formattedDate = toNZTime(timestamp).format(dateFormat);\n\n return formatDate(formattedDate, \"date\");\n};\n\nexport const isIsoDateString = (value: unknown): value is string => {\n return typeof value === \"string\" && !isNaN(Date.parse(value));\n};\n\n/**\n * Sort an array of date strings by their proximity to the current date.\n * @param dates - The array of date strings to sort.\n * @returns - The sorted array of date strings.\n */\nexport function sortDatesChronologically<\n T extends { startDate: string; startTime: string },\n>(dates: T[]): T[] {\n if (!dates || !dates.length) {\n return [];\n }\n\n return [...dates].sort((a, b) => {\n const dateTimeFormat = `${dateFormat} ${timeFormat}`;\n const dateA = dayjs(`${a.startDate} ${a.startTime}`, dateTimeFormat);\n const dateB = dayjs(`${b.startDate} ${b.startTime}`, dateTimeFormat);\n return dateA.valueOf() - dateB.valueOf(); // chronological order\n });\n}\n","import {\n EnumInviteStatus,\n EnumPaymentMethod,\n EnumRegions,\n EnumSocialMedia,\n EnumUserLicence,\n} from \"src/enums\";\nimport { OptionItem, SocialMediaType } from \"src/types\";\n\nimport { isIsoDateString } from \"./date\";\n\nexport const removeTypename = (obj: any): any => {\n // Preserve Date objects\n if (obj instanceof Date) {\n return obj;\n }\n\n // Preserve File objects (for apollo-upload-client)\n if (obj instanceof File) {\n return obj;\n }\n\n // Preserve ISO date strings\n if (isIsoDateString(obj)) {\n return obj;\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map(removeTypename);\n }\n\n // Handle plain objects only\n if (obj !== null && typeof obj === \"object\") {\n const { __typename, ...cleanedObj } = obj;\n\n return Object.keys(cleanedObj).reduce((acc: any, key) => {\n acc[key] = removeTypename(cleanedObj[key]);\n return acc;\n }, {});\n }\n\n // Primitives\n return obj;\n};\n\n/**\n * Truncate text to a specified length and append ellipsis if necessary.\n * @param text\n * @param maxLength\n * @returns\n */\nexport const truncateText = (text: string, maxLength: number = 30): string => {\n return text.length > maxLength ? text.substring(0, maxLength) + \"...\" : text;\n};\n\n/**\n * Convert an array of strings to an array of objects with label and value properties.\n * @param items - The array of strings to convert.\n * @returns - The converted array of objects.\n */\nexport const mapArrayToOptions = (items: string[]): OptionItem[] =>\n items.map((item) => ({\n label: item,\n value: item,\n }));\n\nexport const capitalizeFirstLetter = (str: string): string => {\n return str\n .split(\" \")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\" \");\n};\n\nexport const statusOptions = [\n ...Object.values(EnumInviteStatus)\n .map((status) => ({\n label: status,\n value: status,\n }))\n .sort((a, b) => a.label.localeCompare(b.label)), // Sort the options alphabetically\n];\n\nexport const availableRegionTypes = Object.values(EnumRegions);\nexport const availableRegionOptions: OptionItem[] =\n mapArrayToOptions(availableRegionTypes);\n\nexport const paymentMethodOptions: OptionItem[] = mapArrayToOptions(\n Object.values(EnumPaymentMethod),\n);\n\nexport function normalizeUrl(url: string): string {\n if (!url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n return `https://${url}`;\n }\n return url;\n}\n\nexport const licenseNiceNames: Record<EnumUserLicence, string> = {\n [EnumUserLicence.PRO_EVENT]: \"Pro Event\",\n [EnumUserLicence.PRO_VENDOR]: \"Pro Stallholder\",\n [EnumUserLicence.STANDARD_EVENT]: \"Standard Event\",\n [EnumUserLicence.STANDARD_VENDOR]: \"Standard Stallholder\",\n [EnumUserLicence.PRO_PLUS_EVENT]: \"Pro+Ads Event\",\n [EnumUserLicence.PRO_PLUS_VENDOR]: \"Pro+Ads Stallholder\",\n [EnumUserLicence.STANDARD_PARTNER]: \"Partner\",\n};\n\nexport const cluemartSocialMedia: SocialMediaType[] = [\n {\n link: \"https://www.facebook.com/ClueMartApp\",\n name: EnumSocialMedia.FACEBOOK,\n },\n {\n link: \"https://www.instagram.com/cluemart_app\",\n name: EnumSocialMedia.INSTAGRAM,\n },\n {\n link: \"https://www.tiktok.com/@cluemart\",\n name: EnumSocialMedia.TIKTOK,\n },\n {\n link: \"https://www.youtube.com/@ClueMart-App-NZ\",\n name: EnumSocialMedia.YOUTUBE,\n },\n];\n\nexport const IOS_URL = \"https://apps.apple.com/nz/app/cluemart/id6747251008\";\nexport const ANDROID_URL =\n \"https://play.google.com/store/apps/details?id=com.timardex.cluemart\";\n"],"mappings":"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","names":["dayjs"]}
|
|
@@ -327,7 +327,7 @@ var EnumRegions = /* @__PURE__ */ ((EnumRegions2) => {
|
|
|
327
327
|
// src/utils/dailyClueGame.ts
|
|
328
328
|
var import_dayjs = __toESM(require("dayjs"));
|
|
329
329
|
|
|
330
|
-
// src/utils/
|
|
330
|
+
// src/utils/date.ts
|
|
331
331
|
var import_dayjs2 = __toESM(require("dayjs"));
|
|
332
332
|
var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.js"));
|
|
333
333
|
var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
|
|
@@ -337,6 +337,8 @@ import_dayjs2.default.extend(import_customParseFormat.default);
|
|
|
337
337
|
import_dayjs2.default.extend(import_utc.default);
|
|
338
338
|
import_dayjs2.default.extend(import_timezone.default);
|
|
339
339
|
import_dayjs2.default.extend(import_isSameOrAfter.default);
|
|
340
|
+
|
|
341
|
+
// src/utils/utils.ts
|
|
340
342
|
var mapArrayToOptions = (items) => items.map((item) => ({
|
|
341
343
|
label: item,
|
|
342
344
|
value: item
|