graphql-paper
Version:
A flexible in-memory store based on a GraphQL Schema
22 lines (21 loc) • 1.4 kB
JavaScript
import { createDocument } from '../document/create-document.mjs';
import { getConnections } from '../document/get-connections.mjs';
import { nullDocument } from '../document/null-document.mjs';
import { getDocumentKey } from '../document/get-document-key.mjs';
function deserializeDocument(serializedDocument, serializedMeta) {
var documentData = structuredClone(serializedDocument);
delete documentData.__meta__;
var document = createDocument(serializedDocument.__meta__.DOCUMENT_GRAPHQL_TYPENAME, documentData, serializedDocument.__meta__.DOCUMENT_KEY);
// copy over connections from serialized document
var documentConnections = getConnections(document);
var nullDocumentKeyForCurrentPaper = getDocumentKey(nullDocument);
for (var connectionProperty in serializedDocument.__meta__.DOCUMENT_CONNECTIONS) {
documentConnections[connectionProperty] = serializedDocument.__meta__.DOCUMENT_CONNECTIONS[connectionProperty].map(
// the null key in the serialized document might be different than the null key used in the current instance,
// this mapping translates any null serialized null document to use the null document key used by this instance
documentKey => documentKey === serializedMeta.NULL_DOCUMENT_KEY ? nullDocumentKeyForCurrentPaper : documentKey);
}
return document;
}
export { deserializeDocument };
//# sourceMappingURL=deserialize-document.mjs.map