Skip to content

Commit

Permalink
Require Node.js 8, add TypeScript definition (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
BendingBender authored and sindresorhus committed Mar 12, 2019
1 parent 9644131 commit 7ec956f
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 14 deletions.
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@ language: node_js
node_js:
- '10'
- '8'
- '6'
16 changes: 16 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
export interface Options {
/**
* A dist-tag or a semver range.
*/
readonly version?: string;
}

/**
* Get the latest version of an npm package.
*
* @param name - The package name to look up the version for.
*/
export default function latestVersion(
name: string,
options?: Options
): Promise<string>;
9 changes: 8 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
'use strict';

const packageJson = require('package-json');

module.exports = (name, options) => packageJson(name.toLowerCase(), options).then(data => data.version);
const lastestVersion = async (name, options) => {
const {version} = await packageJson(name.toLowerCase(), options);
return version;
};

module.exports = lastestVersion;
module.exports.default = lastestVersion;
5 changes: 5 additions & 0 deletions index.test-d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {expectType} from 'tsd-check';
import latestVersion from '.';

expectType<Promise<string>>(latestVersion('ava'));
expectType<Promise<string>>(latestVersion('npm', {version: 'latest-5'}));
16 changes: 9 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@
"url": "sindresorhus.com"
},
"engines": {
"node": ">=6"
"node": ">=8"
},
"scripts": {
"test": "xo && ava"
"test": "xo && ava && tsd-check"
},
"files": [
"index.js"
"index.js",
"index.d.ts"
],
"keywords": [
"latest",
Expand All @@ -29,12 +30,13 @@
"module"
],
"dependencies": {
"package-json": "^5.0.0"
"package-json": "^6.0.0"
},
"devDependencies": {
"ava": "*",
"semver": "^5.4.1",
"ava": "^1.3.1",
"semver": "^5.6.0",
"semver-regex": "^2.0.0",
"xo": "*"
"tsd-check": "^0.3.0",
"xo": "^0.24.0"
}
}
10 changes: 5 additions & 5 deletions test.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import test from 'ava';
import semver from 'semver';
import semverRegex from 'semver-regex';
import m from '.';
import latestVersion from '.';

test('latest version', async t => {
t.regex(await m('ava'), semverRegex());
t.regex(await latestVersion('ava'), semverRegex());
});

test('latest version with version', async t => {
t.true(semver.satisfies(await m('package-json', {version: '0'}), '0.x'));
t.true(semver.satisfies(await latestVersion('package-json', {version: '0'}), '0.x'));
});

test('latest version with dist-tag', async t => {
t.true(semver.satisfies(await m('npm', {version: 'latest-5'}), '5.x'));
t.true(semver.satisfies(await latestVersion('npm', {version: 'latest-5'}), '5.x'));
});

test('latest version scoped', async t => {
t.regex(await m('@sindresorhus/df'), semverRegex());
t.regex(await latestVersion('@sindresorhus/df'), semverRegex());
});

0 comments on commit 7ec956f

Please sign in to comment.