Files
shields/services/github/github-release.service.js
dependabot-preview[bot] 478d14300c Build(deps-dev): bump eslint-plugin-import from 2.20.1 to 2.20.2 (#4859)
* Build(deps-dev): bump eslint-plugin-import from 2.20.1 to 2.20.2

Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.1 to 2.20.2.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.1...v2.20.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Fixes

* refactor: combine imports

* refactor: combine imports

* refactor: combine imports

* refactor: update import ordering

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Paul Melnikow <email@paulmelnikow.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <caleb.cartwright@outlook.com>
2020-04-16 18:39:13 -05:00

141 lines
3.7 KiB
JavaScript

'use strict'
const { addv } = require('../text-formatters')
const { version: versionColor } = require('../color-formatters')
const { redirector } = require('..')
const { GithubAuthV3Service } = require('./github-auth-service')
const {
fetchLatestRelease,
queryParamSchema,
} = require('./github-common-release')
const { documentation } = require('./github-helpers')
class GithubRelease extends GithubAuthV3Service {
static get category() {
return 'version'
}
static get route() {
return {
base: 'github/v/release',
pattern: ':user/:repo',
queryParamSchema,
}
}
static get examples() {
return [
{
title: 'GitHub release (latest by date)',
namedParams: { user: 'expressjs', repo: 'express' },
queryParams: {},
staticPreview: this.render({
version: 'v4.16.4',
sort: 'date',
isPrerelease: false,
}),
documentation,
},
{
title: 'GitHub release (latest by date including pre-releases)',
namedParams: { user: 'expressjs', repo: 'express' },
queryParams: { include_prereleases: null },
staticPreview: this.render({
version: 'v5.0.0-alpha.7',
sort: 'date',
isPrerelease: true,
}),
documentation,
},
{
title: 'GitHub release (latest SemVer)',
namedParams: { user: 'expressjs', repo: 'express' },
queryParams: { sort: 'semver' },
staticPreview: this.render({
version: 'v4.16.4',
sort: 'semver',
isPrerelease: false,
}),
documentation,
},
{
title: 'GitHub release (latest SemVer including pre-releases)',
namedParams: { user: 'expressjs', repo: 'express' },
queryParams: { sort: 'semver', include_prereleases: null },
staticPreview: this.render({
version: 'v5.0.0-alpha.7',
sort: 'semver',
isPrerelease: true,
}),
documentation,
},
]
}
static get defaultBadgeData() {
return {
label: 'release',
namedLogo: 'github',
}
}
static render({ version, sort, isPrerelease }) {
let color = 'blue'
color = sort === 'semver' ? versionColor(version) : color
color = isPrerelease ? 'orange' : color
return { message: addv(version), color }
}
async handle({ user, repo }, queryParams) {
const latestRelease = await fetchLatestRelease(
this,
{ user, repo },
queryParams
)
return this.constructor.render({
version: latestRelease.tag_name,
sort: queryParams.sort,
isPrerelease: latestRelease.prerelease,
})
}
}
const redirects = {
GithubReleaseRedirect: redirector({
name: 'GithubReleaseRedirect',
category: 'version',
route: {
base: 'github/release',
pattern: ':user/:repo',
},
transformPath: ({ user, repo }) => `/github/v/release/${user}/${repo}`,
dateAdded: new Date('2019-08-17'),
}),
GithubReleasePreRedirect: redirector({
category: 'version',
route: {
base: 'github/release-pre',
pattern: ':user/:repo',
},
transformPath: ({ user, repo }) => `/github/v/release/${user}/${repo}`,
transformQueryParams: params => ({ include_prereleases: null }),
dateAdded: new Date('2019-08-17'),
}),
GithubReleaseRedirectAll: redirector({
name: 'GithubReleaseRedirectAll',
category: 'version',
route: {
base: 'github/release',
pattern: ':user/:repo/all',
},
transformPath: ({ user, repo }) => `/github/v/release/${user}/${repo}`,
transformQueryParams: params => ({ include_prereleases: null }),
dateAdded: new Date('2019-08-17'),
}),
}
module.exports = {
GithubRelease,
...redirects,
}