graphql-paper
Version:
A flexible in-memory store based on a GraphQL Schema
38 lines (36 loc) • 1.3 kB
JavaScript
;
var getDocumentKey = require('../document/get-document-key.js');
var isDocument = require('../document/is-document.js');
function captureTransactionResultKeys(result) {
const unallowedError = new Error('Return values from transactions must be null, undefined, a Document, array of Document or an object with Document values');
if (result === undefined || result === null) {
return result;
}
if (isDocument.isDocument(result)) {
return getDocumentKey.getDocumentKey(result);
}
if (Array.isArray(result)) {
return result.map(item => {
if (!isDocument.isDocument(item)) {
throw unallowedError;
}
return getDocumentKey.getDocumentKey(item);
});
}
if (typeof result === 'object') {
const processed = {};
for (const key in result) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const item = result[key];
if (!isDocument.isDocument(item)) {
throw unallowedError;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
processed[key] = getDocumentKey.getDocumentKey(item);
}
return processed;
}
throw unallowedError;
}
exports.captureTransactionResultKeys = captureTransactionResultKeys;
//# sourceMappingURL=capture-transaction-result-keys.js.map