UNPKG

json-schema-to-joi

Version:

Converts JSON schema to Joi typescript code

75 lines 2.48 kB
"use strict"; 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