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/normal/amio/emoji.json/master/emoji-compact.json': 'normal size',
|
||||||
'/badgesize/brotli/amio/emoji.json/master/emoji-compact.json': 'brotli size',
|
'/badgesize/brotli/amio/emoji.json/master/emoji-compact.json': 'brotli size',
|
||||||
'/badgesize/gzip/amio/emoji.json/master/emoji-compact.json': 'gzip 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: {
|
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) {
|
function githubHandler ({ topic, owner, repo, path }: PathArgs) {
|
||||||
if (path.startsWith('http/')) {
|
path = [owner, repo, path].join('/')
|
||||||
path = path.slice(0, 4) + ':/' + path.slice(4)
|
return badgesize({ path, topic })
|
||||||
} else if (path.startsWith('https/')) {
|
}
|
||||||
path = path.slice(0, 5) + ':/' + path.slice(5)
|
|
||||||
} else if (path.startsWith('http:/')) {
|
function urlHandler ({ topic, protocol = 'https:', hostname, pathname }: PathArgs) {
|
||||||
path = path.slice(0, 5) + '/' + path.slice(5)
|
const url = protocol.replace(/:?$/, `://${hostname}/${pathname}`)
|
||||||
} else if (path.startsWith('https:/')) {
|
return badgesize({ path: url, topic })
|
||||||
path = path.slice(0, 6) + '/' + path.slice(6)
|
}
|
||||||
}
|
|
||||||
|
async function badgesize ({ path, topic }) {
|
||||||
const endpoint = `https://img.badgesize.io/${path}.json`
|
const endpoint = `https://img.badgesize.io/${path}.json`
|
||||||
const { prettySize, color } = await got(endpoint, {
|
const searchParams = new URLSearchParams()
|
||||||
searchParams: {
|
if (topic !== 'normal') searchParams.set('topic', topic)
|
||||||
compression: topic === 'normal' ? '' : topic
|
const { prettySize, color } = await got(endpoint, { searchParams }).json<any>()
|
||||||
}
|
|
||||||
}).json<any>()
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
subject: topic === 'normal' ? 'size' : `${topic} size`,
|
subject: topic === 'normal' ? 'size' : `${topic} size`,
|
||||||
|
|
|
@ -11,7 +11,7 @@ export default createBadgenHandler({
|
||||||
'/david/dep/babel/babel/packages/babel-cli': 'dependencies (sub path)',
|
'/david/dep/babel/babel/packages/babel-cli': 'dependencies (sub path)',
|
||||||
},
|
},
|
||||||
handlers: {
|
handlers: {
|
||||||
'/david/:topic/:user/:repo/:path*': handler
|
'/david/:topic/:owner/:repo/:path*': handler
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ const statusInfo = {
|
||||||
none: ['none', 'green']
|
none: ['none', 'green']
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handler ({ topic, user, repo, path = '' }: PathArgs) {
|
async function handler ({ topic, owner, repo, path = '' }: PathArgs) {
|
||||||
const prefix = {
|
const prefix = {
|
||||||
dep: '',
|
dep: '',
|
||||||
dev: 'dev-',
|
dev: 'dev-',
|
||||||
|
@ -31,7 +31,7 @@ async function handler ({ topic, user, repo, path = '' }: PathArgs) {
|
||||||
optional: 'optional-'
|
optional: 'optional-'
|
||||||
}[topic]
|
}[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, {
|
const { status } = await got(endpoint, {
|
||||||
searchParams: { path }
|
searchParams: { path }
|
||||||
}).json<any>()
|
}).json<any>()
|
||||||
|
|
|
@ -54,11 +54,11 @@ export default createBadgenHandler({
|
||||||
'/https/cal-badge-icd0onfvrxx6.runkit.sh/America/Los_Angeles': 'https endpoint (with path args)',
|
'/https/cal-badge-icd0onfvrxx6.runkit.sh/America/Los_Angeles': 'https endpoint (with path args)',
|
||||||
},
|
},
|
||||||
handlers: {
|
handlers: {
|
||||||
'/https/:hostname/:path*': handler
|
'/https/:hostname/:pathname*': handler
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
async function handler ({ hostname, path }: PathArgs) {
|
async function handler ({ hostname, pathname }: PathArgs) {
|
||||||
const endpoint = `https://${hostname}/${path || ''}`
|
const endpoint = `https://${hostname}/${pathname || ''}`
|
||||||
return await got(endpoint).json<any>()
|
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/maven-central/com.google.code.gson/gson': 'version (maven-central)',
|
||||||
'/maven/v/jcenter/com.squareup.okhttp3/okhttp': 'version (jcenter)',
|
'/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/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: {
|
handlers: {
|
||||||
'/maven/v/:repo<maven-central|jcenter>/:group/:artifact': mavenRepoHandler,
|
'/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) {
|
async function mavenUrlHandler ({ protocol = 'https:', hostname, pathname }: PathArgs) {
|
||||||
const url = path.replace(/^(https?):?\//, (_, scheme) => `${scheme}://`)
|
const url = protocol.replace(/:?$/, `://${hostname}/${pathname}`)
|
||||||
const xml = await got(url).text()
|
const xml = await got(url).text()
|
||||||
const version = xml.match(/<latest>([^<]+)<\//i)?.[1].trim() ?? 'unknown'
|
const version = xml.match(/<latest>([^<]+)<\//i)?.[1].trim() ?? 'unknown'
|
||||||
return {
|
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)'
|
'/snyk/rollup/plugins/master/packages%2Falias%2Fpackage.json': 'vulnerability scan (custom path)'
|
||||||
},
|
},
|
||||||
handlers: {
|
handlers: {
|
||||||
'/snyk/:user/:repo/:branch?/:targetFile?': handler
|
'/snyk/:owner/:repo/:branch?/:targetFile?': handler
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
async function handler ({ user, repo, branch, targetFile }: PathArgs) {
|
async function handler ({ owner, repo, branch, targetFile }: PathArgs) {
|
||||||
const path = [user, repo, branch].filter(Boolean).join('/')
|
const path = [owner, repo, branch].filter(Boolean).join('/')
|
||||||
|
|
||||||
const badgeUrl = `https://snyk.io/test/github/${path}/badge.svg`
|
const badgeUrl = `https://snyk.io/test/github/${path}/badge.svg`
|
||||||
|
|
||||||
const searchParams = new URLSearchParams()
|
const searchParams = new URLSearchParams()
|
||||||
if (targetFile) searchParams.set('targetFile', targetFile)
|
if (targetFile) searchParams.set('targetFile', targetFile)
|
||||||
|
|
||||||
const resp = await got(badgeUrl, { searchParams, timeout: 3500 })
|
const resp = await got(badgeUrl, { searchParams, timeout: 3500 })
|
||||||
const params = isBadge(resp) && parseBadge(resp.body)
|
const params = isBadge(resp) && parseBadge(resp.body)
|
||||||
|
|
||||||
return params || {
|
return params || {
|
||||||
subject: 'snyk',
|
subject: 'snyk',
|
||||||
status: 'unknown',
|
status: 'unknown',
|
||||||
|
|
|
@ -8,12 +8,12 @@ export default createBadgenHandler({
|
||||||
'/travis/babel/babel/6.x': 'build (branch)',
|
'/travis/babel/babel/6.x': 'build (branch)',
|
||||||
},
|
},
|
||||||
handlers: {
|
handlers: {
|
||||||
'/travis/:user/:repo/:branch?': handler
|
'/travis/:owner/:repo/:branch?': handler
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
async function handler ({ user, repo, branch }: PathArgs) {
|
async function handler ({ owner, repo, branch }: PathArgs) {
|
||||||
const badgePath = `${user}/${repo}.svg`
|
const badgePath = `${owner}/${repo}.svg`
|
||||||
const searchParams = new URLSearchParams()
|
const searchParams = new URLSearchParams()
|
||||||
if (branch) searchParams.set('branch', branch)
|
if (branch) searchParams.set('branch', branch)
|
||||||
const [svg1, svg2] = await Promise.all([
|
const [svg1, svg2] = await Promise.all([
|
||||||
|
|
Ładowanie…
Reference in New Issue