graphql-paper
Version:
A flexible in-memory store based on a GraphQL Schema
57 lines (55 loc) • 1.66 kB
JavaScript
;
var createConnectionProxy = require('../document/create-connection-proxy.js');
var isDocument = require('../document/is-document.js');
var nullDocument = require('../document/null-document.js');
var findDocument = require('../store/find-document.js');
function processReturnable(item, {
schema,
store
}) {
if (item === nullDocument.nullDocument || item === null) {
return null;
}
if (isDocument.isDocument(item)) {
return createConnectionProxy.createConnectionProxy(schema, store, item);
}
return item;
}
function convertResultKeysToDocument(schema, store, result) {
if (result === undefined || result === null) {
return result;
}
if (typeof result === 'string') {
const key = result;
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const document = findDocument.findDocument(store, key);
return processReturnable(document, {
store,
schema
});
}
if (Array.isArray(result)) {
const processed = result.map(key => {
const document = findDocument.findDocument(store, key);
return processReturnable(document, {
store,
schema
});
});
return processed;
}
if (typeof result === 'object') {
const processed = {};
for (const key in result) {
const documentKey = result[key];
const document = findDocument.findDocument(store, documentKey);
processed[key] = processReturnable(document, {
store,
schema
});
}
return processed;
}
}
exports.convertResultKeysToDocument = convertResultKeysToDocument;
//# sourceMappingURL=convert-result-keys-to-document.js.map