kopia lustrzana https://github.com/badgen/badgen.net
refactor: style tweaks (#499)
* style: use owner/repo instead of user/repo * feat(maven): support `metadata-url` shorthand * style(badgesize): use `file-url` to mark an external URL * style(https): rename `path` to `pathname` Co-authored-by: Amio Jin <amio.cn@gmail.com>pull/502/head
rodzic
578ec7e285
commit
44a9a2f1df
|
@ -7,29 +7,32 @@ export default createBadgenHandler({
|
|||
'/badgesize/normal/amio/emoji.json/master/emoji-compact.json': 'normal size',
|
||||
'/badgesize/brotli/amio/emoji.json/master/emoji-compact.json': 'brotli size',
|
||||
'/badgesize/gzip/amio/emoji.json/master/emoji-compact.json': 'gzip size',
|
||||
'/badgesize/normal/https/unpkg.com/snarkdown/dist/snarkdown.js': 'arbitrary url',
|
||||
'/badgesize/normal/file-url/https/unpkg.com/snarkdown/dist/snarkdown.js': 'arbitrary url',
|
||||
'/badgesize/normal/file-url/unpkg.com/snarkdown/dist/snarkdown.js': 'arbitrary url',
|
||||
},
|
||||
handlers: {
|
||||
'/badgesize/:topic/:path+': handler
|
||||
'/badgesize/:topic/file-url/:protocol<https?:?>/:hostname/:pathname+': urlHandler,
|
||||
'/badgesize/:topic/file-url/:hostname/:pathname+': urlHandler,
|
||||
'/badgesize/:topic/:protocol<https?:?>/:hostname/:pathname+': urlHandler,
|
||||
'/badgesize/:topic/:owner/:repo/:path+': githubHandler
|
||||
}
|
||||
})
|
||||
|
||||
async function handler ({ topic, path }: PathArgs) {
|
||||
if (path.startsWith('http/')) {
|
||||
path = path.slice(0, 4) + ':/' + path.slice(4)
|
||||
} else if (path.startsWith('https/')) {
|
||||
path = path.slice(0, 5) + ':/' + path.slice(5)
|
||||
} else if (path.startsWith('http:/')) {
|
||||
path = path.slice(0, 5) + '/' + path.slice(5)
|
||||
} else if (path.startsWith('https:/')) {
|
||||
path = path.slice(0, 6) + '/' + path.slice(6)
|
||||
}
|
||||
function githubHandler ({ topic, owner, repo, path }: PathArgs) {
|
||||
path = [owner, repo, path].join('/')
|
||||
return badgesize({ path, topic })
|
||||
}
|
||||
|
||||
function urlHandler ({ topic, protocol = 'https:', hostname, pathname }: PathArgs) {
|
||||
const url = protocol.replace(/:?$/, `://${hostname}/${pathname}`)
|
||||
return badgesize({ path: url, topic })
|
||||
}
|
||||
|
||||
async function badgesize ({ path, topic }) {
|
||||
const endpoint = `https://img.badgesize.io/${path}.json`
|
||||
const { prettySize, color } = await got(endpoint, {
|
||||
searchParams: {
|
||||
compression: topic === 'normal' ? '' : topic
|
||||
}
|
||||
}).json<any>()
|
||||
const searchParams = new URLSearchParams()
|
||||
if (topic !== 'normal') searchParams.set('topic', topic)
|
||||
const { prettySize, color } = await got(endpoint, { searchParams }).json<any>()
|
||||
|
||||
return {
|
||||
subject: topic === 'normal' ? 'size' : `${topic} size`,
|
||||
|
|
|
@ -11,7 +11,7 @@ export default createBadgenHandler({
|
|||
'/david/dep/babel/babel/packages/babel-cli': 'dependencies (sub path)',
|
||||
},
|
||||
handlers: {
|
||||
'/david/:topic/:user/:repo/:path*': handler
|
||||
'/david/:topic/:owner/:repo/:path*': handler
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -23,7 +23,7 @@ const statusInfo = {
|
|||
none: ['none', 'green']
|
||||
}
|
||||
|
||||
async function handler ({ topic, user, repo, path = '' }: PathArgs) {
|
||||
async function handler ({ topic, owner, repo, path = '' }: PathArgs) {
|
||||
const prefix = {
|
||||
dep: '',
|
||||
dev: 'dev-',
|
||||
|
@ -31,7 +31,7 @@ async function handler ({ topic, user, repo, path = '' }: PathArgs) {
|
|||
optional: 'optional-'
|
||||
}[topic]
|
||||
|
||||
const endpoint = `https://david-dm.org/${user}/${repo}/${prefix}info.json`
|
||||
const endpoint = `https://david-dm.org/${owner}/${repo}/${prefix}info.json`
|
||||
const { status } = await got(endpoint, {
|
||||
searchParams: { path }
|
||||
}).json<any>()
|
||||
|
|
|
@ -54,11 +54,11 @@ export default createBadgenHandler({
|
|||
'/https/cal-badge-icd0onfvrxx6.runkit.sh/America/Los_Angeles': 'https endpoint (with path args)',
|
||||
},
|
||||
handlers: {
|
||||
'/https/:hostname/:path*': handler
|
||||
'/https/:hostname/:pathname*': handler
|
||||
}
|
||||
})
|
||||
|
||||
async function handler ({ hostname, path }: PathArgs) {
|
||||
const endpoint = `https://${hostname}/${path || ''}`
|
||||
async function handler ({ hostname, pathname }: PathArgs) {
|
||||
const endpoint = `https://${hostname}/${pathname || ''}`
|
||||
return await got(endpoint).json<any>()
|
||||
}
|
||||
|
|
|
@ -11,10 +11,12 @@ export default createBadgenHandler({
|
|||
'/maven/v/maven-central/com.google.code.gson/gson': 'version (maven-central)',
|
||||
'/maven/v/jcenter/com.squareup.okhttp3/okhttp': 'version (jcenter)',
|
||||
'/maven/v/metadata-url/https/repo1.maven.org/maven2/com/google/code/gson/gson/maven-metadata.xml': 'version (maven metadata url)',
|
||||
'/maven/v/metadata-url/repo1.maven.org/maven2/com/google/code/gson/gson/maven-metadata.xml': 'version (maven metadata url)',
|
||||
},
|
||||
handlers: {
|
||||
'/maven/v/:repo<maven-central|jcenter>/:group/:artifact': mavenRepoHandler,
|
||||
'/maven/v/metadata-url/:path+': mavenUrlHandler,
|
||||
'/maven/v/metadata-url/:protocol<https?:?>/:hostname/:pathname+': mavenUrlHandler,
|
||||
'/maven/v/metadata-url/:hostname/:pathname+': mavenUrlHandler,
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -36,8 +38,8 @@ async function mavenRepoHandler ({ repo, group, artifact }: PathArgs) {
|
|||
}
|
||||
}
|
||||
|
||||
async function mavenUrlHandler ({ path }: PathArgs) {
|
||||
const url = path.replace(/^(https?):?\//, (_, scheme) => `${scheme}://`)
|
||||
async function mavenUrlHandler ({ protocol = 'https:', hostname, pathname }: PathArgs) {
|
||||
const url = protocol.replace(/:?$/, `://${hostname}/${pathname}`)
|
||||
const xml = await got(url).text()
|
||||
const version = xml.match(/<latest>([^<]+)<\//i)?.[1].trim() ?? 'unknown'
|
||||
return {
|
||||
|
|
10
api/snyk.ts
10
api/snyk.ts
|
@ -10,17 +10,21 @@ export default createBadgenHandler({
|
|||
'/snyk/rollup/plugins/master/packages%2Falias%2Fpackage.json': 'vulnerability scan (custom path)'
|
||||
},
|
||||
handlers: {
|
||||
'/snyk/:user/:repo/:branch?/:targetFile?': handler
|
||||
'/snyk/:owner/:repo/:branch?/:targetFile?': handler
|
||||
}
|
||||
})
|
||||
|
||||
async function handler ({ user, repo, branch, targetFile }: PathArgs) {
|
||||
const path = [user, repo, branch].filter(Boolean).join('/')
|
||||
async function handler ({ owner, repo, branch, targetFile }: PathArgs) {
|
||||
const path = [owner, repo, branch].filter(Boolean).join('/')
|
||||
|
||||
const badgeUrl = `https://snyk.io/test/github/${path}/badge.svg`
|
||||
|
||||
const searchParams = new URLSearchParams()
|
||||
if (targetFile) searchParams.set('targetFile', targetFile)
|
||||
|
||||
const resp = await got(badgeUrl, { searchParams, timeout: 3500 })
|
||||
const params = isBadge(resp) && parseBadge(resp.body)
|
||||
|
||||
return params || {
|
||||
subject: 'snyk',
|
||||
status: 'unknown',
|
||||
|
|
|
@ -8,12 +8,12 @@ export default createBadgenHandler({
|
|||
'/travis/babel/babel/6.x': 'build (branch)',
|
||||
},
|
||||
handlers: {
|
||||
'/travis/:user/:repo/:branch?': handler
|
||||
'/travis/:owner/:repo/:branch?': handler
|
||||
}
|
||||
})
|
||||
|
||||
async function handler ({ user, repo, branch }: PathArgs) {
|
||||
const badgePath = `${user}/${repo}.svg`
|
||||
async function handler ({ owner, repo, branch }: PathArgs) {
|
||||
const badgePath = `${owner}/${repo}.svg`
|
||||
const searchParams = new URLSearchParams()
|
||||
if (branch) searchParams.set('branch', branch)
|
||||
const [svg1, svg2] = await Promise.all([
|
||||
|
|
Ładowanie…
Reference in New Issue