const refParser = require('@apidevtools/json-schema-ref-parser'); let compiledSchema = null; module.exports = { /** * Compiles the schema, by dereferencing it, only once * and returns the memory cached value */ getCompiledSchema: async () => { if (compiledSchema === null) { compiledSchema = await refParser.dereference(__dirname + '/swagger.json', { mutateInputSchema: false, }); } return compiledSchema; }, /** * Scans the schema for the validation schema for the given path and method * and returns it. * * @param {string} path * @param {string} method * @returns string|null */ getValidationSchema: (path, method) => { if (compiledSchema !== null && typeof compiledSchema.paths[path] !== 'undefined' && typeof compiledSchema.paths[path][method] !== 'undefined' && typeof compiledSchema.paths[path][method].requestBody !== 'undefined' && typeof compiledSchema.paths[path][method].requestBody.content !== 'undefined' && typeof compiledSchema.paths[path][method].requestBody.content['application/json'] !== 'undefined' && typeof compiledSchema.paths[path][method].requestBody.content['application/json'].schema !== 'undefined' ) { return compiledSchema.paths[path][method].requestBody.content['application/json'].schema; } return null; } };