UNPKG

@samual/duration

Version:

Normalize and format durations of time.

78 lines (77 loc) 3.51 kB
import type { LaxPartial } from "@samual/types"; /** * A duration of time. * * All properties are optional and must be set to * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined) or an integer * (be able to pass * [`Number.isInteger()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)). * Absent properties and properties set to `undefined` are treated the same. * More units of time will be added in the future. * * @example Basic Usage * ```ts * import type { Duration } from "@samual/duration" * * let duration: Duration = { milliseconds: Date.now() } * ``` */ export type Duration = LaxPartial<{ /** * The number of years in the duration. Same as 365 days. * * Must be set to * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined) or an * integer (be able to pass * [`Number.isInteger()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)). */ years: number; /** * The number of days in the duration. Same as 24 hours * * Must be set to * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined) or an * integer (be able to pass * [`Number.isInteger()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)). */ days: number; /** * The number of hours in the duration. Same as 60 minutes * * Must be set to * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined) or an * integer (be able to pass * [`Number.isInteger()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)). */ hours: number; /** * The number of minutes in the duration. Same as 60 seconds * * Must be set to * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined) or an * integer (be able to pass * [`Number.isInteger()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)). */ minutes: number; /** * The number of seconds in the duration. Same as 1000 milliseconds * * Must be set to * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined) or an * integer (be able to pass * [`Number.isInteger()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)). */ seconds: number; /** * The number of milliseconds in the duration. * * Must be set to * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined) or an * integer (be able to pass * [`Number.isInteger()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)). */ milliseconds: number; }>; export { DurationError } from "./DurationError"; export { formatDuration, FormatDurationError, FormatEmptyDurationError, FormatNonIntegerDurationError, type FormatDurationOptions } from "./formatDuration"; export { normalizeDuration, NormalizeDurationError, NormalizeNonIntegerDurationError } from "./normalizeDuration";