@timardex/cluemart-shared 1.0.59 → 1.0.61
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-WGEUNGLF.mjs → chunk-P6GA67G6.mjs} +14 -18
- package/dist/chunk-P6GA67G6.mjs.map +1 -0
- package/dist/formFields/index.cjs.map +1 -1
- package/dist/formFields/index.mjs +1 -1
- package/dist/graphql/index.cjs +21 -4
- package/dist/graphql/index.cjs.map +1 -1
- package/dist/graphql/index.d.mts +6 -1
- package/dist/graphql/index.d.ts +6 -1
- package/dist/graphql/index.mjs +20 -4
- package/dist/graphql/index.mjs.map +1 -1
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/index.cjs +36 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +9 -7
- package/dist/index.d.ts +9 -7
- package/dist/index.mjs +33 -21
- package/dist/index.mjs.map +1 -1
- package/dist/utils/index.cjs +15 -19
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.mts +4 -7
- package/dist/utils/index.d.ts +4 -7
- package/dist/utils/index.mjs +5 -5
- package/package.json +1 -1
- package/dist/chunk-WGEUNGLF.mjs.map +0 -1
package/dist/utils/index.cjs
CHANGED
|
@@ -38,12 +38,12 @@ __export(utils_exports, {
|
|
|
38
38
|
formatDate: () => formatDate,
|
|
39
39
|
formatTimestamp: () => formatTimestamp,
|
|
40
40
|
getCurrentAndFutureDates: () => getCurrentAndFutureDates,
|
|
41
|
-
|
|
41
|
+
isFutureDatesBeforeThreshold: () => isFutureDatesBeforeThreshold,
|
|
42
42
|
mapArrayToOptions: () => mapArrayToOptions,
|
|
43
43
|
normalizeUrl: () => normalizeUrl,
|
|
44
44
|
paymentMethodOptions: () => paymentMethodOptions,
|
|
45
45
|
removeTypename: () => removeTypename,
|
|
46
|
-
|
|
46
|
+
sortDatesChronologically: () => sortDatesChronologically,
|
|
47
47
|
statusOptions: () => statusOptions,
|
|
48
48
|
timeFormat: () => timeFormat,
|
|
49
49
|
truncateText: () => truncateText
|
|
@@ -122,15 +122,13 @@ var getCurrentAndFutureDates = (dates) => {
|
|
|
122
122
|
return dateTime.isSameOrAfter(today);
|
|
123
123
|
});
|
|
124
124
|
};
|
|
125
|
-
var
|
|
125
|
+
var isFutureDatesBeforeThreshold = (date, minHoursFromNow) => {
|
|
126
126
|
const threshold = minHoursFromNow ? (0, import_dayjs.default)().add(minHoursFromNow, "hour") : (0, import_dayjs.default)().startOf("day");
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return dateTime.isSameOrAfter(threshold);
|
|
133
|
-
});
|
|
127
|
+
const dateTime = (0, import_dayjs.default)(
|
|
128
|
+
`${date.startDate} ${date.startTime}`,
|
|
129
|
+
`${dateFormat} ${timeFormat}`
|
|
130
|
+
);
|
|
131
|
+
return dateTime.isSameOrAfter(threshold);
|
|
134
132
|
};
|
|
135
133
|
var formatTimestamp = (timestamp) => {
|
|
136
134
|
const formattedDate = (0, import_dayjs.default)(timestamp).tz("Pacific/Auckland").format(dateFormat);
|
|
@@ -176,17 +174,15 @@ var statusOptions = [
|
|
|
176
174
|
})).sort((a, b) => a.label.localeCompare(b.label))
|
|
177
175
|
// Sort the options alphabetically
|
|
178
176
|
];
|
|
179
|
-
function
|
|
177
|
+
function sortDatesChronologically(dates) {
|
|
180
178
|
if (!dates || !dates.length) {
|
|
181
179
|
return [];
|
|
182
180
|
}
|
|
183
|
-
const reference = (0, import_dayjs.default)();
|
|
184
181
|
return [...dates].sort((a, b) => {
|
|
185
|
-
const
|
|
186
|
-
const
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
return diffA - diffB;
|
|
182
|
+
const dateTimeFormat = `${dateFormat} ${timeFormat}`;
|
|
183
|
+
const dateA = (0, import_dayjs.default)(`${a.startDate} ${a.startTime}`, dateTimeFormat);
|
|
184
|
+
const dateB = (0, import_dayjs.default)(`${b.startDate} ${b.startTime}`, dateTimeFormat);
|
|
185
|
+
return dateA.valueOf() - dateB.valueOf();
|
|
190
186
|
});
|
|
191
187
|
}
|
|
192
188
|
var availableRegionTypes = Object.values(EnumRegions);
|
|
@@ -210,12 +206,12 @@ function normalizeUrl(url) {
|
|
|
210
206
|
formatDate,
|
|
211
207
|
formatTimestamp,
|
|
212
208
|
getCurrentAndFutureDates,
|
|
213
|
-
|
|
209
|
+
isFutureDatesBeforeThreshold,
|
|
214
210
|
mapArrayToOptions,
|
|
215
211
|
normalizeUrl,
|
|
216
212
|
paymentMethodOptions,
|
|
217
213
|
removeTypename,
|
|
218
|
-
|
|
214
|
+
sortDatesChronologically,
|
|
219
215
|
statusOptions,
|
|
220
216
|
timeFormat,
|
|
221
217
|
truncateText
|
package/dist/utils/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts","../../src/enums/index.ts"],"sourcesContent":["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\nimport { EnumInviteStatus, EnumPaymentMethod, EnumRegions } from \"../enums\";\nimport { OptionItem, Region } from \"../types/global\";\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\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 today = dayjs().startOf(\"day\");\n return dates.filter((dateObj) => {\n const dateTime = dayjs(dateObj.startDate, dateFormat);\n return dateTime.isSameOrAfter(today);\n });\n};\n\nexport const getFutureDatesAfterThreshold = (\n dates: {\n startDate: string;\n startTime: string;\n }[],\n minHoursFromNow?: number, // Optional\n) => {\n const threshold = minHoursFromNow\n ? dayjs().add(minHoursFromNow, \"hour\")\n : dayjs().startOf(\"day\");\n\n return dates.filter((dateObj) => {\n const dateTime = dayjs(\n `${dateObj.startDate} ${dateObj.startTime}`,\n `${dateFormat} ${timeFormat}`,\n );\n return dateTime.isSameOrAfter(threshold);\n });\n};\n\nexport const formatTimestamp = (timestamp: string) => {\n const formattedDate = dayjs(timestamp)\n .tz(\"Pacific/Auckland\")\n .format(dateFormat);\n\n const formattedTime = dayjs(timestamp)\n .tz(\"Pacific/Auckland\")\n .format(timeFormat);\n\n return formatDate(formattedDate, \"date\");\n};\n\nexport const defaultRegion: Region = {\n latitude: -36.8624942, // Default: New Zealand\n latitudeDelta: 5.0,\n longitude: 174.7450494,\n longitudeDelta: 5.0,\n};\n\n/**\n * Function to remove __typename from an object or array of objects.\n * @param obj - The object or array to clean.\n * @returns - The cleaned object or array.\n */\nexport const removeTypename = (obj: any): any => {\n if (Array.isArray(obj)) {\n return obj.map((item) => removeTypename(item)); // Recursively clean arrays\n } else if (obj !== null && typeof obj === \"object\") {\n const { __typename, ...cleanedObj } = obj; // Remove __typename\n return Object.keys(cleanedObj).reduce(\n (acc: { [key: string]: any }, key) => {\n acc[key] = removeTypename(cleanedObj[key]); // Recursively clean nested objects\n return acc;\n },\n {},\n );\n }\n return obj; // Return value as-is if it's not an object/array\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.replace(/_/g, \" \"),\n value: item.replace(/\\s+/g, \"_\").toLowerCase(),\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\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 sortDatesByProximity<\n T extends { startDate: string; startTime: string },\n>(dates: T[]): T[] {\n if (!dates || !dates.length) {\n return [];\n }\n const reference = dayjs();\n return [...dates].sort((a, b) => {\n const dateA = dayjs(a.startDate, dateFormat);\n const dateB = dayjs(b.startDate, dateFormat);\n const diffA = Math.abs(dateA.diff(reference));\n const diffB = Math.abs(dateB.diff(reference));\n return diffA - diffB;\n });\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","export enum EnumInviteStatus {\n ACCEPTED = \"Accepted\",\n COMPLETED = \"Completed\",\n EXPIRED = \"Expired\",\n NO_STATUS = \"No_Status\",\n PENDING = \"Pending\",\n REJECTED = \"Rejected\",\n WAITING = \"Waiting\",\n}\n\nexport enum EnumPaymentMethod {\n CASH = \"cash\",\n EFTPOS = \"eftpos\",\n BANK_TRANSFER = \"bank_transfer\",\n PAYPAL = \"paypal\",\n STRIPE = \"stripe\",\n}\n\nexport enum EnumResourceType {\n MARKET = \"market\",\n STALLHOLDER = \"stallholder\",\n}\n\nexport enum EnumOSType {\n ANDROID = \"Android\",\n IOS = \"iOS\",\n}\n\nexport enum EnumRelationResource {\n MARKET_INVITE_STALLHOLDER = \"market_invite_stallholder\",\n STALLHOLDER_APPLICATION_TO_MARKET = \"stallholder_application_to_market\",\n}\n\nexport enum EnumNotification {\n CREATED_MARKET = \"created_market\",\n CREATED_STALLHOLDER = \"created_stallholder\",\n NEW_CHAT_MESSAGE = \"new_chat_message\",\n MARKET_INVITE_STALLHOLDER = EnumRelationResource.MARKET_INVITE_STALLHOLDER,\n STALLHOLDER_APPLICATION_TO_MARKET = EnumRelationResource.STALLHOLDER_APPLICATION_TO_MARKET,\n}\n\nexport enum EnumResourceTypeIcon {\n MARKET = \"compass\",\n STALLHOLDER = \"store\",\n}\n\nexport enum EnumRegions {\n Auckland = \"Auckland\",\n BayOfPlenty = \"Bay of Plenty\",\n Canterbury = \"Canterbury\",\n Gisborne = \"Gisborne\",\n HawkesBay = \"Hawke's Bay\",\n ManawatuWanganui = \"Manawatu-Wanganui\",\n Marlborough = \"Marlborough\",\n Nelson = \"Nelson\",\n Northland = \"Northland\",\n Otago = \"Otago\",\n Southland = \"Southland\",\n Taranaki = \"Taranaki\",\n Waikato = \"Waikato\",\n Wellington = \"Wellington\",\n}\n\nexport enum ImageTypeEnum {\n AVATAR = \"avatar\",\n COVER = \"cover\",\n IMAGE = \"image\",\n LOGO = \"logo\",\n}\n\nexport enum EnumUserLicence {\n ENTERPRISE_MARKET = \"enterprise_market\",\n ENTERPRISE_STALLHOLDER = \"enterprise_stallholder\",\n PRO_MARKET = \"pro_market\",\n PRO_STALLHOLDER = \"pro_stallholder\",\n STANDARD_MARKET = \"standard_market\",\n STANDARD_STALLHOLDER = \"standard_stallholder\",\n}\n\nexport enum EnumUserRole {\n ADMIN = \"admin\",\n CUSTOMER = \"customer\",\n}\n\nexport enum EnumSocialMedia {\n FACEBOOK = \"facebook\",\n INSTAGRAM = \"instagram\",\n TIKTOK = \"tiktok\",\n TWITTER = \"twitter\",\n WEBSITE = \"website\",\n YOUTUBE = \"youtube\",\n}\n"],"mappings":"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","names":["EnumInviteStatus","EnumPaymentMethod","EnumRegions","dayjs","customParseFormat","utc","timezone","isSameOrAfter"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts","../../src/enums/index.ts"],"sourcesContent":["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\nimport { EnumInviteStatus, EnumPaymentMethod, EnumRegions } from \"../enums\";\nimport { OptionItem, Region } from \"../types/global\";\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\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 today = dayjs().startOf(\"day\");\n return dates.filter((dateObj) => {\n const dateTime = dayjs(dateObj.startDate, dateFormat);\n return dateTime.isSameOrAfter(today);\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 = dayjs(timestamp)\n .tz(\"Pacific/Auckland\")\n .format(dateFormat);\n\n const formattedTime = dayjs(timestamp)\n .tz(\"Pacific/Auckland\")\n .format(timeFormat);\n\n return formatDate(formattedDate, \"date\");\n};\n\nexport const defaultRegion: Region = {\n latitude: -36.8624942, // Default: New Zealand\n latitudeDelta: 5.0,\n longitude: 174.7450494,\n longitudeDelta: 5.0,\n};\n\n/**\n * Function to remove __typename from an object or array of objects.\n * @param obj - The object or array to clean.\n * @returns - The cleaned object or array.\n */\nexport const removeTypename = (obj: any): any => {\n if (Array.isArray(obj)) {\n return obj.map((item) => removeTypename(item)); // Recursively clean arrays\n } else if (obj !== null && typeof obj === \"object\") {\n const { __typename, ...cleanedObj } = obj; // Remove __typename\n return Object.keys(cleanedObj).reduce(\n (acc: { [key: string]: any }, key) => {\n acc[key] = removeTypename(cleanedObj[key]); // Recursively clean nested objects\n return acc;\n },\n {},\n );\n }\n return obj; // Return value as-is if it's not an object/array\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.replace(/_/g, \" \"),\n value: item.replace(/\\s+/g, \"_\").toLowerCase(),\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\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\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","export enum EnumInviteStatus {\n ACCEPTED = \"Accepted\",\n COMPLETED = \"Completed\",\n EXPIRED = \"Expired\",\n NO_STATUS = \"No_Status\",\n PENDING = \"Pending\",\n REJECTED = \"Rejected\",\n WAITING = \"Waiting\",\n}\n\nexport enum EnumPaymentMethod {\n CASH = \"cash\",\n EFTPOS = \"eftpos\",\n BANK_TRANSFER = \"bank_transfer\",\n PAYPAL = \"paypal\",\n STRIPE = \"stripe\",\n}\n\nexport enum EnumResourceType {\n MARKET = \"market\",\n STALLHOLDER = \"stallholder\",\n}\n\nexport enum EnumOSType {\n ANDROID = \"Android\",\n IOS = \"iOS\",\n}\n\nexport enum EnumRelationResource {\n MARKET_INVITE_STALLHOLDER = \"market_invite_stallholder\",\n STALLHOLDER_APPLICATION_TO_MARKET = \"stallholder_application_to_market\",\n}\n\nexport enum EnumNotification {\n CREATED_MARKET = \"created_market\",\n CREATED_STALLHOLDER = \"created_stallholder\",\n NEW_CHAT_MESSAGE = \"new_chat_message\",\n MARKET_INVITE_STALLHOLDER = EnumRelationResource.MARKET_INVITE_STALLHOLDER,\n STALLHOLDER_APPLICATION_TO_MARKET = EnumRelationResource.STALLHOLDER_APPLICATION_TO_MARKET,\n}\n\nexport enum EnumResourceTypeIcon {\n MARKET = \"compass\",\n STALLHOLDER = \"store\",\n}\n\nexport enum EnumRegions {\n Auckland = \"Auckland\",\n BayOfPlenty = \"Bay of Plenty\",\n Canterbury = \"Canterbury\",\n Gisborne = \"Gisborne\",\n HawkesBay = \"Hawke's Bay\",\n ManawatuWanganui = \"Manawatu-Wanganui\",\n Marlborough = \"Marlborough\",\n Nelson = \"Nelson\",\n Northland = \"Northland\",\n Otago = \"Otago\",\n Southland = \"Southland\",\n Taranaki = \"Taranaki\",\n Waikato = \"Waikato\",\n Wellington = \"Wellington\",\n}\n\nexport enum ImageTypeEnum {\n AVATAR = \"avatar\",\n COVER = \"cover\",\n IMAGE = \"image\",\n LOGO = \"logo\",\n}\n\nexport enum EnumUserLicence {\n ENTERPRISE_MARKET = \"enterprise_market\",\n ENTERPRISE_STALLHOLDER = \"enterprise_stallholder\",\n PRO_MARKET = \"pro_market\",\n PRO_STALLHOLDER = \"pro_stallholder\",\n STANDARD_MARKET = \"standard_market\",\n STANDARD_STALLHOLDER = \"standard_stallholder\",\n}\n\nexport enum EnumUserRole {\n ADMIN = \"admin\",\n CUSTOMER = \"customer\",\n}\n\nexport enum EnumSocialMedia {\n FACEBOOK = \"facebook\",\n INSTAGRAM = \"instagram\",\n TIKTOK = \"tiktok\",\n TWITTER = \"twitter\",\n WEBSITE = \"website\",\n YOUTUBE = \"youtube\",\n}\n"],"mappings":"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","names":["EnumInviteStatus","EnumPaymentMethod","EnumRegions","dayjs","customParseFormat","utc","timezone","isSameOrAfter"]}
|
package/dist/utils/index.d.mts
CHANGED
|
@@ -17,13 +17,10 @@ declare const getCurrentAndFutureDates: <T extends {
|
|
|
17
17
|
startDate: string;
|
|
18
18
|
startTime: string;
|
|
19
19
|
}>(dates: T[]) => T[];
|
|
20
|
-
declare const
|
|
20
|
+
declare const isFutureDatesBeforeThreshold: (date: {
|
|
21
21
|
startDate: string;
|
|
22
22
|
startTime: string;
|
|
23
|
-
}
|
|
24
|
-
startDate: string;
|
|
25
|
-
startTime: string;
|
|
26
|
-
}[];
|
|
23
|
+
}, minHoursFromNow: number) => boolean;
|
|
27
24
|
declare const formatTimestamp: (timestamp: string) => string;
|
|
28
25
|
declare const defaultRegion: Region;
|
|
29
26
|
/**
|
|
@@ -55,7 +52,7 @@ declare const statusOptions: {
|
|
|
55
52
|
* @param dates - The array of date strings to sort.
|
|
56
53
|
* @returns - The sorted array of date strings.
|
|
57
54
|
*/
|
|
58
|
-
declare function
|
|
55
|
+
declare function sortDatesChronologically<T extends {
|
|
59
56
|
startDate: string;
|
|
60
57
|
startTime: string;
|
|
61
58
|
}>(dates: T[]): T[];
|
|
@@ -64,4 +61,4 @@ declare const availableRegionOptions: OptionItem[];
|
|
|
64
61
|
declare const paymentMethodOptions: OptionItem[];
|
|
65
62
|
declare function normalizeUrl(url: string): string;
|
|
66
63
|
|
|
67
|
-
export { availableRegionOptions, availableRegionTypes, capitalizeFirstLetter, dateFormat, defaultRegion, formatDate, formatTimestamp, getCurrentAndFutureDates,
|
|
64
|
+
export { availableRegionOptions, availableRegionTypes, capitalizeFirstLetter, dateFormat, defaultRegion, formatDate, formatTimestamp, getCurrentAndFutureDates, isFutureDatesBeforeThreshold, mapArrayToOptions, normalizeUrl, paymentMethodOptions, removeTypename, sortDatesChronologically, statusOptions, timeFormat, truncateText };
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -17,13 +17,10 @@ declare const getCurrentAndFutureDates: <T extends {
|
|
|
17
17
|
startDate: string;
|
|
18
18
|
startTime: string;
|
|
19
19
|
}>(dates: T[]) => T[];
|
|
20
|
-
declare const
|
|
20
|
+
declare const isFutureDatesBeforeThreshold: (date: {
|
|
21
21
|
startDate: string;
|
|
22
22
|
startTime: string;
|
|
23
|
-
}
|
|
24
|
-
startDate: string;
|
|
25
|
-
startTime: string;
|
|
26
|
-
}[];
|
|
23
|
+
}, minHoursFromNow: number) => boolean;
|
|
27
24
|
declare const formatTimestamp: (timestamp: string) => string;
|
|
28
25
|
declare const defaultRegion: Region;
|
|
29
26
|
/**
|
|
@@ -55,7 +52,7 @@ declare const statusOptions: {
|
|
|
55
52
|
* @param dates - The array of date strings to sort.
|
|
56
53
|
* @returns - The sorted array of date strings.
|
|
57
54
|
*/
|
|
58
|
-
declare function
|
|
55
|
+
declare function sortDatesChronologically<T extends {
|
|
59
56
|
startDate: string;
|
|
60
57
|
startTime: string;
|
|
61
58
|
}>(dates: T[]): T[];
|
|
@@ -64,4 +61,4 @@ declare const availableRegionOptions: OptionItem[];
|
|
|
64
61
|
declare const paymentMethodOptions: OptionItem[];
|
|
65
62
|
declare function normalizeUrl(url: string): string;
|
|
66
63
|
|
|
67
|
-
export { availableRegionOptions, availableRegionTypes, capitalizeFirstLetter, dateFormat, defaultRegion, formatDate, formatTimestamp, getCurrentAndFutureDates,
|
|
64
|
+
export { availableRegionOptions, availableRegionTypes, capitalizeFirstLetter, dateFormat, defaultRegion, formatDate, formatTimestamp, getCurrentAndFutureDates, isFutureDatesBeforeThreshold, mapArrayToOptions, normalizeUrl, paymentMethodOptions, removeTypename, sortDatesChronologically, statusOptions, timeFormat, truncateText };
|
package/dist/utils/index.mjs
CHANGED
|
@@ -7,16 +7,16 @@ import {
|
|
|
7
7
|
formatDate,
|
|
8
8
|
formatTimestamp,
|
|
9
9
|
getCurrentAndFutureDates,
|
|
10
|
-
|
|
10
|
+
isFutureDatesBeforeThreshold,
|
|
11
11
|
mapArrayToOptions,
|
|
12
12
|
normalizeUrl,
|
|
13
13
|
paymentMethodOptions,
|
|
14
14
|
removeTypename,
|
|
15
|
-
|
|
15
|
+
sortDatesChronologically,
|
|
16
16
|
statusOptions,
|
|
17
17
|
timeFormat,
|
|
18
18
|
truncateText
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-P6GA67G6.mjs";
|
|
20
20
|
import "../chunk-4BZVTRCC.mjs";
|
|
21
21
|
export {
|
|
22
22
|
availableRegionOptions,
|
|
@@ -27,12 +27,12 @@ export {
|
|
|
27
27
|
formatDate,
|
|
28
28
|
formatTimestamp,
|
|
29
29
|
getCurrentAndFutureDates,
|
|
30
|
-
|
|
30
|
+
isFutureDatesBeforeThreshold,
|
|
31
31
|
mapArrayToOptions,
|
|
32
32
|
normalizeUrl,
|
|
33
33
|
paymentMethodOptions,
|
|
34
34
|
removeTypename,
|
|
35
|
-
|
|
35
|
+
sortDatesChronologically,
|
|
36
36
|
statusOptions,
|
|
37
37
|
timeFormat,
|
|
38
38
|
truncateText
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/index.ts"],"sourcesContent":["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\nimport { EnumInviteStatus, EnumPaymentMethod, EnumRegions } from \"../enums\";\nimport { OptionItem, Region } from \"../types/global\";\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\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 today = dayjs().startOf(\"day\");\n return dates.filter((dateObj) => {\n const dateTime = dayjs(dateObj.startDate, dateFormat);\n return dateTime.isSameOrAfter(today);\n });\n};\n\nexport const getFutureDatesAfterThreshold = (\n dates: {\n startDate: string;\n startTime: string;\n }[],\n minHoursFromNow?: number, // Optional\n) => {\n const threshold = minHoursFromNow\n ? dayjs().add(minHoursFromNow, \"hour\")\n : dayjs().startOf(\"day\");\n\n return dates.filter((dateObj) => {\n const dateTime = dayjs(\n `${dateObj.startDate} ${dateObj.startTime}`,\n `${dateFormat} ${timeFormat}`,\n );\n return dateTime.isSameOrAfter(threshold);\n });\n};\n\nexport const formatTimestamp = (timestamp: string) => {\n const formattedDate = dayjs(timestamp)\n .tz(\"Pacific/Auckland\")\n .format(dateFormat);\n\n const formattedTime = dayjs(timestamp)\n .tz(\"Pacific/Auckland\")\n .format(timeFormat);\n\n return formatDate(formattedDate, \"date\");\n};\n\nexport const defaultRegion: Region = {\n latitude: -36.8624942, // Default: New Zealand\n latitudeDelta: 5.0,\n longitude: 174.7450494,\n longitudeDelta: 5.0,\n};\n\n/**\n * Function to remove __typename from an object or array of objects.\n * @param obj - The object or array to clean.\n * @returns - The cleaned object or array.\n */\nexport const removeTypename = (obj: any): any => {\n if (Array.isArray(obj)) {\n return obj.map((item) => removeTypename(item)); // Recursively clean arrays\n } else if (obj !== null && typeof obj === \"object\") {\n const { __typename, ...cleanedObj } = obj; // Remove __typename\n return Object.keys(cleanedObj).reduce(\n (acc: { [key: string]: any }, key) => {\n acc[key] = removeTypename(cleanedObj[key]); // Recursively clean nested objects\n return acc;\n },\n {},\n );\n }\n return obj; // Return value as-is if it's not an object/array\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.replace(/_/g, \" \"),\n value: item.replace(/\\s+/g, \"_\").toLowerCase(),\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\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 sortDatesByProximity<\n T extends { startDate: string; startTime: string },\n>(dates: T[]): T[] {\n if (!dates || !dates.length) {\n return [];\n }\n const reference = dayjs();\n return [...dates].sort((a, b) => {\n const dateA = dayjs(a.startDate, dateFormat);\n const dateB = dayjs(b.startDate, dateFormat);\n const diffA = Math.abs(dateA.diff(reference));\n const diffB = Math.abs(dateB.diff(reference));\n return diffA - diffB;\n });\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"],"mappings":";;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,uBAAuB;AAC9B,OAAO,mBAAmB;AAC1B,OAAO,cAAc;AACrB,OAAO,SAAS;AAKT,IAAM,aAAa;AACnB,IAAM,aAAa;AAG1B,MAAM,OAAO,iBAAiB;AAC9B,MAAM,OAAO,GAAG;AAChB,MAAM,OAAO,QAAQ;AACrB,MAAM,OAAO,aAAa;AAWnB,IAAM,aAAa,CACxB,SACA,UAAsB,YACtB,YACG;AAEH,QAAM,cAAc,UAAU,GAAG,OAAO,IAAI,OAAO,KAAK;AAGxD,QAAM,WAAW,UACb,MAAM,aAAa,GAAG,UAAU,IAAI,UAAU,EAAE,IAChD,MAAM,SAAS,UAAU;AAG7B,QAAM,gBAAgB,SAAS,OAAO,oBAAoB;AAC1D,QAAM,gBAAgB,SAAS,OAAO,QAAQ;AAG9C,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,GAAG,aAAa,OAAO,aAAa;AAAA,IAC7C;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,2BAA2B,CAGtC,UACQ;AACR,QAAM,QAAQ,MAAM,EAAE,QAAQ,KAAK;AACnC,SAAO,MAAM,OAAO,CAAC,YAAY;AAC/B,UAAM,WAAW,MAAM,QAAQ,WAAW,UAAU;AACpD,WAAO,SAAS,cAAc,KAAK;AAAA,EACrC,CAAC;AACH;AAEO,IAAM,+BAA+B,CAC1C,OAIA,oBACG;AACH,QAAM,YAAY,kBACd,MAAM,EAAE,IAAI,iBAAiB,MAAM,IACnC,MAAM,EAAE,QAAQ,KAAK;AAEzB,SAAO,MAAM,OAAO,CAAC,YAAY;AAC/B,UAAM,WAAW;AAAA,MACf,GAAG,QAAQ,SAAS,IAAI,QAAQ,SAAS;AAAA,MACzC,GAAG,UAAU,IAAI,UAAU;AAAA,IAC7B;AACA,WAAO,SAAS,cAAc,SAAS;AAAA,EACzC,CAAC;AACH;AAEO,IAAM,kBAAkB,CAAC,cAAsB;AACpD,QAAM,gBAAgB,MAAM,SAAS,EAClC,GAAG,kBAAkB,EACrB,OAAO,UAAU;AAEpB,QAAM,gBAAgB,MAAM,SAAS,EAClC,GAAG,kBAAkB,EACrB,OAAO,UAAU;AAEpB,SAAO,WAAW,eAAe,MAAM;AACzC;AAEO,IAAM,gBAAwB;AAAA,EACnC,UAAU;AAAA;AAAA,EACV,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAClB;AAOO,IAAM,iBAAiB,CAAC,QAAkB;AAC/C,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC;AAAA,EAC/C,WAAW,QAAQ,QAAQ,OAAO,QAAQ,UAAU;AAClD,UAAM,EAAE,YAAY,GAAG,WAAW,IAAI;AACtC,WAAO,OAAO,KAAK,UAAU,EAAE;AAAA,MAC7B,CAAC,KAA6B,QAAQ;AACpC,YAAI,GAAG,IAAI,eAAe,WAAW,GAAG,CAAC;AACzC,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AAQO,IAAM,eAAe,CAAC,MAAc,YAAoB,OAAe;AAC5E,SAAO,KAAK,SAAS,YAAY,KAAK,UAAU,GAAG,SAAS,IAAI,QAAQ;AAC1E;AAOO,IAAM,oBAAoB,CAAC,UAChC,MAAM,IAAI,CAAC,UAAU;AAAA,EACnB,OAAO,KAAK,QAAQ,MAAM,GAAG;AAAA,EAC7B,OAAO,KAAK,QAAQ,QAAQ,GAAG,EAAE,YAAY;AAC/C,EAAE;AAEG,IAAM,wBAAwB,CAAC,QAAwB;AAC5D,SAAO,IACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,EAAE,YAAY,CAAC,EACxE,KAAK,GAAG;AACb;AAEO,IAAM,gBAAgB;AAAA,EAC3B,GAAG,OAAO,OAAO,gBAAgB,EAC9B,IAAI,CAAC,YAAY;AAAA,IAChB,OAAO;AAAA,IACP,OAAO;AAAA,EACT,EAAE,EACD,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC;AAAA;AAClD;AAOO,SAAS,qBAEd,OAAiB;AACjB,MAAI,CAAC,SAAS,CAAC,MAAM,QAAQ;AAC3B,WAAO,CAAC;AAAA,EACV;AACA,QAAM,YAAY,MAAM;AACxB,SAAO,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM;AAC/B,UAAM,QAAQ,MAAM,EAAE,WAAW,UAAU;AAC3C,UAAM,QAAQ,MAAM,EAAE,WAAW,UAAU;AAC3C,UAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,SAAS,CAAC;AAC5C,UAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,SAAS,CAAC;AAC5C,WAAO,QAAQ;AAAA,EACjB,CAAC;AACH;AAEO,IAAM,uBAAuB,OAAO,OAAO,WAAW;AACtD,IAAM,yBACX,kBAAkB,oBAAoB;AAEjC,IAAM,uBAAqC;AAAA,EAChD,OAAO,OAAO,iBAAiB;AACjC;AAEO,SAAS,aAAa,KAAqB;AAChD,MAAI,CAAC,IAAI,WAAW,SAAS,KAAK,CAAC,IAAI,WAAW,UAAU,GAAG;AAC7D,WAAO,WAAW,GAAG;AAAA,EACvB;AACA,SAAO;AACT;","names":[]}
|