package-age
Advanced tools
Comparing version 0.3.0 to 0.4.0
96
index.js
@@ -1,94 +0,4 @@ | ||
#!/usr/bin/env node | ||
import config from './lib/config.js'; | ||
import * as dependencies from './lib/dependencies.js'; | ||
const chalk = require('chalk'); | ||
const Table = require('cli-table3'); | ||
const commander = require('commander'); | ||
const dates = require('./lib/dates'); | ||
const dependencies = require('./lib/dependencies'); | ||
const versions = require('./lib/versions'); | ||
const config = { | ||
version: require('./package.json').version, | ||
registry: 'https://registry.npmjs.org', | ||
file: 'package.json', | ||
year: 2, | ||
month: 0, | ||
dependencies: {} | ||
}; | ||
const SHORT = { | ||
devDependencies: chalk.blue.bold('dev'), | ||
peerDependencies: chalk.magenta.bold('peer'), | ||
bundledDependencies: chalk.cyan.bold('bundled'), | ||
}; | ||
const table = new Table({ | ||
head: [ | ||
chalk.keyword('orange').underline('Name'), | ||
chalk.keyword('orange').underline('Type'), | ||
chalk.keyword('orange').underline('Version'), | ||
chalk.keyword('orange').underline('Last Publish') | ||
] | ||
}); | ||
commander | ||
.version(config.version, '-v, --version') | ||
.description('A CLI for detecting old dependencies used in your project') | ||
.option('-f, --file [optional]', 'path to the package.json', 'package.json') | ||
.option('-y, --year [optional]', 'after how much years a package should be considered old', 2) | ||
.option('-m, --month [optional]', 'after how much months a package should be considered old', 0) | ||
.option('-a, --all', 'parameter to get all kinds of dependencies', false) | ||
.option('-d, --dev', 'parameter to get the devDependencies', false) | ||
.option('-p, --peer', 'parameter to get the peerDependencies', false) | ||
.option('-b, --bundled', 'parameter to get the bundledDependencies', false) | ||
.parse(process.argv); | ||
async function cli() { | ||
const results = await dependencies.get(Object.assign(config, { | ||
file: commander.file, | ||
year: commander.year, | ||
month: commander.month, | ||
dependencies: { | ||
all: commander.all, | ||
dev: commander.dev, | ||
peer: commander.peer, | ||
bundled: commander.bundled | ||
} | ||
})); | ||
// Print the results to the console | ||
Object.entries(results).forEach(([key, dependencies]) => { | ||
dependencies.forEach(dependency => { | ||
let version; | ||
let date; | ||
if (dependency.valid) { | ||
version = versions.compare(dependency.version, dependency.latest); | ||
date = dates.compare(dependency.date, config.year, config.month); | ||
} else { | ||
version = chalk.bgRed.bold(`supplied invalid version: '${version}'`); | ||
date = null; | ||
} | ||
table.push([ | ||
dependency.name, | ||
SHORT[key] || null, | ||
version, | ||
date | ||
]); | ||
}); | ||
}); | ||
console.log(table.toString()); // eslint-disable-line no-console | ||
} | ||
if (require.main === module) { | ||
cli(); | ||
} else { | ||
module.exports = options => dependencies.get(Object.assign(config, options)); | ||
} | ||
export default options => dependencies.get(Object.assign({}, config, options)); |
@@ -1,2 +0,2 @@ | ||
const chalk = require('chalk'); | ||
import chalk from 'chalk'; | ||
@@ -7,3 +7,3 @@ /* Compares a given date (usually the date when | ||
a year and a month after which a package is considered old */ | ||
function compare(date, year, month) { | ||
export function compare(date, year, month) { | ||
const x = new Date(); | ||
@@ -22,5 +22,1 @@ x.setFullYear(x.getFullYear() - year); | ||
} | ||
module.exports = { | ||
compare | ||
}; |
@@ -1,27 +0,27 @@ | ||
const chalk = require('chalk'); | ||
const readPkg = require('read-pkg'); | ||
import chalk from 'chalk'; | ||
import { readPackage } from 'read-pkg'; | ||
const info = require('./information'); | ||
const versions = require('./versions'); | ||
import info from './information.js'; | ||
import * as versions from './versions.js'; | ||
function get(config) { | ||
return readPkg(config.file).then(async pkg => { | ||
const result = {}; | ||
// Always read the normal dependencies if they are available | ||
if (pkg.dependencies) { | ||
result.dependencies = await packages(config, pkg.dependencies); | ||
} | ||
export async function get(config) { | ||
const pkg = await readPackage(config.file); | ||
const result = {}; | ||
if (pkg.devDependencies && (config.dependencies.dev || config.dependencies.all)) { | ||
result.devDependencies = await packages(config, pkg.devDependencies); | ||
} | ||
if (pkg.peerDependencies && (config.dependencies.peer || config.dependencies.all)) { | ||
result.peerDependencies = await packages(config, pkg.peerDependencies); | ||
} | ||
if (pkg.bundledDependencies && (config.dependencies.bundled || config.dependencies.all)) { | ||
result.bundledDependencies = await packages(config, pkg.bundledDependencies); | ||
} | ||
// Always read the normal dependencies if they are available | ||
if (pkg.dependencies) { | ||
result.dependencies = await packages(config, pkg.dependencies); | ||
} | ||
return result; | ||
}); | ||
if (pkg.devDependencies && (config.dependencies.dev || config.dependencies.all)) { | ||
result.devDependencies = await packages(config, pkg.devDependencies); | ||
} | ||
if (pkg.peerDependencies && (config.dependencies.peer || config.dependencies.all)) { | ||
result.peerDependencies = await packages(config, pkg.peerDependencies); | ||
} | ||
if (pkg.bundledDependencies && (config.dependencies.bundled || config.dependencies.all)) { | ||
result.bundledDependencies = await packages(config, pkg.bundledDependencies); | ||
} | ||
return result; | ||
} | ||
@@ -52,5 +52,1 @@ | ||
} | ||
module.exports = { | ||
get | ||
}; |
@@ -1,5 +0,5 @@ | ||
const request = require('./request'); | ||
const versions = require('./versions'); | ||
import request from './request.js'; | ||
import * as versions from './versions.js'; | ||
module.exports = (config, name, version) => { | ||
export default (config, name, version) => { | ||
return request(`${config.registry}/${name}`).then(body => { | ||
@@ -6,0 +6,0 @@ const valid = versions.valid(version); |
/* eslint-disable consistent-return */ | ||
const https = require('https'); | ||
import https from 'https'; | ||
module.exports = url => { | ||
export default url => { | ||
return new Promise((resolve, reject) => { | ||
@@ -6,0 +6,0 @@ if (typeof url === 'undefined') { |
@@ -1,5 +0,5 @@ | ||
const chalk = require('chalk'); | ||
const semver = require('semver'); | ||
import chalk from 'chalk'; | ||
import semver from 'semver'; | ||
function compare(v, l) { | ||
export function compare(v, l) { | ||
const compare = semver.compare(v, l); | ||
@@ -13,3 +13,3 @@ if (compare === -1) { | ||
function clean(v) { | ||
export function clean(v) { | ||
// TODO: maybe some more methods or even an external library are needed here | ||
@@ -22,10 +22,4 @@ v = v.trim(); | ||
function valid(v) { | ||
export function valid(v) { | ||
return semver.valid(v) !== null; | ||
} | ||
module.exports = { | ||
compare, | ||
clean, | ||
valid | ||
}; |
{ | ||
"name": "package-age", | ||
"version": "0.3.0", | ||
"version": "0.4.0", | ||
"description": "A CLI for detecting old dependencies used in your project", | ||
"main": "index.js", | ||
"type": "module", | ||
"exports": "./index.js", | ||
"bin": { | ||
"package-age": "./index.js" | ||
"package-age": "./cli.js" | ||
}, | ||
"files": [ | ||
"lib/" | ||
"lib/", | ||
"cli.js", | ||
"index.js" | ||
], | ||
"scripts": { | ||
"lint": "eslint **/*.js", | ||
"mocha": "npx nyc mocha", | ||
"mocha": "c8 mocha", | ||
"test": "npm run lint && npm run mocha", | ||
"coverage": "nyc report --reporter=text-lcov | coveralls" | ||
"coverage": "c8 report --reporter=text-lcov | coveralls" | ||
}, | ||
"dependencies": { | ||
"chalk": "^4.1.0", | ||
"chalk": "^4.1.2", | ||
"cli-table3": "^0.6.0", | ||
"commander": "^6.0.0", | ||
"read-pkg": "^5.2.0", | ||
"semver": "^7.3.2" | ||
"commander": "^8.1.0", | ||
"read-pkg": "^7.0.0", | ||
"semver": "^7.3.5" | ||
}, | ||
"devDependencies": { | ||
"chai": "^4.2.0", | ||
"coveralls": "^3.1.0", | ||
"eslint": "^7.6.0", | ||
"mocha": "^8.1.1", | ||
"mocha-lcov-reporter": "^1.3.0", | ||
"nyc": "^15.1.0" | ||
"c8": "^7.8.0", | ||
"chai": "^4.3.4", | ||
"coveralls": "^3.1.1", | ||
"eslint": "^7.32.0", | ||
"mocha": "^9.1.1", | ||
"mocha-lcov-reporter": "^1.3.0" | ||
}, | ||
@@ -33,0 +36,0 @@ "repository": { |
@@ -1,2 +0,2 @@ | ||
# package-age [![travis](https://travis-ci.com/ENT8R/package-age.svg?branch=master)](https://travis-ci.com/ENT8R/package-age) [![dependencies](https://david-dm.org/ent8r/package-age/status.svg)](https://david-dm.org/ent8r/package-age) [![npm](https://img.shields.io/npm/v/package-age.svg)](https://www.npmjs.com/package/package-age) [![coverage](https://coveralls.io/repos/github/ENT8R/package-age/badge.svg?branch=master)](https://coveralls.io/github/ENT8R/package-age?branch=master) | ||
# package-age [![travis](https://travis-ci.com/ENT8R/package-age.svg?branch=main)](https://travis-ci.com/ENT8R/package-age) [![dependencies](https://david-dm.org/ent8r/package-age/status.svg)](https://david-dm.org/ent8r/package-age) [![npm](https://img.shields.io/npm/v/package-age.svg)](https://www.npmjs.com/package/package-age) [![coverage](https://coveralls.io/repos/github/ENT8R/package-age/badge.svg?branch=main)](https://coveralls.io/github/ENT8R/package-age?branch=main) | ||
@@ -14,3 +14,3 @@ | ||
<img src="carbon.png"> | ||
<img src="assets/carbon.png"> | ||
@@ -17,0 +17,0 @@ ## License |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
44206
11
Yes
203
+ Addedcommander@8.3.0(transitive)
+ Addedhosted-git-info@4.1.0(transitive)
+ Addedlru-cache@6.0.0(transitive)
+ Addednormalize-package-data@3.0.3(transitive)
+ Addedread-pkg@7.1.0(transitive)
+ Addedtype-fest@2.19.0(transitive)
+ Addedyallist@4.0.0(transitive)
- Removedcommander@6.2.1(transitive)
- Removedhosted-git-info@2.8.9(transitive)
- Removednormalize-package-data@2.5.0(transitive)
- Removedpath-parse@1.0.7(transitive)
- Removedread-pkg@5.2.0(transitive)
- Removedresolve@1.22.10(transitive)
- Removedsemver@5.7.2(transitive)
- Removedsupports-preserve-symlinks-flag@1.0.0(transitive)
- Removedtype-fest@0.6.0(transitive)
Updatedchalk@^4.1.2
Updatedcommander@^8.1.0
Updatedread-pkg@^7.0.0
Updatedsemver@^7.3.5