UNPKG

kitsu-core

Version:

Simple, lightweight & framework agnostic JSON:API (de)serialsation components

33 lines (29 loc) 1.29 kB
'use strict'; var deattribute = require('./deattribute.js'); var linkRelationships = require('./linkRelationships.js'); require('./filterIncludes.js'); require('./error.js'); function deserialiseArray(response) { const previouslyLinked = {}; const relationshipCache = {}; for (let value of response.data) { const included = [...response.data.map(item => ({ ...item, relationships: { ...item.relationships } })), ...(response.included || [])]; value = linkRelationships.linkRelationships(value, included, previouslyLinked, relationshipCache); if (value.attributes) value = deattribute.deattribute(value); response.data[response.data.indexOf(value)] = value; } return response; } function deserialise(response) { if (!response) return; if (Array.isArray(response.data)) response = deserialiseArray(response);else if (response.included) response.data = linkRelationships.linkRelationships(response.data, response.included);else if (typeof response.data === 'object' && response.data !== null) response.data = linkRelationships.linkRelationships(response.data); delete response.included; if (response.data?.attributes) response.data = deattribute.deattribute(response.data); return response; } exports.deserialise = deserialise;