migrate some services from examples to openApi (#9915)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { pathParam, pathParams, queryParam } from '../index.js'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import { transformAndValidate, renderDynamicBadge } from '../dynamic-common.js'
|
||||
import {
|
||||
@@ -10,8 +11,6 @@ import { ConditionalGithubAuthV3Service } from './github-auth-service.js'
|
||||
import { fetchJsonFromRepo } from './github-common-fetch.js'
|
||||
import { documentation } from './github-helpers.js'
|
||||
|
||||
const keywords = ['npm', 'node']
|
||||
|
||||
const versionSchema = Joi.object({
|
||||
version: semver,
|
||||
}).required()
|
||||
@@ -28,42 +27,31 @@ class GithubPackageJsonVersion extends ConditionalGithubAuthV3Service {
|
||||
queryParamSchema: subfolderQueryParamSchema,
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'GitHub package.json version',
|
||||
pattern: ':user/:repo',
|
||||
namedParams: { user: 'IcedFrisby', repo: 'IcedFrisby' },
|
||||
staticPreview: this.render({ version: '2.0.0-alpha.2' }),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
{
|
||||
title: 'GitHub package.json version (branch)',
|
||||
pattern: ':user/:repo/:branch',
|
||||
namedParams: {
|
||||
user: 'IcedFrisby',
|
||||
repo: 'IcedFrisby',
|
||||
branch: 'master',
|
||||
static openApi = {
|
||||
'/github/package-json/v/{user}/{repo}': {
|
||||
get: {
|
||||
summary: 'GitHub package.json version',
|
||||
description: documentation,
|
||||
parameters: [
|
||||
pathParam({ name: 'user', example: 'badges' }),
|
||||
pathParam({ name: 'repo', example: 'shields' }),
|
||||
queryParam({ name: 'filename', example: 'badge-maker/package.json' }),
|
||||
],
|
||||
},
|
||||
staticPreview: this.render({ version: '2.0.0-alpha.2' }),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
{
|
||||
title: 'GitHub package.json version (subfolder of monorepo)',
|
||||
pattern: ':user/:repo',
|
||||
namedParams: {
|
||||
user: 'metabolize',
|
||||
repo: 'anafanafo',
|
||||
'/github/package-json/v/{user}/{repo}/{branch}': {
|
||||
get: {
|
||||
summary: 'GitHub package.json version (branch)',
|
||||
description: documentation,
|
||||
parameters: [
|
||||
pathParam({ name: 'user', example: 'badges' }),
|
||||
pathParam({ name: 'repo', example: 'shields' }),
|
||||
pathParam({ name: 'branch', example: 'master' }),
|
||||
queryParam({ name: 'filename', example: 'badge-maker/package.json' }),
|
||||
],
|
||||
},
|
||||
queryParams: {
|
||||
filename: 'packages/char-width-table-builder/package.json',
|
||||
},
|
||||
staticPreview: this.render({ version: '2.0.0' }),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static render({ version, branch }) {
|
||||
return renderVersionBadge({
|
||||
@@ -85,6 +73,9 @@ class GithubPackageJsonVersion extends ConditionalGithubAuthV3Service {
|
||||
}
|
||||
}
|
||||
|
||||
const packageNameDescription =
|
||||
'This may be the name of an unscoped package like `package-name` or a [scoped package](https://docs.npmjs.com/about-scopes) like `@author/package-name`'
|
||||
|
||||
class GithubPackageJsonDependencyVersion extends ConditionalGithubAuthV3Service {
|
||||
static category = 'platform-support'
|
||||
static route = {
|
||||
@@ -94,58 +85,100 @@ class GithubPackageJsonDependencyVersion extends ConditionalGithubAuthV3Service
|
||||
queryParamSchema: subfolderQueryParamSchema,
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'GitHub package.json dependency version (prod)',
|
||||
pattern: ':user/:repo/:packageName',
|
||||
namedParams: {
|
||||
user: 'developit',
|
||||
repo: 'microbundle',
|
||||
packageName: 'rollup',
|
||||
static openApi = {
|
||||
'/github/package-json/dependency-version/{user}/{repo}/{packageName}': {
|
||||
get: {
|
||||
summary: 'GitHub package.json prod dependency version',
|
||||
description: documentation,
|
||||
parameters: [
|
||||
pathParam({ name: 'user', example: 'badges' }),
|
||||
pathParam({ name: 'repo', example: 'shields' }),
|
||||
pathParam({
|
||||
name: 'packageName',
|
||||
example: 'dayjs',
|
||||
description: packageNameDescription,
|
||||
}),
|
||||
queryParam({
|
||||
name: 'filename',
|
||||
example: 'badge-maker/package.json',
|
||||
}),
|
||||
],
|
||||
},
|
||||
staticPreview: this.render({
|
||||
dependency: 'rollup',
|
||||
range: '^0.67.3',
|
||||
}),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
{
|
||||
title: 'GitHub package.json dependency version (dev dep on branch)',
|
||||
pattern: ':user/:repo/dev/:scope?/:packageName/:branch*',
|
||||
namedParams: {
|
||||
user: 'zeit',
|
||||
repo: 'next.js',
|
||||
branch: 'canary',
|
||||
scope: '@babel',
|
||||
packageName: 'preset-react',
|
||||
'/github/package-json/dependency-version/{user}/{repo}/{packageName}/{branch}':
|
||||
{
|
||||
get: {
|
||||
summary: 'GitHub package.json prod dependency version (branch)',
|
||||
description: documentation,
|
||||
parameters: [
|
||||
pathParam({ name: 'user', example: 'badges' }),
|
||||
pathParam({ name: 'repo', example: 'shields' }),
|
||||
pathParam({
|
||||
name: 'packageName',
|
||||
example: 'dayjs',
|
||||
description: packageNameDescription,
|
||||
}),
|
||||
pathParam({ name: 'branch', example: 'master' }),
|
||||
queryParam({
|
||||
name: 'filename',
|
||||
example: 'badge-maker/package.json',
|
||||
}),
|
||||
],
|
||||
},
|
||||
},
|
||||
staticPreview: this.render({
|
||||
dependency: '@babel/preset-react',
|
||||
range: '7.0.0',
|
||||
}),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
{
|
||||
title: 'GitHub package.json dependency version (subfolder of monorepo)',
|
||||
pattern: ':user/:repo/:packageName',
|
||||
namedParams: {
|
||||
user: 'metabolize',
|
||||
repo: 'anafanafo',
|
||||
packageName: 'puppeteer',
|
||||
'/github/package-json/dependency-version/{user}/{repo}/{kind}/{packageName}':
|
||||
{
|
||||
get: {
|
||||
summary: 'GitHub package.json dev/peer/optional dependency version',
|
||||
description: documentation,
|
||||
parameters: [
|
||||
pathParam({ name: 'user', example: 'gatsbyjs' }),
|
||||
pathParam({ name: 'repo', example: 'gatsby' }),
|
||||
pathParam({
|
||||
name: 'kind',
|
||||
example: 'dev',
|
||||
schema: { type: 'string', enum: this.getEnum('kind') },
|
||||
}),
|
||||
pathParam({
|
||||
name: 'packageName',
|
||||
example: 'cross-env',
|
||||
description: packageNameDescription,
|
||||
}),
|
||||
queryParam({
|
||||
name: 'filename',
|
||||
example: 'packages/gatsby-cli/package.json',
|
||||
}),
|
||||
],
|
||||
},
|
||||
},
|
||||
queryParams: {
|
||||
filename: 'packages/char-width-table-builder/package.json',
|
||||
'/github/package-json/dependency-version/{user}/{repo}/{kind}/{packageName}/{branch}':
|
||||
{
|
||||
get: {
|
||||
summary:
|
||||
'GitHub package.json dev/peer/optional dependency version (branch)',
|
||||
description: documentation,
|
||||
parameters: [
|
||||
pathParam({ name: 'user', example: 'gatsbyjs' }),
|
||||
pathParam({ name: 'repo', example: 'gatsby' }),
|
||||
pathParam({
|
||||
name: 'kind',
|
||||
example: 'dev',
|
||||
schema: { type: 'string', enum: this.getEnum('kind') },
|
||||
}),
|
||||
pathParam({
|
||||
name: 'packageName',
|
||||
example: 'cross-env',
|
||||
description: packageNameDescription,
|
||||
}),
|
||||
pathParam({ name: 'branch', example: 'master' }),
|
||||
queryParam({
|
||||
name: 'filename',
|
||||
example: 'packages/gatsby-cli/package.json',
|
||||
}),
|
||||
],
|
||||
},
|
||||
},
|
||||
staticPreview: this.render({
|
||||
dependency: 'puppeteer',
|
||||
range: '^1.14.0',
|
||||
}),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'dependency' }
|
||||
|
||||
@@ -200,40 +233,39 @@ class DynamicGithubPackageJson extends ConditionalGithubAuthV3Service {
|
||||
pattern: ':key/:user/:repo/:branch*',
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'GitHub package.json dynamic',
|
||||
pattern: ':key/:user/:repo',
|
||||
namedParams: {
|
||||
key: 'keywords',
|
||||
user: 'developit',
|
||||
repo: 'microbundle',
|
||||
static openApi = {
|
||||
'/github/package-json/{key}/{user}/{repo}': {
|
||||
get: {
|
||||
summary: 'GitHub package.json dynamic',
|
||||
description: documentation,
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'key',
|
||||
example: 'keywords',
|
||||
description: 'any key in package.json',
|
||||
},
|
||||
{ name: 'user', example: 'developit' },
|
||||
{ name: 'repo', example: 'microbundle' },
|
||||
),
|
||||
},
|
||||
staticPreview: this.render({
|
||||
key: 'keywords',
|
||||
value: ['bundle', 'rollup', 'micro library'],
|
||||
}),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
{
|
||||
title: 'GitHub package.json dynamic',
|
||||
pattern: ':key/:user/:repo/:branch',
|
||||
namedParams: {
|
||||
key: 'keywords',
|
||||
user: 'developit',
|
||||
repo: 'microbundle',
|
||||
branch: 'master',
|
||||
'/github/package-json/{key}/{user}/{repo}/{branch}': {
|
||||
get: {
|
||||
summary: 'GitHub package.json dynamic (branch)',
|
||||
description: documentation,
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'key',
|
||||
example: 'keywords',
|
||||
description: 'any key in package.json',
|
||||
},
|
||||
{ name: 'user', example: 'developit' },
|
||||
{ name: 'repo', example: 'microbundle' },
|
||||
{ name: 'branch', example: 'master' },
|
||||
),
|
||||
},
|
||||
staticPreview: this.render({
|
||||
key: 'keywords',
|
||||
value: ['bundle', 'rollup', 'micro library'],
|
||||
branch: 'master',
|
||||
}),
|
||||
documentation,
|
||||
keywords,
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'package.json' }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user