const path = require('path') const RESOLVE = require('./resolve.json') const loadBrands = require('./loadBrands') const getLibraryColor = require('./getLibraryColor') module.exports = async ({ type, repo, dependency: library, kind, color, }) => { if (!repo) { return null } const labelColor = '666666' const logoColor = 'ffffff' const style = 'flat-square' let badgeUrl switch (type) { case 'package': if (!['name', 'version'].includes(kind)) { return null } badgeUrl = new URL(`/badge/dynamic/json`, process.env.SHIELDS_IMAGE_BASE_URL) badgeUrl.search = new URLSearchParams({ color, query: `$.${kind}`, label: kind, style, labelColor, url: new URL(path.join(repo, 'raw', 'branch', process.env.MAIN_BRANCH, 'package.json'), process.env.REPO_BASE_URL), }).toString() return badgeUrl case 'dependency': if (!['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'].includes(kind)) { return null } const brands = await loadBrands() const libraryInfo = getLibraryColor(library, brands, RESOLVE) const libraryColor = libraryInfo ? libraryInfo.color.replace('#', '') : `${labelColor}` badgeUrl = new URL(`/badge/dynamic/json`, process.env.SHIELDS_IMAGE_BASE_URL) badgeUrl.search = new URLSearchParams({ color: libraryColor, label: library, query: `$.${kind}['${library}']`, labelColor, logo: libraryInfo.name, logoColor, style, url: new URL(path.join(repo, 'raw', 'branch', process.env.MAIN_BRANCH, 'package.json'), process.env.REPO_BASE_URL), }).toString() return badgeUrl default: break } return null }