UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

88 lines (86 loc) 2.03 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); //#region src/date.ts const MILLISECONDS_IN_DAY = 864e5; /** * */ function dateTo12HourTime(date) { if (!date) return ""; return date.toLocaleString("en-US", { hour: "2-digit", minute: "numeric", hour12: true }); } /** * */ function differenceInCalendarDays(a, b, { absolute = true } = {}) { if (!a || !b) return 0; const utcA = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()); const utcB = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()); const diff = Math.floor((utcB - utcA) / MILLISECONDS_IN_DAY); return absolute ? Math.abs(diff) : diff; } /** * */ function normalizeDate(d) { try { return new Date(d || /* @__PURE__ */ new Date()); } catch { return /* @__PURE__ */ new Date(); } } /** * */ function formatRelative(props) { const { date, relativeTo } = props; if (!date || !relativeTo) return null; const a = normalizeDate(date); const differenceInDays = differenceInCalendarDays(normalizeDate(relativeTo), a, { absolute: false }); if (differenceInDays < -6) return { relativeDateCase: "other", date: a }; if (differenceInDays < -1) return { relativeDateCase: "previous6Days", date: a }; if (differenceInDays === -1) return { relativeDateCase: "lastDay", date: a }; if (differenceInDays === 0) return { relativeDateCase: "sameDay", date: a }; if (differenceInDays === 1) return { relativeDateCase: "nextDay", date: a }; if (differenceInDays < 7) return { relativeDateCase: "next6Days", date: a }; return { relativeDateCase: "other", date: a }; } /** * */ function addYears(initialDate, yearsToAdd) { const date = normalizeDate(initialDate); date.setFullYear(date.getFullYear() + yearsToAdd); return date; } //#endregion exports.addYears = addYears; exports.dateTo12HourTime = dateTo12HourTime; exports.differenceInCalendarDays = differenceInCalendarDays; exports.formatRelative = formatRelative; exports.normalizeDate = normalizeDate; //# sourceMappingURL=date.js.map