@samual/lib
Advanced tools
+1
-1
| { | ||
| "name": "@samual/lib", | ||
| "version": "0.13.1-9d7a0d3", | ||
| "version": "0.13.1-c62d91a", | ||
| "repository": "github:samualtnorman/lib", | ||
@@ -5,0 +5,0 @@ "author": "Samual Norman <me@samual.uk> (https://samual.uk/)", |
| import type { LaxPartial } from "."; | ||
| export type Duration = LaxPartial<{ | ||
| years: bigint; | ||
| days: bigint; | ||
| hours: bigint; | ||
| minutes: bigint; | ||
| seconds: bigint; | ||
| milliseconds: bigint; | ||
| }>; | ||
| export declare const Duration: ({ years, days, hours, minutes, seconds, milliseconds }: Partial<Duration>) => Duration; | ||
| export declare function normaliseDuration(duration: Duration): void; | ||
| type FormatDurationOptions = LaxPartial<{ | ||
| ignoreZero: boolean; | ||
| }>; | ||
| export declare const formatDuration: ({ years, days, hours, minutes, seconds, milliseconds }: Duration, { ignoreZero }?: FormatDurationOptions) => string; | ||
| export {}; |
-45
| const Duration = ({ years, days, hours, minutes, seconds, milliseconds }) => ({ | ||
| years, | ||
| days, | ||
| hours, | ||
| minutes, | ||
| seconds, | ||
| milliseconds | ||
| }) | ||
| function normaliseDuration(duration) { | ||
| let milliseconds = duration.milliseconds ?? 0n, | ||
| seconds = duration.seconds ?? 0n, | ||
| minutes = duration.minutes ?? 0n, | ||
| hours = duration.hours ?? 0n, | ||
| days = duration.days ?? 0n, | ||
| years = duration.years ?? 0n | ||
| seconds += milliseconds / 1000n | ||
| milliseconds %= 1000n | ||
| minutes += seconds / 60n | ||
| seconds %= 60n | ||
| hours += minutes / 60n | ||
| minutes %= 60n | ||
| days += hours / 24n | ||
| hours %= 24n | ||
| years += days / 365n | ||
| days %= 365n | ||
| null != duration.years ? (duration.years = years) : (days += 365n * years) | ||
| null != duration.days ? (duration.days = days) : (hours += 24n * days) | ||
| null != duration.hours ? (duration.hours = hours) : (minutes += 60n * hours) | ||
| null != duration.minutes ? (duration.minutes = minutes) : (seconds += 60n * minutes) | ||
| null != duration.seconds ? (duration.seconds = seconds) : (milliseconds += 1000n * seconds) | ||
| null != duration.milliseconds && (duration.milliseconds = milliseconds) | ||
| } | ||
| const formatDuration = ({ years, days, hours, minutes, seconds, milliseconds }, { ignoreZero = !1 } = {}) => | ||
| [ | ||
| (ignoreZero ? years : null != years) && `${years} year${1n == years ? "" : "s"}`, | ||
| (ignoreZero ? days : null != days) && `${days} day${1n == days ? "" : "s"}`, | ||
| (ignoreZero ? hours : null != hours) && `${hours} hour${1n == hours ? "" : "s"}`, | ||
| (ignoreZero ? minutes : null != minutes) && `${minutes} minute${1n == minutes ? "" : "s"}`, | ||
| (ignoreZero ? seconds : null != seconds) && `${seconds} second${1n == seconds ? "" : "s"}`, | ||
| (ignoreZero ? milliseconds : null != milliseconds) && | ||
| `${milliseconds} millisecond${1n == milliseconds ? "" : "s"}` | ||
| ] | ||
| .filter(Boolean) | ||
| .join(", ") | ||
| export { Duration, formatDuration, normaliseDuration } |
28173
-8.05%113
-1.74%674
-8.3%