| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { dirname } from "node:path";
- import { fileURLToPath } from "node:url";
- import $RefParser from "@apidevtools/json-schema-ref-parser";
- const __filename = fileURLToPath(import.meta.url);
- const __dirname = dirname(__filename);
- let compiledSchema = null;
- /**
- * Compiles the schema, by dereferencing it, only once
- * and returns the memory cached value
- */
- const 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
- */
- const 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;
- };
- export { getCompiledSchema, getValidationSchema };
|