no-hassle
Version: 
Makes Node.js route handling easy with support for [Joi schema](https://github.com/hapijs/joi) validation and automatic Swagger generation based on these schema definitions. Uses Expressjs routing mechanism.
58 lines (57 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getParameters = void 0;
const j2s = require('joi-to-swagger');
const definition_1 = require("./definition");
const getParameters = (swagger, input) => {
    if (!input)
        return [];
    const { body, query, params, headers } = input;
    const result = [];
    if (body) {
        const definition = (0, definition_1.getDefinition)(swagger, body, 'Input');
        result.push({
            in: 'body',
            name: definition,
            required: true,
            schema: {
                $ref: `#/definitions/${definition}`,
            },
        });
    }
    if (query) {
        const { properties, required = [] } = j2s(query).swagger;
        Object.keys(properties).forEach((key) => {
            result.push({
                in: 'query',
                name: key,
                required: required.includes(key),
                ...properties[key],
            });
        });
    }
    if (params) {
        const { properties } = j2s(params).swagger;
        Object.keys(properties).forEach((key) => {
            result.push({
                in: 'path',
                name: key,
                required: true,
                ...properties[key],
            });
        });
    }
    if (headers) {
        const { properties, required = [] } = j2s(headers).swagger;
        Object.keys(properties).forEach((key) => {
            result.push({
                in: 'header',
                name: key,
                required: required.includes(key),
                ...properties[key],
            });
        });
    }
    return result;
};
exports.getParameters = getParameters;