onebeyond/swagger-endpoint-validator

View on GitHub
lib/normalizeOptions.js

Summary

Maintainability
A
0 mins
Test Coverage
const debug = require('debug')('swagger-endpoint-validator:options');

const { SUPPORTED_FORMATS } = require('./constants');

/**
 * Normalize configuraton object used by the validator.
 * @param {Object} options - Configuration object.
 */
const normalizeOptions = options => {
    debug('Normalizing options...');

    let normalizedYaml = options.yaml || {};
    normalizedYaml = {
        file: normalizedYaml.file || null,
    };

    const formatOptions = {
        [SUPPORTED_FORMATS.YAML]: normalizedYaml,
        [SUPPORTED_FORMATS.YAML_JSDOC]: options[options.format] || {},
        [SUPPORTED_FORMATS.JSDOC]: options[options.format] || {},
    };

    const selectedFormat = options.format || SUPPORTED_FORMATS.YAML;

    const normalizedOptions = {
        ...options,
        format: options.format || SUPPORTED_FORMATS.YAML,
        [options.format]: formatOptions[selectedFormat],
        validationEndpoint: options.validationEndpoint || null,
        apiDocEndpoint: options.apiDocEndpoint || null,
        validateResponses: options.validateResponses !== undefined ? options.validateResponses : true,
    };

    debug(`Normalized options: ${JSON.stringify(normalizedOptions)}`);

    return normalizedOptions;
};

module.exports = normalizeOptions;