You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							44 lines
						
					
					
						
							1.2 KiB
						
					
					
				'use strict';
 | 
						|
 | 
						|
module.exports = function applyPlugins(schema, plugins, options, cacheKey) {
 | 
						|
  if (schema[cacheKey]) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  schema[cacheKey] = true;
 | 
						|
 | 
						|
  if (!options || !options.skipTopLevel) {
 | 
						|
    for (const plugin of plugins) {
 | 
						|
      schema.plugin(plugin[0], plugin[1]);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  options = Object.assign({}, options);
 | 
						|
  delete options.skipTopLevel;
 | 
						|
 | 
						|
  if (options.applyPluginsToChildSchemas !== false) {
 | 
						|
    for (const path of Object.keys(schema.paths)) {
 | 
						|
      const type = schema.paths[path];
 | 
						|
      if (type.schema != null) {
 | 
						|
        applyPlugins(type.schema, plugins, options, cacheKey);
 | 
						|
 | 
						|
        // Recompile schema because plugins may have changed it, see gh-7572
 | 
						|
        type.caster.prototype.$__setSchema(type.schema);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  const discriminators = schema.discriminators;
 | 
						|
  if (discriminators == null) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  const applyPluginsToDiscriminators = options.applyPluginsToDiscriminators;
 | 
						|
 | 
						|
  const keys = Object.keys(discriminators);
 | 
						|
  for (const discriminatorKey of keys) {
 | 
						|
    const discriminatorSchema = discriminators[discriminatorKey];
 | 
						|
 | 
						|
    applyPlugins(discriminatorSchema, plugins,
 | 
						|
      { skipTopLevel: !applyPluginsToDiscriminators }, cacheKey);
 | 
						|
  }
 | 
						|
}; |