/** * This code was derived from https://github.com/sindresorhus/parse-ms/tree/a18636bb609793326a1bd8d541aad49f715f0a40 * and https://github.com/sindresorhus/pretty-ms/tree/763fe075d8a62aa8d9ee603bfad2f3107c3a9f02. * It is available under the MIT license. */ /** * Options for the `formatMilliseconds` function. */ export interface FormatMillisecondsOptions { /** * Number of digits to appear after the seconds decimal point. */ secondsDecimalDigits?: number; /** * Number of digits to appear after the milliseconds decimal point. * * Useful in combination with [`process.hrtime()`](https://nodejs.org/api/process.html#process_process_hrtime). */ millisecondsDecimalDigits?: number; /** * Keep milliseconds on whole seconds: `13s` → `13.0s`. * * Useful when you are showing a number of seconds spent on an operation and don't want the width of the output to change when hitting a whole number. */ keepDecimalsOnWholeSeconds?: boolean; /** * Only show the first unit: `1h 10m` → `1h`. * * Also ensures that `millisecondsDecimalDigits` and `secondsDecimalDigits` are both set to `0`. */ compact?: boolean; /** * Number of units to show. Setting `compact` to `true` overrides this option. */ unitCount?: number; /** * Use full-length units: `5h 1m 45s` → `5 hours 1 minute 45 seconds`. */ verbose?: boolean; /** * Show milliseconds separately. This means they won't be included in the decimal part of the seconds. */ separateMilliseconds?: boolean; /** * Show microseconds and nanoseconds. */ formatSubMilliseconds?: boolean; /** * Display time using colon notation: `5h 1m 45s` → `5:01:45`. Always shows time in at least minutes: `1s` → `0:01` * * Useful when you want to display time without the time units, similar to a digital watch. * * Setting `colonNotation` to `true` overrides the following options to `false`: * - `compact` * - `formatSubMilliseconds` * - `separateMilliseconds` * - `verbose` */ colonNotation?: boolean; } /** * Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`. * @param milliseconds - Milliseconds to humanize. * @param options - Options for humanizing the milliseconds. * @returns The humanized string. * @example * ``` * import formatMilliseconds from '@oliversalzburg/js-utils/format/milliseconds.js'; * * formatMilliseconds(1337000000); * //=> '15d 11h 23m 20s' * * formatMilliseconds(1337); * //=> '1.3s' * * formatMilliseconds(133); * //=> '133ms' * * // `compact` option * formatMilliseconds(1337, {compact: true}); * //=> '1s' * * // `verbose` option * formatMilliseconds(1335669000, {verbose: true}); * //=> '15 days 11 hours 1 minute 9 seconds' * * // `colonNotation` option * formatMilliseconds(95500, {colonNotation: true}); * //=> '1:35.5' * * // `formatSubMilliseconds` option * formatMilliseconds(100.400080, {formatSubMilliseconds: true}) * //=> '100ms 400µs 80ns' * * // Can be useful for time durations * formatMilliseconds(new Date(2014, 0, 1, 10, 40) - new Date(2014, 0, 1, 10, 5)) * //=> '35m' * ``` */ export declare const formatMilliseconds: (milliseconds: number | bigint, options?: Readonly) => string;