@@ -71,26 +71,15 @@ class SchemaHandler {
7171 const modelName = model . name ;
7272 const modelSchema = model . schema ;
7373
74- this . logger . verbose ( `dereferencing model: ${ model . name } ` ) ;
75- const dereferencedSchema = await this . __dereferenceSchema (
76- modelSchema
74+ const convertedSchemas = await this . __dereferenceAndConvert (
75+ modelSchema ,
76+ modelName ,
77+ model
7778 ) . catch ( ( err ) => {
78- if ( err . errors ) {
79- for ( const error of err ?. errors ) {
80- this . __HTTPError ( error , model ) ;
81- }
82- } else {
83- this . __HTTPError ( err , model ) ;
84- }
85- return modelSchema ;
79+ if ( err instanceof Error ) throw err ;
80+ else return err ;
8681 } ) ;
8782
88- this . logger . verbose ( `converting model: ${ model . name } ` ) ;
89- const convertedSchemas = SchemaConvertor . convert (
90- dereferencedSchema ,
91- modelName
92- ) ;
93-
9483 if (
9584 typeof convertedSchemas . schemas === "object" &&
9685 ! Array . isArray ( convertedSchemas . schemas ) &&
@@ -129,13 +118,12 @@ class SchemaHandler {
129118 return this . modelReferences [ name ] ;
130119 }
131120
132- const dereferencedSchema = await this . __dereferenceSchema ( schema ) . catch (
133- ( err ) => {
134- throw err ;
135- }
136- ) ;
137-
138- const convertedSchemas = SchemaConvertor . convert ( dereferencedSchema , name ) ;
121+ const convertedSchemas = await this . __dereferenceAndConvert ( schema , name , {
122+ name,
123+ schema,
124+ } ) . catch ( ( err ) => {
125+ throw err ;
126+ } ) ;
139127
140128 for ( const [ schemaName , schemaValue ] of Object . entries (
141129 convertedSchemas . schemas
@@ -157,6 +145,24 @@ class SchemaHandler {
157145 return `#/components/schemas/${ finalName } ` ;
158146 }
159147
148+ async __dereferenceAndConvert ( schema , name , model ) {
149+ this . logger . verbose ( `dereferencing model: ${ name } ` ) ;
150+ const dereferencedSchema = await this . __dereferenceSchema ( schema ) . catch (
151+ ( err ) => {
152+ this . __checkForHTTPErrorsAndThrow ( err , model ) ;
153+
154+ this . __checkForMissingPathAndThrow ( err , model ) ;
155+
156+ return schema ;
157+ }
158+ ) ;
159+
160+ this . logger . verbose ( `converting model: ${ name } ` ) ;
161+ const convertedSchemas = SchemaConvertor . convert ( dereferencedSchema , name ) ;
162+
163+ return convertedSchemas ;
164+ }
165+
160166 async __dereferenceSchema ( schema ) {
161167 const bundledSchema = await $RefParser
162168 . bundle ( schema , this . refParserOptions )
@@ -238,9 +244,23 @@ class SchemaHandler {
238244 }
239245 }
240246
247+ __checkForMissingPathAndThrow ( error , model ) {
248+ if ( error . message === "Expected a file path, URL, or object. Got undefined" )
249+ throw error ;
250+ }
251+
252+ __checkForHTTPErrorsAndThrow ( error , model ) {
253+ if ( error . errors ) {
254+ for ( const err of error ?. errors ) {
255+ this . __HTTPError ( err , model ) ;
256+ }
257+ } else {
258+ this . __HTTPError ( error , model ) ;
259+ }
260+ }
261+
241262 __HTTPError ( error , model ) {
242263 if ( error . message . includes ( "HTTP ERROR" ) ) {
243- // throw err;
244264 throw new Error (
245265 `There was an error dereferencing ${
246266 model . name
0 commit comments