export function formatDate(date: Date): string { const options = { year: "numeric", month: "long", day: "numeric" } as const; return new Intl.DateTimeFormat("en-US", options).format(date); } export function safeFileName(inputString: string): string { // Convert the string to lowercase let fileName = inputString.toLowerCase(); // Replace spaces with underscores fileName = fileName.replace(/ /g, "_"); // Remove characters that are not safe for file names fileName = fileName.replace(/[^\w.-]/g, ""); return fileName; } export function extractHashTags(inputString: string) { const hashtags = []; for ( const [hashtag] of inputString.matchAll(/(?:^|\s)#\S*(? 2) { hashtags.push(cleaned); } } return hashtags; } export const isYoutubeLink = (link: string) => { try { const url = new URL(link); return ["youtu.be", "youtube.com","www.youtube.com" ].includes(url.hostname); } catch (err) { console.log(err); return false; } }; export function extractYoutubeId(link: string) { const url = new URL(link); if (url.searchParams.has("v")) { const id = url.searchParams.get("v"); if (id?.length && id.length > 4) { return id; } } return url.pathname.replace(/^\//, ""); }