UNPKG

json-schema-to-joi

Version:

Converts JSON schema to Joi typescript code

46 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateNumberJoi = exports.resolveJoiNumberSchema = void 0; const types_1 = require("./types"); const generate_1 = require("./generate"); const _ = require("lodash"); const any_1 = require("./any"); function resolveJoiNumberSchema(schema) { const joiSchema = types_1.createJoiItem('number'); if (schema.type === 'integer') { joiSchema.integer = true; } _.isNumber(schema.minimum) && (joiSchema.min = schema.minimum); _.isNumber(schema.maximum) && (joiSchema.max = schema.maximum); schema.exclusiveMinimum && (joiSchema.greater = schema.minimum); schema.exclusiveMaximum && (joiSchema.less = schema.maximum); _.isNumber(schema.multipleOf) && (joiSchema.multiple = schema.multipleOf); any_1.resolveJoiAnyMeta(joiSchema, schema); return joiSchema; } exports.resolveJoiNumberSchema = resolveJoiNumberSchema; function generateNumberJoi(schema) { const content = generate_1.openJoi([ 200, 'number()' ]); if (schema.greater !== undefined) { content.push(`.greater(${schema.min})`); } else if (schema.min !== undefined) { content.push(`.min(${schema.min})`); } if (schema.less !== undefined) { content.push(`.less(${schema.max})`); } else if (schema.max !== undefined) { content.push(`.max(${schema.max})`); } if (schema.multiple !== undefined) { content.push(`.multiple(${schema.multiple})`); } content.push(...any_1.generateAnyJoi(schema)); return generate_1.closeJoi(content); } exports.generateNumberJoi = generateNumberJoi; //# sourceMappingURL=number.js.map