graphql-paper
Version:
A flexible in-memory store based on a GraphQL Schema
24 lines (22 loc) • 1.49 kB
JavaScript
;
var createDocument = require('../document/create-document.js');
var getConnections = require('../document/get-connections.js');
var nullDocument = require('../document/null-document.js');
var getDocumentKey = require('../document/get-document-key.js');
function deserializeDocument(serializedDocument, serializedMeta) {
const documentData = structuredClone(serializedDocument);
delete documentData.__meta__;
const document = createDocument.createDocument(serializedDocument.__meta__.DOCUMENT_GRAPHQL_TYPENAME, documentData, serializedDocument.__meta__.DOCUMENT_KEY);
// copy over connections from serialized document
const documentConnections = getConnections.getConnections(document);
const nullDocumentKeyForCurrentPaper = getDocumentKey.getDocumentKey(nullDocument.nullDocument);
for (const 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;
}
exports.deserializeDocument = deserializeDocument;
//# sourceMappingURL=deserialize-document.js.map