12345678910111213141516171819202122232425262728293031 |
- export function extendResolversFromInterfaces(schema, resolvers) {
- const extendedResolvers = {};
- const typeMap = schema.getTypeMap();
- for (const typeName in typeMap) {
- const type = typeMap[typeName];
- if ('getInterfaces' in type) {
- extendedResolvers[typeName] = {};
- for (const iFace of type.getInterfaces()) {
- if (resolvers[iFace.name]) {
- for (const fieldName in resolvers[iFace.name]) {
- if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {
- extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];
- }
- }
- }
- }
- const typeResolvers = resolvers[typeName];
- extendedResolvers[typeName] = {
- ...extendedResolvers[typeName],
- ...typeResolvers,
- };
- }
- else {
- const typeResolvers = resolvers[typeName];
- if (typeResolvers != null) {
- extendedResolvers[typeName] = typeResolvers;
- }
- }
- }
- return extendedResolvers;
- }
|