@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
88 lines (86 loc) • 2.03 kB
JavaScript
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