@@ -236,6 +236,19 @@ let QUERYPARAM = 'query',
236
236
return { collectionVariables, pathVariables, baseUrl } ;
237
237
} ,
238
238
239
+ /**
240
+ * Provides ref stack limit for current instance
241
+ * @param {* } stackLimit - Defined stackLimit in options
242
+ *
243
+ * @returns {Number } Returns the stackLimit to be used
244
+ */
245
+ getRefStackLimit = ( stackLimit ) => {
246
+ if ( typeof stackLimit === 'number' && stackLimit > REF_STACK_LIMIT ) {
247
+ return stackLimit ;
248
+ }
249
+ return REF_STACK_LIMIT ;
250
+ } ,
251
+
239
252
/**
240
253
* Resolve a given ref from the schema
241
254
* @param {Object } context - Global context object
@@ -246,9 +259,10 @@ let QUERYPARAM = 'query',
246
259
* @returns {Object } Returns the object that staisfies the schema
247
260
*/
248
261
resolveRefFromSchema = ( context , $ref , stackDepth = 0 , seenRef = { } ) => {
249
- const { specComponents } = context ;
262
+ const { specComponents } = context ,
263
+ { stackLimit } = context . computedOptions ;
250
264
251
- if ( stackDepth >= REF_STACK_LIMIT ) {
265
+ if ( stackDepth >= getRefStackLimit ( stackLimit ) ) {
252
266
return { value : ERR_TOO_MANY_LEVELS } ;
253
267
}
254
268
@@ -315,9 +329,10 @@ let QUERYPARAM = 'query',
315
329
* @returns {Object } Returns the object that staisfies the schema
316
330
*/
317
331
resolveRefForExamples = ( context , $ref , stackDepth = 0 , seenRef = { } ) => {
318
- const { specComponents } = context ;
332
+ const { specComponents } = context ,
333
+ { stackLimit } = context . computedOptions ;
319
334
320
- if ( stackDepth >= REF_STACK_LIMIT ) {
335
+ if ( stackDepth >= getRefStackLimit ( stackLimit ) ) {
321
336
return { value : ERR_TOO_MANY_LEVELS } ;
322
337
}
323
338
@@ -467,12 +482,15 @@ let QUERYPARAM = 'query',
467
482
return new Error ( 'Schema is empty' ) ;
468
483
}
469
484
470
- if ( stack >= REF_STACK_LIMIT ) {
485
+ const { stackLimit } = context . computedOptions ;
486
+
487
+ if ( stack >= getRefStackLimit ( stackLimit ) ) {
471
488
return { value : ERR_TOO_MANY_LEVELS } ;
472
489
}
473
490
474
491
stack ++ ;
475
492
493
+ // eslint-disable-next-line one-var
476
494
const compositeKeyword = schema . anyOf ? 'anyOf' : 'oneOf' ,
477
495
{ concreteUtils } = context ;
478
496
0 commit comments