@@ -87,6 +87,23 @@ export type OpenApiTestSourceExecutor = {
8787 readonly openapi : Pick < OpenApiPluginExtension , "addSpec" > ;
8888} ;
8989
90+ export interface OpenApiTestSpecOptions {
91+ readonly baseUrl ?: string ;
92+ readonly transformSpec ?: ( spec : Record < string , unknown > ) => Record < string , unknown > ;
93+ }
94+
95+ export const makeOpenApiTestSpecJson = (
96+ api : HttpApi . Any ,
97+ options : OpenApiTestSpecOptions = { } ,
98+ ) : string => {
99+ const annotations = OpenApi . annotations ( {
100+ ...( options . baseUrl !== undefined ? { servers : [ { url : options . baseUrl } ] } : { } ) ,
101+ transform : options . transformSpec ,
102+ } ) ;
103+ const annotated = ( api as HttpApi . AnyWithProps ) . annotateMerge ( annotations ) ;
104+ return JSON . stringify ( OpenApi . fromApi ( annotated ) ) ;
105+ } ;
106+
90107export const makeOpenApiTestSourceConfig = (
91108 server : OpenApiTestServerShape ,
92109 options : OpenApiTestSourceOptions ,
@@ -152,15 +169,7 @@ const openApiSpecJsonFromHttpApi = (
152169 transformSpec ?: ( spec : Record < string , unknown > ) => Record < string , unknown > ,
153170) : Effect . Effect < string , OpenApiTestServerSpecError > =>
154171 Effect . try ( {
155- try : ( ) => {
156- const annotated = ( api as HttpApi . AnyWithProps ) . annotateMerge (
157- OpenApi . annotations ( {
158- servers : [ { url : baseUrl } ] ,
159- transform : transformSpec ,
160- } ) ,
161- ) ;
162- return JSON . stringify ( OpenApi . fromApi ( annotated ) ) ;
163- } ,
172+ try : ( ) => makeOpenApiTestSpecJson ( api , { baseUrl, transformSpec } ) ,
164173 catch : ( cause ) => new OpenApiTestServerSpecError ( { cause } ) ,
165174 } ) ;
166175
0 commit comments