UNPKG

devour-jsonapi-client

Version:

Don't just consume your JSON API, Devour it...

42 lines (34 loc) 1.12 kB
const deserialize = require('./_deserialize') const _ = require('lodash') function needsDeserialization(method) { return ['GET', 'PATCH', 'POST'].indexOf(method) !== -1 } function isCollection(responseData) { return _.isArray(responseData) } module.exports = { name: 'response', res: function(payload) { /* * Note: The axios ajax response attaches the actual response data to * `res.data`. JSON API Resources also passes back the response with * a `data` attribute. This means we have `res.data.data`. */ let jsonApi = payload.jsonApi let req = payload.req let res = payload.res.data let included = res.included let deserializedResponse = null if(needsDeserialization(req.method)) { if(isCollection(res.data)) { deserializedResponse = deserialize.collection.call(jsonApi, res.data, included) }else{ deserializedResponse = deserialize.resource.call(jsonApi, res.data, included) } } if(res && res.meta) { deserializedResponse.meta = res.meta } return deserializedResponse } }