migrate some services from examples to openApi (#9915)

This commit is contained in:
chris48s
2024-01-29 11:05:35 +00:00
committed by GitHub
parent 90d2a230ba
commit af19335c5a
5 changed files with 267 additions and 326 deletions

View File

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