UNPKG

apeman-app-validate

Version:
49 lines (47 loc) 1.1 kB
/** * Parse data in request body. * @function parseData * @param {string[]} namespace * @returns {?Object} - Found data */ 'use strict' /** @lends parseData */ function parseData (body, namespace) { let data = body let getValue = (data, key) => { if (!data) { return data } let value = data[ key ] if (Array.isArray(value)) { return value.map((value, i) => Object.assign({ __proto__: { $pointer: [ (data.$pointer || ''), key, i ].join('/') } }, value) ) } else if (typeof value === 'object') { value = Object.assign({ __proto__: { $pointer: [ (data.$pointer || ''), key ].join('/') } }, value) } return value } if (namespace) { let keys = namespace.split(/[\.\/]/g).filter((key) => !!key) for (let key of keys) { if (data) { if (Array.isArray(data)) { data = data.map((data) => getValue(data, key)) } else { data = getValue(data, key) } } } } return data } module.exports = parseData