Spaces:
Build error
Build error
File size: 1,102 Bytes
d9494a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import { type DocumentNode } from 'graphql';
import { graphQLExtractTopLevelFields } from 'src/engine/api/graphql/direct-execution/utils/graphql-extract-top-level-fields.util';
const INTROSPECTION_FIELD_NAMES = new Set(['__schema', '__type']);
type TopLevelFieldsClassification = {
hasIntrospectionFields: boolean;
hasWorkspaceFields: boolean;
hasCoreFields: boolean;
};
export const classifyTopLevelFields = (
document: DocumentNode,
operationName: string | undefined,
workspaceResolverNames: Set<string>,
): TopLevelFieldsClassification => {
const topLevelFields = graphQLExtractTopLevelFields(document, operationName);
let hasIntrospectionFields = false;
let hasWorkspaceFields = false;
let hasCoreFields = false;
for (const field of topLevelFields) {
if (INTROSPECTION_FIELD_NAMES.has(field.name.value)) {
hasIntrospectionFields = true;
} else if (workspaceResolverNames.has(field.name.value)) {
hasWorkspaceFields = true;
} else {
hasCoreFields = true;
}
}
return { hasIntrospectionFields, hasWorkspaceFields, hasCoreFields };
};
|