UNPKG

kitsu-core

Version:

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

31 lines (28 loc) 1.19 kB
import { deattribute } from './deattribute.mjs'; import { linkRelationships } from './linkRelationships.mjs'; import './filterIncludes.mjs'; import './error.mjs'; 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(value, included, previouslyLinked, relationshipCache); if (value.attributes) value = 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(response.data, response.included);else if (typeof response.data === 'object' && response.data !== null) response.data = linkRelationships(response.data); delete response.included; if (response.data?.attributes) response.data = deattribute(response.data); return response; } export { deserialise };