module.exports = function(app) { 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; } app.get('/validations', function(req, res) { let json = {}; let models = app.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; let validationCp = Object.assign({}, validation); if (validationCp.message) validationCp.message = req.__(validationCp.message); jsonField.push(toJson(validationCp)); } jsonValidations[fieldName] = jsonField; } json[modelName] = { properties: model.definition.rawProperties, validations: jsonValidations }; } res.set('Content-Type', 'application/json'); res.send(JSON.stringify(json)); }); };