json-schema-to-joi
Version:
Converts JSON schema to Joi typescript code
46 lines • 1.7 kB
JavaScript
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
;