| import { |
| formatUtcTimestamp, |
| formatZonedTimestamp, |
| } from "../../src/infra/format-time/format-datetime.js"; |
|
|
| export { escapeRegExp } from "../../src/utils.js"; |
|
|
| type EnvelopeTimestampZone = string; |
|
|
| export function formatEnvelopeTimestamp(date: Date, zone: EnvelopeTimestampZone = "utc"): string { |
| const trimmedZone = zone.trim(); |
| const normalized = trimmedZone.toLowerCase(); |
| const weekday = (() => { |
| try { |
| if (normalized === "utc" || normalized === "gmt") { |
| return new Intl.DateTimeFormat("en-US", { timeZone: "UTC", weekday: "short" }).format(date); |
| } |
| if (normalized === "local" || normalized === "host") { |
| return new Intl.DateTimeFormat("en-US", { weekday: "short" }).format(date); |
| } |
| return new Intl.DateTimeFormat("en-US", { timeZone: trimmedZone, weekday: "short" }).format( |
| date, |
| ); |
| } catch { |
| return undefined; |
| } |
| })(); |
|
|
| if (normalized === "utc" || normalized === "gmt") { |
| const ts = formatUtcTimestamp(date); |
| return weekday ? `${weekday} ${ts}` : ts; |
| } |
| if (normalized === "local" || normalized === "host") { |
| const ts = formatZonedTimestamp(date) ?? formatUtcTimestamp(date); |
| return weekday ? `${weekday} ${ts}` : ts; |
| } |
| const ts = formatZonedTimestamp(date, { timeZone: trimmedZone }) ?? formatUtcTimestamp(date); |
| return weekday ? `${weekday} ${ts}` : ts; |
| } |
|
|
| export function formatLocalEnvelopeTimestamp(date: Date): string { |
| return formatEnvelopeTimestamp(date, "local"); |
| } |
|
|