1
1
import { consola } from "consola" ;
2
2
import * as yaml from "js-yaml" ;
3
3
import lodash from "lodash" ;
4
+ import type { OpenAPI , OpenAPIV2 } from "openapi-types" ;
4
5
import * as swagger2openapi from "swagger2openapi" ;
5
6
import type { CodeGenConfig } from "./configuration.js" ;
6
7
import type { FileSystem } from "./util/file-system.js" ;
@@ -20,7 +21,7 @@ export class SwaggerSchemaResolver {
20
21
async create ( ) {
21
22
const { spec, patch, input, url, authorizationToken } = this . config ;
22
23
23
- if ( this . config . spec ) {
24
+ if ( spec ) {
24
25
return await this . convertSwaggerObject ( spec , { patch } ) ;
25
26
}
26
27
@@ -35,11 +36,11 @@ export class SwaggerSchemaResolver {
35
36
}
36
37
37
38
convertSwaggerObject (
38
- swaggerSchema : Record < string , unknown > ,
39
+ swaggerSchema : OpenAPI . Document ,
39
40
converterOptions : { patch ?: boolean } ,
40
41
) : Promise < {
41
- usageSchema : Record < string , any > ;
42
- originalSchema : Record < string , unknown > ;
42
+ usageSchema : OpenAPI . Document ;
43
+ originalSchema : OpenAPI . Document ;
43
44
} > {
44
45
return new Promise ( ( resolve ) => {
45
46
const result = structuredClone ( swaggerSchema ) ;
@@ -51,11 +52,11 @@ export class SwaggerSchemaResolver {
51
52
result . info ,
52
53
) ;
53
54
54
- if ( ! result . openapi ) {
55
+ if ( ! Object . hasOwn ( result , " openapi" ) ) {
55
56
result . paths = lodash . merge ( { } , result . paths ) ;
56
57
57
58
swagger2openapi . convertObj (
58
- result ,
59
+ result as OpenAPIV2 . Document ,
59
60
{
60
61
...converterOptions ,
61
62
warnOnly : true ,
@@ -95,15 +96,15 @@ export class SwaggerSchemaResolver {
95
96
async fetchSwaggerSchemaFile (
96
97
pathToSwagger : string ,
97
98
urlToSwagger : string ,
98
- authToken : string ,
99
+ authToken ? : string ,
99
100
) {
100
101
if ( this . fileSystem . pathIsExist ( pathToSwagger ) ) {
101
102
return this . getSwaggerSchemaByPath ( pathToSwagger ) ;
102
103
}
103
104
consola . info ( `try to get swagger by URL "${ urlToSwagger } "` ) ;
104
105
return await this . request . download ( {
105
106
url : urlToSwagger ,
106
- authToken,
107
+ authToken : authToken ,
107
108
} ) ;
108
109
}
109
110
0 commit comments