Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | 19x 19x 19x 19x 19x 19x 23x 23x 30x 30x 17x 17x 17x 1x 16x 23x 30x 30x 22x 22x 10x 12x 13x 13x 13x 12x 11x 11x 2x 9x 19x | import { GraphQLSchema, GraphQLObjectType, GraphQLFieldConfig } from 'graphql';
import {
queryFieldsRegistry,
mutationFieldsRegistry,
RootFieldsRegistry,
} from './registry';
import { SchemaRootError } from './error';
import { showDeprecationWarning } from '~/services/utils';
import { validateSchemaRoots } from "./services";
export interface CompileSchemaOptions {
roots: Function[];
}
function getAllRootFieldsFromRegistry(
roots: Function[],
registry: RootFieldsRegistry,
name: 'Query' | 'Mutation',
): GraphQLObjectType {
const allRootFields: { [key: string]: GraphQLFieldConfig<any, any> } = {};
for (let root of roots) {
const rootFields = registry.getAll(root);
Object.keys(rootFields).forEach(fieldName => {
const fieldConfigGetter = rootFields[fieldName];
const fieldConfig = fieldConfigGetter();
// throw error if root field with this name is already registered
if (!!allRootFields[fieldName]) {
throw new SchemaRootError(
root,
`Duplicate of root field name: '${fieldName}'. Seems this name is also used inside other schema root.`,
);
}
allRootFields[fieldName] = fieldConfig;
I});
}
const isEmpty = Object.keys(allRootFields).length < 1;
if (isEmpty) {
return null;
}
return new GraphQLObjectType({
name,
fields: allRootFields,
});
}
export function compileSchema(config: CompileSchemaOptions | Function) {
const roots = typeof config === 'function' ? [config] : config.roots;
if (typeof config === 'function') {
showDeprecationWarning(
`Passing schema root to compileSchema is deprecated. Use config object with 'roots' field. compileSchema(SchemaRoot) --> compileSchema({ roots: [SchemaRoot] })`,
config,
);
}
validateSchemaRoots(roots);
const query = getAllRootFieldsFromRegistry(
roots,
queryFieldsRegistry,
'Query',
);
const mutation = getAllRootFieldsFromRegistry(
roots,
mutationFieldsRegistry,
'Mutation',
);
if (!query) {
throw new Error(
'At least one of schema roots must have @Query root field.',
);
}
return new GraphQLSchema({
query: query || undefined,
mutation: mutation || undefined,
});
}
|