@@ -12,11 +12,10 @@ import {
12
12
isFile ,
13
13
} from "./util" ;
14
14
import { badRequest } from "../../common/error" ;
15
- import { safeJsonParse } from "../../common/util" ;
16
15
import { OpenAPI , OpenAPIV2 , OpenAPIV3 } from "openapi-types" ;
17
16
import _ from "lodash" ;
18
17
import { fetch } from "../../common/fetch" ;
19
- import { RequestInit , Response } from "node-fetch" ;
18
+ import { RequestInit } from "node-fetch" ;
20
19
21
20
const dataSourceConfig = {
22
21
type : "dataSource" ,
@@ -50,30 +49,42 @@ interface ActionDataType {
50
49
[ key : string ] : any ;
51
50
}
52
51
52
+ async function getDefinitions (
53
+ spec : OpenAPI . Document | MultiOpenApiSpecItem [ ] ,
54
+ openApiSpecDereferenced ?: OpenAPI . Document ,
55
+ ) : Promise < { def : OpenAPI . Document ; id : string } [ ] > {
56
+ if ( openApiSpecDereferenced ) {
57
+ return [ {
58
+ def : openApiSpecDereferenced ,
59
+ id : "" ,
60
+ } ]
61
+ } else {
62
+ const specList = Array . isArray ( spec ) ? spec : [ { spec, id : "" } ] ;
63
+ return await Promise . all (
64
+ specList . map ( async ( { id, spec} ) => {
65
+ const deRefedSpec = await SwaggerParser . dereference ( spec ) ;
66
+ return {
67
+ def : deRefedSpec ,
68
+ id,
69
+ } ;
70
+ } )
71
+ ) ;
72
+ }
73
+ }
74
+
53
75
export async function runOpenApi (
54
76
actionData : ActionDataType ,
55
77
dataSourceConfig : DataSourceDataType ,
56
78
spec : OpenAPI . Document | MultiOpenApiSpecItem [ ] ,
57
- defaultHeaders ?: Record < string , string >
79
+ defaultHeaders ?: Record < string , string > ,
80
+ openApiSpecDereferenced ?: OpenAPI . Document ,
58
81
) {
59
- const specList = Array . isArray ( spec ) ? spec : [ { spec, id : "" } ] ;
60
- const definitions = await Promise . all (
61
- specList . map ( async ( { id, spec } ) => {
62
- const deRefedSpec = await SwaggerParser . dereference ( spec ) ;
63
- return {
64
- def : deRefedSpec ,
65
- id,
66
- } ;
67
- } )
68
- ) ;
69
82
const { actionName, ...otherActionData } = actionData ;
70
83
const { serverURL } = dataSourceConfig ;
71
84
72
- let definition : OpenAPI . Document | undefined ;
73
- let operation ;
74
- let realOperationId ;
85
+ let operation , realOperationId , definition : OpenAPI . Document | undefined ;
75
86
76
- for ( const { id, def } of definitions ) {
87
+ for ( const { id, def} of await getDefinitions ( spec , openApiSpecDereferenced ) ) {
77
88
const ret = findOperation ( actionName , def , id ) ;
78
89
if ( ret ) {
79
90
definition = def ;
0 commit comments