48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
export function date(isMobile: boolean) {
|
|
const currentDate = new Date();
|
|
const dateOptions: Intl.DateTimeFormatOptions = !isMobile
|
|
? {
|
|
weekday: 'long',
|
|
year: 'numeric',
|
|
month: 'long',
|
|
day: 'numeric',
|
|
}
|
|
: {};
|
|
const date = currentDate.toLocaleDateString('en-US', dateOptions);
|
|
return date;
|
|
}
|
|
export function greet(list: any) {
|
|
const currentTime = new Date();
|
|
const greet = Math.floor(currentTime.getHours() / 6);
|
|
const easterEggChance = Math.floor(Math.random() * 100);
|
|
let timeBased: any = [];
|
|
let customGreetings: any = [];
|
|
for (const l of list) {
|
|
if (l.customGreeting === 0) {
|
|
timeBased = timeBased.concat(l);
|
|
} else {
|
|
customGreetings = customGreetings.concat(l);
|
|
}
|
|
}
|
|
if (easterEggChance > 10 || customGreetings.length === 0) {
|
|
return timeBased[greet].message;
|
|
}
|
|
return customGreetings[Math.floor(Math.random() * customGreetings.length)].message;
|
|
}
|
|
export function validURL(str: any) {
|
|
const pattern = new RegExp(
|
|
'^(https?:\\/\\/)?' + // protocol
|
|
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
|
|
'((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
|
|
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
|
|
'(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
|
|
'(\\#[-a-z\\d_]*)?$',
|
|
'i',
|
|
); // fragment locator
|
|
return !!pattern.test(str);
|
|
}
|
|
export function containsProtocol(str: any) {
|
|
const pattern = /^(https?:\/\/).*/i;
|
|
return !!pattern.test(str);
|
|
}
|