@@ -12,11 +12,10 @@ import {
1212 isFile ,
1313} from "./util" ;
1414import { badRequest } from "../../common/error" ;
15- import { safeJsonParse } from "../../common/util" ;
1615import { OpenAPI , OpenAPIV2 , OpenAPIV3 } from "openapi-types" ;
1716import _ from "lodash" ;
1817import { fetch } from "../../common/fetch" ;
19- import { RequestInit , Response } from "node-fetch" ;
18+ import { RequestInit } from "node-fetch" ;
2019
2120const dataSourceConfig = {
2221 type : "dataSource" ,
@@ -50,30 +49,42 @@ interface ActionDataType {
5049 [ key : string ] : any ;
5150}
5251
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+
5375export async function runOpenApi (
5476 actionData : ActionDataType ,
5577 dataSourceConfig : DataSourceDataType ,
5678 spec : OpenAPI . Document | MultiOpenApiSpecItem [ ] ,
57- defaultHeaders ?: Record < string , string >
79+ defaultHeaders ?: Record < string , string > ,
80+ openApiSpecDereferenced ?: OpenAPI . Document ,
5881) {
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- ) ;
6982 const { actionName, ...otherActionData } = actionData ;
7083 const { serverURL } = dataSourceConfig ;
7184
72- let definition : OpenAPI . Document | undefined ;
73- let operation ;
74- let realOperationId ;
85+ let operation , realOperationId , definition : OpenAPI . Document | undefined ;
7586
76- for ( const { id, def } of definitions ) {
87+ for ( const { id, def} of await getDefinitions ( spec , openApiSpecDereferenced ) ) {
7788 const ret = findOperation ( actionName , def , id ) ;
7889 if ( ret ) {
7990 definition = def ;
0 commit comments