UNPKG

json-docs-generator

Version:

Util for describe REST APIs via docs.

57 lines (45 loc) 1.32 kB
const normalizeArray = value => value.map((item) => { if (typeof item === 'function') { return typeof item(); } if (typeof item === 'object') { return Array.isArray(item) ? normalizeArray(item) : normalizeValue(item); } return item; }); const normalizeValue = (response) => { if (typeof response !== 'object' || response === null) { return response; } return Object.entries(response).reduce((object, [key, value]) => { let formattedValue = value; if (typeof value === 'function') { formattedValue = typeof value(); } if (typeof value === 'object' && Array.isArray(value)) { formattedValue = normalizeArray(value); } if (typeof value === 'object' && !Array.isArray(value)) { formattedValue = normalizeValue(value); } return { ...object, [key]: formattedValue, }; }, {}); }; module.exports = (response) => { if (typeof response === 'number' || typeof response === 'string') { return response; } if (typeof response === 'function') { return typeof response(); } return JSON.stringify( Array.isArray(response) ? response.map(normalizeValue) : normalizeValue(response), null, 2, ) .replace(/".*":/g, match => `${match.substr(1, match.length - 3)}:`) .replace(/"/g, '\''); };