json-schema-to-joi
Version:
Converts JSON schema to Joi typescript code
75 lines • 2.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateJoiStatement = exports.closeJoi = exports.openJoi = exports.OPEN_CLOSE = exports.CLOSE = exports.OPEN = void 0;
const string_1 = require("./string");
const number_1 = require("./number");
const object_1 = require("./object");
const boolean_1 = require("./boolean");
const array_1 = require("./array");
const alternatives_1 = require("./alternatives");
const oneOf_1 = require("./oneOf");
const allOf_1 = require("./allOf");
const reference_1 = require("./reference");
const any_1 = require("./any");
exports.OPEN = ["{", "[", "("];
exports.CLOSE = ["}", "]", ")"];
exports.OPEN_CLOSE = [...exports.OPEN, ...exports.CLOSE];
function openJoi(statement) {
return [0, ...statement];
}
exports.openJoi = openJoi;
function closeJoi(statement) {
statement.push(1);
return statement;
}
exports.closeJoi = closeJoi;
function generateJoiStatement(schema, withTitle = false) {
const content = withTitle ?
openJoi([
2,
schema.label,
schema.type, 3
]) : [];
switch (schema.type) {
case 'object':
content.push(...object_1.generateObjectJoi(schema));
break;
case 'string':
content.push(...string_1.generateStringJoi(schema));
break;
case 'number':
content.push(...number_1.generateNumberJoi(schema));
break;
case 'boolean':
content.push(...boolean_1.generateBooleanJoi(schema));
break;
case 'alternatives':
content.push(...alternatives_1.generateAlternativesJoi(schema));
break;
case 'array':
content.push(...array_1.generateArrayJoi(schema));
break;
case 'oneOf':
content.push(...oneOf_1.generateOneOfJoi(schema));
break;
case 'allOf':
content.push(...allOf_1.generateAllOfJoi(schema));
break;
case 'reference':
case 'link':
case 'lazy':
content.push(...reference_1.generateReferenceJoi(schema));
break;
case 'any':
default:
content.push(...any_1.generateAnyJoi(schema));
break;
}
if (withTitle) {
content.push(";");
return closeJoi(content);
}
return content;
}
exports.generateJoiStatement = generateJoiStatement;
//# sourceMappingURL=generate.js.map
;