diff options
Diffstat (limited to 'jsonapi.js')
| -rw-r--r-- | jsonapi.js | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/jsonapi.js b/jsonapi.js deleted file mode 100644 index fa3b6ef..0000000 --- a/jsonapi.js +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/node -/* https://github.com/alex94puchades/superagent-jsonapify/blob/master/common.js */ - -"use strict"; - -var _isUndefined = require('lodash/isUndefined'); -var _isArray = require('lodash/isArray'); -var _map = require('lodash/map'); -var _partial = require('lodash/partial'); -var _each = require('lodash/each'); -var _camelCase = require('lodash/camelCase'); -var _memoize = require('lodash/memoize'); -var _chain = require('lodash/chain'); -var _find = require('lodash/find'); -var _clone = require('lodash/clone'); -var _compact = require('lodash/compact'); - -exports.parse = (obj) => { - let response = obj, - data = obj.data; - if (!data) { - return data; - } else if (_isArray(data)) { - return _map(data, _partial(parseResourceDataObject, response)); - } else { - return parseResourceDataObject(response, data); - } -} - -function parseResourceDataObject(response, data) { - var result = _clone(data); - _each(data.attributes, function(value, name) { - Object.defineProperty(result, _camelCase(name), { value: value, enumerable: true }); - }); - _each(data.relationships, function(value, name) { - if (_isArray(value.data)) { - Object.defineProperty(result, _camelCase(name), { - get: _memoize(function() { - const related = _map(value.data, function(related) { - var resdata = _find(response.included, function(included) { - return included.id === related.id && included.type === related.type; - }); - if(resdata) - return parseResourceDataObject(response, resdata); - }); - return _compact(related); - }), - enumerable: true - }); - } else if (value.data) { - Object.defineProperty(result, _camelCase(name), { - get: _memoize(function() { - var resdata = _find(response.included, function(included) { - return included.id === value.data.id && included.type === value.data.type; - }); - return resdata ? parseResourceDataObject(response, resdata) - : null; - }), - enumerable: true - }); - } - }); - return result; -} |
