UNPKG

@graphql-mesh/runtime

Version:
45 lines (44 loc) 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isStreamOperation = exports.iterateAsync = void 0; const graphql_1 = require("graphql"); const utils_1 = require("@graphql-tools/utils"); function iterateAsync(iterable, callback, results) { const iterator = iterable[Symbol.iterator](); function iterate() { const { done: endOfIterator, value } = iterator.next(); if (endOfIterator) { return; } const result$ = callback(value); if ((0, utils_1.isPromise)(result$)) { return result$.then(result => { if (result) { results?.push(result); } return iterate(); }); } if (result$) { results?.push(result$); } return iterate(); } return iterate(); } exports.iterateAsync = iterateAsync; exports.isStreamOperation = (0, utils_1.memoize1)(function isStreamOperation(astNode) { let isStream = false; (0, graphql_1.visit)(astNode, { Field: { enter(node) { if (node.directives?.some(d => d.name.value === 'stream')) { isStream = true; return graphql_1.BREAK; } return undefined; }, }, }); return isStream; });