module.exports = function(server) { function toJson(object) { let json = {}; for (let prop in object) { let value = object[prop]; switch (typeof value) { case 'object': if (value instanceof RegExp) json[prop] = value.source; break; case 'function': json[prop] = value.toString(); break; default: json[prop] = value; } } return json; } server.get('/validations', function(req, res) { let json = {}; let models = server.models; for (let modelName in models) { let model = models[modelName]; let validations = model.validations; let jsonValidations = {}; for (let fieldName in validations) { let jsonField = []; for (let validation of validations[fieldName]) { let options = validation.options; if ((options && options.async) || (validation.validation == 'custom' && !validation.isExportable)) continue; jsonField.push(toJson(validation)); } jsonValidations[fieldName] = jsonField; } json[modelName] = { properties: model.definition.rawProperties, validations: jsonValidations }; } res.set('Content-Type', 'application/json'); res.send(JSON.stringify(json)); }); };