Skip to content

Commit 99cdbab

Browse files
committed
Allow to use a map of extensions in a field resolver (#1324)
Closes #1279
1 parent d234b31 commit 99cdbab

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/Interfaces.ts

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ export interface IResolverOptions<TSource = any, TContext = any, TArgs = any> {
6565
fragment?: string;
6666
resolve?: IFieldResolver<TSource, TContext, TArgs>;
6767
subscribe?: IFieldResolver<TSource, TContext, TArgs>;
68+
extensions?: Record<string, any>;
6869
__resolveType?: GraphQLTypeResolver<TSource, TContext>;
6970
__isTypeOf?: GraphQLIsTypeOfFn<TSource, TContext>;
7071
}

src/test/schemaGenerator.test.ts

+25
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,31 @@ describe('generating schema from shorthand', () => {
382382
expect(jsSchema.getQueryType().getFields().bar).toBeDefined();
383383
});
384384

385+
test('allow for a map of extensions in field resolver', () => {
386+
const jsSchema = makeExecutableSchema({
387+
typeDefs: /* GraphQL */ `
388+
type Query {
389+
foo: String
390+
}
391+
`,
392+
resolvers: {
393+
Query: {
394+
foo: {
395+
resolve() {
396+
return 'Foo';
397+
},
398+
extensions: {
399+
verbose: true,
400+
},
401+
},
402+
},
403+
},
404+
});
405+
const extensions = jsSchema.getQueryType().getFields().foo.extensions;
406+
expect(extensions).toHaveProperty('verbose');
407+
expect(extensions.verbose).toBe(true);
408+
});
409+
385410
test('can concatenateTypeDefs created by a function inside a closure', () => {
386411
const typeA = { typeDefs: () => ['type TypeA { foo: String }'] };
387412
const typeB = { typeDefs: () => ['type TypeB { bar: String }'] };

0 commit comments

Comments
 (0)