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
Dario Vladović 2021-02-15 04:32:23 +01:00 zatwierdzone przez GitHub
rodzic 578ec7e285
commit 44a9a2f1df
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
6 zmienionych plików z 41 dodań i 32 usunięć

Wyświetl plik

@ -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`,

Wyświetl plik

@ -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>()

Wyświetl plik

@ -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>()
} }

Wyświetl plik

@ -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 {

Wyświetl plik

@ -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',

Wyświetl plik

@ -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([