@graphql-mesh/cli
Version:
24 lines (23 loc) • 982 B
JavaScript
import { print } from 'graphql';
import { buildOperationNodeForField, getRootTypeMap, parseGraphQLSDL } from '@graphql-tools/utils';
export function generateOperations(schema, options) {
const sources = [];
const rootTypeMap = getRootTypeMap(schema);
for (const [operationType, rootType] of rootTypeMap) {
const fieldMap = rootType.getFields();
for (const fieldName in fieldMap) {
const operationNode = buildOperationNodeForField({
schema,
kind: operationType,
field: fieldName,
depthLimit: options.selectionSetDepth,
});
const defaultName = `operation_${sources.length}`;
const virtualFileName = operationNode.name?.value || defaultName;
const rawSDL = print(operationNode);
const source = parseGraphQLSDL(`${virtualFileName}.graphql`, rawSDL);
sources.push(source);
}
}
return sources;
}