Skip to content

Commit

Permalink
feat(swag): support swagger 3 and above versions
Browse files Browse the repository at this point in the history
  • Loading branch information
hairyf committed May 24, 2023
1 parent cdbf63c commit a5ff274
Show file tree
Hide file tree
Showing 12 changed files with 110 additions and 20 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ jobs:
- run: npx changelogithub
continue-on-error: true
env:
GITHUB_TOKEN: ${{secrets.ACCESS_TOKEN}}
GITHUB_TOKEN: ${{secrets.ACCESS_TOKEN}}
18 changes: 18 additions & 0 deletions packages/@parsers/swag/src/parser/common.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type { OpenAPISpecificationV2 } from 'openapi-specification-types'
import type { OpenAPISpecificationV3 } from 'openapi-specification-types/index-v3'

/**
* parse OpenAPI info to commits
Expand All @@ -14,3 +15,20 @@ export function parseHeaderCommits(source: OpenAPISpecificationV2) {
].filter(Boolean)
return comments
}

export function parseOpenAPISpecification32(source: OpenAPISpecificationV2 | OpenAPISpecificationV3) {
const change = source as OpenAPISpecificationV2
if (source.openapi?.startsWith('3')) {
const target = source as OpenAPISpecificationV3
change.swagger = target.openapi
change.host = target.servers[0].url
change.basePath = target.servers[0].url
change.schemes = target.servers.map(v => v.url)
change.info = target.info
change.paths = target.paths
change.definitions = target.components.schemas
change.tags = target.tags
change.externalDocs = target.externalDocs
}
return change
}
5 changes: 3 additions & 2 deletions packages/@swag/axios-js/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformDefinitions,
transformParameters,
Expand All @@ -19,7 +20,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2
const source = parseOpenAPISpecification32(configRead.source)

const comments = parseHeaderCommits(source)

Expand Down
5 changes: 3 additions & 2 deletions packages/@swag/axios-ts/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformDefinitions,
transformParameters,
Expand All @@ -19,7 +20,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2
const source = parseOpenAPISpecification32(configRead.source)

const comments = parseHeaderCommits(source)

Expand Down
5 changes: 3 additions & 2 deletions packages/@swag/fetch-js/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformBodyStringify,
transformDefinitions,
Expand All @@ -21,7 +22,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2
const source = parseOpenAPISpecification32(configRead.source)

const comments = parseHeaderCommits(source)

Expand Down
4 changes: 2 additions & 2 deletions packages/@swag/fetch-ts/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "@genapi/swag-fetch-ts",
"version": "1.0.0",
"main": "src/index.ts",
"scripts": {
"build": "ptsup -r src --dts --meta --clean",
Expand All @@ -19,6 +20,5 @@
},
"devDependencies": {
"openapi-specification-types": "^0.0.1"
},
"version": null
}
}
6 changes: 3 additions & 3 deletions packages/@swag/fetch-ts/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformBodyStringify,
transformDefinitions,
Expand All @@ -21,8 +22,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2

const source = parseOpenAPISpecification32(configRead.source)
const comments = parseHeaderCommits(source)

const interfaces: StatementInterface[] = []
Expand Down
5 changes: 3 additions & 2 deletions packages/@swag/got-js/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformBodyStringify,
transformDefinitions,
Expand All @@ -21,7 +22,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2
const source = parseOpenAPISpecification32(configRead.source)

const comments = parseHeaderCommits(source)

Expand Down
5 changes: 3 additions & 2 deletions packages/@swag/got-ts/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformBodyStringify,
transformDefinitions,
Expand All @@ -21,7 +22,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2
const source = parseOpenAPISpecification32(configRead.source)

const comments = parseHeaderCommits(source)

Expand Down
5 changes: 3 additions & 2 deletions packages/@swag/ky-js/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformBodyStringify,
transformDefinitions,
Expand All @@ -21,7 +22,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2
const source = parseOpenAPISpecification32(configRead.source)

const comments = parseHeaderCommits(source)

Expand Down
5 changes: 3 additions & 2 deletions packages/@swag/ky-ts/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ApiPipeline, StatementFunction, StatementInterface } from '@genapi/config'
import type { OpenAPISpecificationV2, Paths } from 'openapi-specification-types'
import type { Paths } from 'openapi-specification-types'
import {
literalFieldsToString,
parseHeaderCommits,
parseMethodMetadata,
parseMethodParameters,
parseOpenAPISpecification32,
transformBaseURL,
transformBodyStringify,
transformDefinitions,
Expand All @@ -21,7 +22,7 @@ export interface PathsTransformOptions {
}

export function parser(configRead: ApiPipeline.ConfigRead) {
const source = configRead.source as OpenAPISpecificationV2
const source = parseOpenAPISpecification32(configRead.source)

const comments = parseHeaderCommits(source)

Expand Down
65 changes: 65 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit a5ff274

Please sign in to comment.