11import type { DereferenceMap , Document } from '@/types' ;
22import type { NoReference } from '@/utils/schema' ;
33import type { OpenAPIV3 , OpenAPIV3_1 } from 'openapi-types' ;
4- import { dereference , load , upgrade } from '@scalar/openapi-parser' ;
5- import { fetchUrls } from '@scalar/openapi-parser/plugins/fetch-urls' ;
6- import { readFiles } from '@scalar/openapi-parser/plugins/read-files' ;
4+ import { bundle , dereference , upgrade } from '@scalar/openapi-parser' ;
5+ import { fetchUrls , readFiles } from '@scalar/openapi-parser/plugins' ;
76
87export type DocumentInput = string | OpenAPIV3_1 . Document | OpenAPIV3 . Document ;
98
@@ -28,19 +27,14 @@ export async function processDocument(
2827 if ( cached ) return cached ;
2928
3029 const dereferenceMap : DereferenceMap = new Map ( ) ;
31- const loaded = await load ( input , {
32- plugins : [ readFiles ( ) , fetchUrls ( ) ] ,
30+ let document = await bundle ( input as string , {
31+ plugins : [ fetchUrls ( ) , readFiles ( ) ] ,
32+ treeShake : false ,
3333 } ) ;
3434
35- if ( loaded . errors && loaded . errors . length > 0 ) {
36- throw new Error (
37- loaded . errors . map ( ( err ) => `${ err . code } : ${ err . message } ` ) . join ( '\n' ) ,
38- ) ;
39- }
40-
4135 // upgrade
42- loaded . specification = upgrade ( loaded . specification ) . specification ;
43- const { schema : dereferenced } = await dereference ( loaded . filesystem , {
36+ document = upgrade ( document ) . specification ;
37+ const { schema : dereferenced } = await dereference ( document , {
4438 onDereference ( { ref, schema } ) {
4539 dereferenceMap . set ( schema , ref ) ;
4640 } ,
@@ -49,7 +43,7 @@ export async function processDocument(
4943 const processed : ProcessedDocument = {
5044 document : dereferenced as NoReference < Document > ,
5145 dereferenceMap,
52- downloaded : loaded . specification as Document ,
46+ downloaded : document as Document ,
5347 } ;
5448
5549 if ( ! disableCache && typeof input === 'string' ) {
0 commit comments