UNPKG

@korbiniankuhn/validator

Version:

Validate object schemas for js, expressjs, angular and mongoose.

143 lines 4.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("./lodash"); const RAML_TYPES = { any: { rename: { only: 'enum' }, whitelist: ['type', 'description', 'required', 'default', 'example', 'enum'] }, array: { rename: { only: 'enum', unique: 'uniqueItems', min: 'minItems', max: 'maxItems' }, whitelist: [ 'type', 'description', 'required', 'default', 'example', 'enum', 'items', 'uniqueItems', 'minItems', 'maxItems' ] }, boolean: { rename: { only: 'enum' }, whitelist: ['type', 'description', 'required', 'default', 'example', 'enum'] }, date: { rename: { only: 'enum' }, whitelist: ['type', 'description', 'required', 'default', 'example', 'enum'] }, number: { rename: { only: 'enum', min: 'minimum', max: 'maximum' }, whitelist: [ 'type', 'description', 'required', 'default', 'example', 'enum', 'minimum', 'maximum' ] }, object: { rename: { only: 'enum', min: 'minProperties', max: 'maxProperties' }, whitelist: [ 'type', 'description', 'required', 'default', 'example', 'enum', 'minProperties', 'maxProperties', 'properties' ] }, string: { rename: { only: 'enum', min: 'minLength', max: 'maxLength' }, whitelist: [ 'type', 'description', 'required', 'default', 'example', 'enum', 'pattern', 'minLength', 'maxLength' ] } }; const convertToRamlType = (object, type) => { for (const src in type.rename) { if (src in object) { const dst = type.rename[src]; object[dst] = object[src]; delete object[src]; } } for (const key in object) { if (type.whitelist.indexOf(key) === -1) { delete object[key]; } } return object; }; const toRAML = object => { switch (object.type) { case 'any': return convertToRamlType(object, RAML_TYPES.any); case 'array': return convertToRamlType(object, RAML_TYPES.array); case 'boolean': return convertToRamlType(object, RAML_TYPES.boolean); case 'date': object.type = 'datetime'; return convertToRamlType(object, RAML_TYPES.date); case 'number': if (object.integer) { object.type = 'integer'; } return convertToRamlType(object, RAML_TYPES.number); case 'object': return convertToRamlType(object, RAML_TYPES.object); case 'string': return convertToRamlType(object, RAML_TYPES.string); case 'request': return lodash_1.removeNilProperties({ description: object.description, uriParameters: object.params ? object.params.properties : undefined, queryParameters: object.query ? object.query.properties : undefined, body: object.body ? { 'application/json': object.body } : undefined }); case 'response': { return { [object.status]: lodash_1.removeNilProperties({ description: object.description, body: object.body ? { 'application/json': object.body } : undefined }) }; } default: return object; } }; exports.toObject = (object, options = {}) => { const values = lodash_1.removeNilProperties(object); switch (options.type) { case 'raml': { return toRAML(values); } default: return values; } }; //# sourceMappingURL=to-object.js.map