Gathering detailed insights and metrics for ms
Gathering detailed insights and metrics for ms
Gathering detailed insights and metrics for ms
Gathering detailed insights and metrics for ms
npm install ms
99.4
Supply Chain
84.7
Quality
82.6
Maintenance
100
Vulnerability
100
License
Module System
Min. Node Version
Typescript Support
Node Version
NPM Version
5,165 Stars
163 Commits
265 Forks
83 Watching
7 Branches
105 Contributors
Updated on 27 Nov 2024
Minified
Minified + Gzipped
TypeScript (91.41%)
JavaScript (8.4%)
Shell (0.19%)
Cumulative downloads
Total Downloads
Last day
-23.7%
39,398,369
Compared to previous day
Last week
-4.6%
275,189,598
Compared to previous week
Last month
11.2%
1,149,876,163
Compared to previous month
Last year
12.5%
11,571,089,969
Compared to previous year
Use this package to easily convert various time formats to milliseconds.
1ms('2 days') // 172800000 2ms('1d') // 86400000 3ms('10h') // 36000000 4ms('2.5 hrs') // 9000000 5ms('2h') // 7200000 6ms('1m') // 60000 7ms('5s') // 5000 8ms('1y') // 31557600000 9ms('100') // 100 10ms('-3 days') // -259200000 11ms('-1h') // -3600000 12ms('-200') // -200
1ms(60000) // "1m" 2ms(2 * 60000) // "2m" 3ms(-3 * 60000) // "-3m" 4ms(ms('10 hours')) // "10h"
1ms(60000, { long: true }) // "1 minute" 2ms(2 * 60000, { long: true }) // "2 minutes" 3ms(-3 * 60000, { long: true }) // "-3 minutes" 4ms(ms('10 hours'), { long: true }) // "10 hours"
ms
, a string with a unit is returned100
for '100'
)As of v3.0
, this package includes TypeScript definitions.
For added safety, we're using Template Literal Types (added in TypeScript 4.1). This ensures that you don't accidentally pass ms
values that it can't process.
This won't require you to do anything special in most situations, but you can also import the StringValue
type from ms
if you need to use it.
1import ms, { StringValue } from 'ms'; 2 3// Using the exported type. 4function example(value: StringValue) { 5 ms(value); 6} 7 8// This function will only accept a string compatible with `ms`. 9example('1 h');
In this example, we use a Type Assertion to coerce a string
.
1import ms, { StringValue } from 'ms'; 2 3// Type assertion with the exported type. 4function example(value: string) { 5 try { 6 // A string could be "wider" than the values accepted by `ms`, so we assert 7 // that our `value` is a `StringValue`. 8 // 9 // It's important to note that this can be dangerous (see below). 10 ms(value as StringValue); 11 } catch (error: Error) { 12 // Handle any errors from invalid values. 13 console.error(error); 14 } 15} 16 17// This function will accept any string, which may result in a bug. 18example('any value');
You may also create a custom Template Literal Type.
1import ms from 'ms'; 2 3type OnlyDaysAndWeeks = `${number} ${'days' | 'weeks'}`; 4 5// Using a custom Template Literal Type. 6function example(value: OnlyDaysAndWeeks) { 7 // The type of `value` is narrower than the values `ms` accepts, which is 8 // safe to use without coercion. 9 ms(value); 10} 11 12// This function will accept "# days" or "# weeks" only. 13example('5.2 days');
As of v3.0
, you can import parse
and format
separately.
1import { parse, format } from 'ms'; 2 3parse('1h'); // 3600000 4 5format(2000); // "2s"
If you want strict type checking for the input value, you can use parseStrict
.
1import { parseStrict } from 'ms'; 2 3parseStrict('1h'); // 3600000 4 5function example(s: string) { 6 return parseStrict(str); // tsc error 7}
ms
is compatible with the Edge Runtime. It can be used inside environments like Vercel Edge Functions as follows:
1// Next.js (pages/api/edge.js) (npm i next@canary) 2// Other frameworks (api/edge.js) (npm i -g vercel@canary) 3 4import ms from 'ms'; 5const start = Date.now(); 6 7export default (req) => { 8 return new Response(`Alive since ${ms(Date.now() - start)}`); 9}; 10 11export const config = { 12 runtime: 'experimental-edge', 13};
ms
as a macro at build-time.npm link
npm link ms
. Instead of the default one from npm, Node.js will now use your clone of ms!As always, you can run the tests using: npm test
The latest stable version of the package.
Stable Version
1
7.5/10
Summary
Regular Expression Denial of Service in ms
Affected Versions
< 0.7.1
Patched Versions
0.7.1
1
5.3/10
Summary
Vercel ms Inefficient Regular Expression Complexity vulnerability
Affected Versions
< 2.0.0
Patched Versions
2.0.0
Reason
no dangerous workflow patterns detected
Reason
no binaries found in the repo
Reason
license file detected
Details
Reason
security policy file detected
Details
Reason
Found 19/29 approved changesets -- score normalized to 6
Reason
9 existing vulnerabilities detected
Details
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
project is not fuzzed
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Score
Last Scanned on 2024-11-18
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More