|
|
@ -1,32 +1,33 @@ |
|
|
|
const millify = require('millify') |
|
|
|
|
|
|
|
const axios = require('../axios.js') |
|
|
|
const compareVersions = require('../utils/compare-versions.js') |
|
|
|
const semColor = require('../utils/sem-color.js') |
|
|
|
|
|
|
|
const pre = versions => versions.filter(v => v.includes('-')) |
|
|
|
const pre = versions => versions.filter(v => v.includes('-') && v.indexOf('dev') !== 0) |
|
|
|
const stable = versions => versions.filter(v => !v.includes('-')) |
|
|
|
const latest = versions => versions.length > 0 && versions.slice(-1)[0] |
|
|
|
const nodev = versions => versions.filter(version => version !== 'dev-master') |
|
|
|
const noDev = versions => versions.filter(v => v.indexOf('dev') === -1) |
|
|
|
|
|
|
|
module.exports = async function (topic, vendor, pkg, channel = 'stable') { |
|
|
|
const endpoint = `https://packagist.org/packages/${vendor}/${pkg}.json` |
|
|
|
const response = await axios.get(endpoint).then(res => res.data) |
|
|
|
const { package: packageMeta } = await axios.get(endpoint).then(res => res.data) |
|
|
|
|
|
|
|
switch (topic) { |
|
|
|
case 'v': |
|
|
|
const versions = Object.keys(response.package.versions) |
|
|
|
const versions = Object.keys(packageMeta.versions).sort(compareVersions) |
|
|
|
|
|
|
|
let version = '' |
|
|
|
|
|
|
|
switch (channel) { |
|
|
|
case 'latest': |
|
|
|
version = latest(nodev(versions).reverse()) |
|
|
|
version = latest(noDev(versions)) |
|
|
|
break |
|
|
|
case 'pre': |
|
|
|
version = latest(pre(versions)) |
|
|
|
break |
|
|
|
default: |
|
|
|
version = latest(stable(versions).reverse()) |
|
|
|
version = latest(stable(versions)) |
|
|
|
} |
|
|
|
|
|
|
|
version = version || latest(versions) |
|
|
@ -39,73 +40,73 @@ module.exports = async function (topic, vendor, pkg, channel = 'stable') { |
|
|
|
case 'dt': |
|
|
|
return { |
|
|
|
subject: 'downloads', |
|
|
|
status: millify(response.package.downloads.total), |
|
|
|
status: millify(packageMeta.downloads.total), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'dd': |
|
|
|
return { |
|
|
|
subject: 'downloads', |
|
|
|
status: millify(response.package.downloads.daily) + '/day', |
|
|
|
status: millify(packageMeta.downloads.daily) + '/day', |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'dm': |
|
|
|
return { |
|
|
|
subject: 'downloads', |
|
|
|
status: millify(response.package.downloads.monthly) + '/month', |
|
|
|
status: millify(packageMeta.downloads.monthly) + '/month', |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'favers': |
|
|
|
return { |
|
|
|
subject: 'favers', |
|
|
|
status: millify(response.package.favers), |
|
|
|
status: millify(packageMeta.favers), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'dependents': |
|
|
|
return { |
|
|
|
subject: 'dependents', |
|
|
|
status: millify(response.package.dependents), |
|
|
|
status: millify(packageMeta.dependents), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'suggesters': |
|
|
|
return { |
|
|
|
subject: 'suggesters', |
|
|
|
status: millify(response.package.suggesters), |
|
|
|
status: millify(packageMeta.suggesters), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'n': |
|
|
|
return { |
|
|
|
subject: 'packagist', |
|
|
|
status: response.package.name, |
|
|
|
status: packageMeta.name, |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'ghs': |
|
|
|
return { |
|
|
|
subject: 'stars', |
|
|
|
status: millify(response.package.github_stars), |
|
|
|
status: millify(packageMeta.github_stars), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'ghw': |
|
|
|
return { |
|
|
|
subject: 'watchers', |
|
|
|
status: millify(response.package.github_watchers), |
|
|
|
status: millify(packageMeta.github_watchers), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'ghf': |
|
|
|
return { |
|
|
|
subject: 'forks', |
|
|
|
status: millify(response.package.github_forks), |
|
|
|
status: millify(packageMeta.github_forks), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'ghi': |
|
|
|
return { |
|
|
|
subject: 'issues', |
|
|
|
status: millify(response.package.github_open_issues), |
|
|
|
status: millify(packageMeta.github_open_issues), |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
case 'lang': |
|
|
|
return { |
|
|
|
subject: 'language', |
|
|
|
status: response.package.language, |
|
|
|
status: packageMeta.language, |
|
|
|
color: 'green' |
|
|
|
} |
|
|
|
default: |
|
|
|