Socket
Socket
Sign inDemoInstall

pretty-ms

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pretty-ms - npm Package Compare versions

Comparing version 7.0.1 to 8.0.0

119

index.d.ts

@@ -1,80 +0,78 @@

declare namespace prettyMilliseconds {
interface Options {
/**
Number of digits to appear after the seconds decimal point.
export interface Options {
/**
Number of digits to appear after the seconds decimal point.
@default 1
*/
readonly secondsDecimalDigits?: number;
@default 1
*/
readonly secondsDecimalDigits?: number;
/**
Number of digits to appear after the milliseconds decimal point.
/**
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).
Useful in combination with [`process.hrtime()`](https://nodejs.org/api/process.html#process_process_hrtime).
@default 0
*/
readonly millisecondsDecimalDigits?: number;
@default 0
*/
readonly millisecondsDecimalDigits?: number;
/**
Keep milliseconds on whole seconds: `13s` → `13.0s`.
/**
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.
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.
@default false
*/
readonly keepDecimalsOnWholeSeconds?: boolean;
@default false
*/
readonly keepDecimalsOnWholeSeconds?: boolean;
/**
Only show the first unit: `1h 10m` → `1h`.
/**
Only show the first unit: `1h 10m` → `1h`.
Also ensures that `millisecondsDecimalDigits` and `secondsDecimalDigits` are both set to `0`.
Also ensures that `millisecondsDecimalDigits` and `secondsDecimalDigits` are both set to `0`.
@default false
*/
readonly compact?: boolean;
@default false
*/
readonly compact?: boolean;
/**
Number of units to show. Setting `compact` to `true` overrides this option.
/**
Number of units to show. Setting `compact` to `true` overrides this option.
@default Infinity
*/
readonly unitCount?: number;
@default Infinity
*/
readonly unitCount?: number;
/**
Use full-length units: `5h 1m 45s` → `5 hours 1 minute 45 seconds`.
/**
Use full-length units: `5h 1m 45s` → `5 hours 1 minute 45 seconds`.
@default false
*/
readonly verbose?: boolean;
@default false
*/
readonly verbose?: boolean;
/**
Show milliseconds separately. This means they won't be included in the decimal part of the seconds.
/**
Show milliseconds separately. This means they won't be included in the decimal part of the seconds.
@default false
*/
readonly separateMilliseconds?: boolean;
@default false
*/
readonly separateMilliseconds?: boolean;
/**
Show microseconds and nanoseconds.
/**
Show microseconds and nanoseconds.
@default false
*/
readonly formatSubMilliseconds?: boolean;
@default false
*/
readonly formatSubMilliseconds?: boolean;
/**
Display time using colon notation: `5h 1m 45s` → `5:01:45`. Always shows time in at least minutes: `1s` → `0:01`
/**
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.
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`
Setting `colonNotation` to `true` overrides the following options to `false`:
- `compact`
- `formatSubMilliseconds`
- `separateMilliseconds`
- `verbose`
@default false
*/
readonly colonNotation?: boolean;
}
@default false
*/
readonly colonNotation?: boolean;
}

@@ -89,3 +87,3 @@

```
import prettyMilliseconds = require('pretty-ms');
import prettyMilliseconds from 'pretty-ms';

@@ -122,7 +120,6 @@ prettyMilliseconds(1337000000);

*/
declare function prettyMilliseconds(
export default function prettyMilliseconds(
milliseconds: number,
options?: prettyMilliseconds.Options
options?: Options
): string;
export = prettyMilliseconds;

@@ -1,9 +0,8 @@

'use strict';
const parseMilliseconds = require('parse-ms');
import parseMilliseconds from 'parse-ms';
const pluralize = (word, count) => count === 1 ? word : `${word}s`;
const SECOND_ROUNDING_EPSILON = 0.0000001;
const SECOND_ROUNDING_EPSILON = 0.000_000_1;
module.exports = (milliseconds, options = {}) => {
export default function prettyMilliseconds(milliseconds, options = {}) {
if (!Number.isFinite(milliseconds)) {

@@ -63,5 +62,5 @@ throw new TypeError('Expected a finite number');

if (
options.separateMilliseconds ||
options.formatSubMilliseconds ||
(!options.colonNotation && milliseconds < 1000)
options.separateMilliseconds
|| options.formatSubMilliseconds
|| (!options.colonNotation && milliseconds < 1000)
) {

@@ -74,25 +73,25 @@ add(parsed.seconds, 'second', 's');

} else {
const millisecondsAndBelow =
parsed.milliseconds +
(parsed.microseconds / 1000) +
(parsed.nanoseconds / 1e6);
const millisecondsAndBelow
= parsed.milliseconds
+ (parsed.microseconds / 1000)
+ (parsed.nanoseconds / 1e6);
const millisecondsDecimalDigits =
typeof options.millisecondsDecimalDigits === 'number' ?
options.millisecondsDecimalDigits :
0;
const millisecondsDecimalDigits
= typeof options.millisecondsDecimalDigits === 'number'
? options.millisecondsDecimalDigits
: 0;
const roundedMiliseconds = millisecondsAndBelow >= 1 ?
Math.round(millisecondsAndBelow) :
Math.ceil(millisecondsAndBelow);
const roundedMiliseconds = millisecondsAndBelow >= 1
? Math.round(millisecondsAndBelow)
: Math.ceil(millisecondsAndBelow);
const millisecondsString = millisecondsDecimalDigits ?
millisecondsAndBelow.toFixed(millisecondsDecimalDigits) :
roundedMiliseconds;
const millisecondsString = millisecondsDecimalDigits
? millisecondsAndBelow.toFixed(millisecondsDecimalDigits)
: roundedMiliseconds;
add(
Number.parseFloat(millisecondsString, 10),
Number.parseFloat(millisecondsString),
'millisecond',
'ms',
millisecondsString
millisecondsString,
);

@@ -102,11 +101,11 @@ }

const seconds = (milliseconds / 1000) % 60;
const secondsDecimalDigits =
typeof options.secondsDecimalDigits === 'number' ?
options.secondsDecimalDigits :
1;
const secondsDecimalDigits
= typeof options.secondsDecimalDigits === 'number'
? options.secondsDecimalDigits
: 1;
const secondsFixed = floorDecimals(seconds, secondsDecimalDigits);
const secondsString = options.keepDecimalsOnWholeSeconds ?
secondsFixed :
secondsFixed.replace(/\.0+$/, '');
add(Number.parseFloat(secondsString, 10), 'second', 's', secondsString);
const secondsString = options.keepDecimalsOnWholeSeconds
? secondsFixed
: secondsFixed.replace(/\.0+$/, '');
add(Number.parseFloat(secondsString), 'second', 's', secondsString);
}

@@ -128,2 +127,2 @@

return options.colonNotation ? result.join('') : result.join(' ');
};
}
{
"name": "pretty-ms",
"version": "7.0.1",
"version": "8.0.0",
"description": "Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`",

@@ -13,4 +13,7 @@ "license": "MIT",

},
"type": "module",
"exports": "./index.js",
"types": "./index.d.ts",
"engines": {
"node": ">=10"
"node": ">=14.16"
},

@@ -43,9 +46,9 @@ "scripts": {

"dependencies": {
"parse-ms": "^2.1.0"
"parse-ms": "^3.0.0"
},
"devDependencies": {
"ava": "^2.4.0",
"tsd": "^0.11.0",
"xo": "^0.30.0"
"ava": "^4.3.0",
"tsd": "^0.20.0",
"xo": "^0.49.0"
}
}

@@ -1,2 +0,2 @@

# pretty-ms [![Build Status](https://travis-ci.com/sindresorhus/pretty-ms.svg?branch=master)](https://travis-ci.com/sindresorhus/pretty-ms)
# pretty-ms

@@ -7,5 +7,5 @@ > Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`

```sh
npm install pretty-ms
```
$ npm install pretty-ms
```

@@ -15,3 +15,3 @@ ## Usage

```js
const prettyMilliseconds = require('pretty-ms');
import prettyMilliseconds from 'pretty-ms';

@@ -18,0 +18,0 @@ prettyMilliseconds(1337000000);

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc