11import type { OpenAPI , Operation , SchemaDefinition } from "~/core/openapi" ;
2+ import { getTupleItems , isTuple } from "~/core/tuple" ;
23import getContentSchema from "./content" ;
34import resolveEndpoints from "./enpoint" ;
45import { filterGenericSchemas , resolveSchema , simplifySchema } from "./schema-definition" ;
@@ -16,12 +17,21 @@ function resolveResponseSchemas(responses: Operation["responses"]) {
1617 } ) . flat ( ) ;
1718}
1819
20+ function extractTuples ( collection : string [ ] ) {
21+ return collection . map ( schema => {
22+ if ( isTuple ( schema . replaceAll ( "[]" , "" ) ) ) {
23+ return getTupleItems ( schema ) ;
24+ }
25+ return schema ;
26+ } ) . flat ( ) ;
27+ }
28+
1929export function resolveSchemas ( paths : OpenAPI [ "paths" ] ) {
2030 const collection = resolveEndpoints ( paths ) . map ( ( { operation } ) => ( [
2131 ...resolveRequestSchemas ( operation . requestBody ) ,
2232 ...resolveResponseSchemas ( operation . responses ) ,
2333 ] ) ) . flat ( ) ;
24- const uniqueCollection = Array . from ( new Set ( collection ) ) ;
34+ const uniqueCollection = Array . from ( new Set ( extractTuples ( collection ) ) ) ;
2535 return filterGenericSchemas ( uniqueCollection ) . toSorted ( ) ;
2636}
2737
@@ -43,6 +53,6 @@ function resolvePropDefinition(definition: SchemaDefinition) {
4353
4454export function resolveSchemasFromProps ( props : Record < string , SchemaDefinition > ) {
4555 const collection = Object . values ( props ) . map ( resolvePropDefinition ) . flat ( ) ;
46- const uniqueCollection = Array . from ( new Set ( collection ) ) ;
56+ const uniqueCollection = Array . from ( new Set ( extractTuples ( collection ) ) ) ;
4757 return filterGenericSchemas ( uniqueCollection ) . toSorted ( ) ;
4858}
0 commit comments