UNPKG

json-schema-to-joi

Version:

Converts JSON schema to Joi typescript code

59 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveType = void 0; const types_1 = require("./types"); const array_1 = require("./array"); const _ = require("lodash"); const number_1 = require("./number"); const object_1 = require("./object"); const string_1 = require("./string"); const boolean_1 = require("./boolean"); function resolveType(schema, options) { const getJoiType = (type) => { switch (type) { case 'array': return array_1.resolveJoiArraySchema(schema, options); break; case 'boolean': return boolean_1.resolveJoiBooleanSchema(schema); break; case 'integer': case 'number': return number_1.resolveJoiNumberSchema(schema); break; case 'object': return object_1.resolveJoiObjectSchema(schema, options); break; case 'string': return string_1.resolveJoiStringSchema(schema); break; case 'null': return { type: 'any', valid: [null], }; break; } return { type: 'any', }; }; let joiSchema = types_1.createJoiItem('any'); if (_.isArray(schema.type)) { const schemas = schema.type.map(getJoiType); joiSchema.type = 'alternatives'; joiSchema.alternatives = schemas; } else if (schema.type) { joiSchema = getJoiType(schema.type); } (!_.isUndefined(schema.default)) && (joiSchema.default = schema.default); (!!schema.description) && (joiSchema.description = schema.description); (!!schema.title) && (joiSchema.label = _.camelCase(schema.title)); if (schema.enum) { joiSchema.valid = schema.enum; } return joiSchema; } exports.resolveType = resolveType; //# sourceMappingURL=resolveType.js.map