Skip to content

Commit

Permalink
reorganize subschema functions into subschema file
Browse files Browse the repository at this point in the history
  • Loading branch information
yaacovCR committed Jun 3, 2020
1 parent 5d22553 commit 64550ef
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 14 deletions.
2 changes: 1 addition & 1 deletion packages/delegate/src/defaultMergedResolver.ts
Expand Up @@ -3,7 +3,7 @@ import { defaultFieldResolver, GraphQLResolveInfo } from 'graphql';
import { getResponseKeyFromInfo, getErrors } from '@graphql-tools/utils';

import { handleResult } from './results/handleResult';
import { getSubschema } from './subschema';
import { getSubschema } from './Subschema';

/**
* Resolver that knows how to:
Expand Down
2 changes: 1 addition & 1 deletion packages/delegate/src/delegateToSchema.ts
Expand Up @@ -36,10 +36,10 @@ import {
IDelegateToSchemaOptions,
IDelegateRequestOptions,
SubschemaConfig,
isSubschemaConfig,
ExecutionParams,
StitchingInfo,
} from './types';
import { isSubschemaConfig } from './Subschema';

export function delegateToSchema(options: IDelegateToSchemaOptions | GraphQLSchema): any {
if (isSchema(options)) {
Expand Down
4 changes: 1 addition & 3 deletions packages/delegate/src/index.ts
Expand Up @@ -3,10 +3,8 @@ export { createRequestFromInfo, createRequest } from './createRequest';
export { defaultMergedResolver } from './defaultMergedResolver';
export { createMergedResolver } from './createMergedResolver';
export { handleResult } from './results/handleResult';
export { getSubschema } from './subschema';
export { Subschema, isSubschema, isSubschemaConfig, getSubschema } from './Subschema';

export * from './transforms';

export { Subschema } from './GraphQLSubschema';

export * from './types';
2 changes: 1 addition & 1 deletion packages/delegate/src/proxiedResult.ts
Expand Up @@ -5,7 +5,7 @@ import { mergeDeep, ERROR_SYMBOL, relocatedError, setErrors, getErrors } from '@
import { handleNull } from './results/handleNull';

import { FIELD_SUBSCHEMA_MAP_SYMBOL, OBJECT_SUBSCHEMA_SYMBOL } from './symbols';
import { getSubschema, setObjectSubschema } from './subschema';
import { getSubschema, setObjectSubschema } from './Subschema';
import { SubschemaConfig } from './types';

export function isProxiedResult(result: any) {
Expand Down
4 changes: 2 additions & 2 deletions packages/delegate/src/results/handleObject.ts
Expand Up @@ -9,9 +9,9 @@ import {
} from 'graphql';

import { collectFields, GraphQLExecutionContext, setErrors, slicedError } from '@graphql-tools/utils';
import { setObjectSubschema } from '../subschema';
import { setObjectSubschema, isSubschemaConfig } from '../Subschema';
import { mergeFields } from '../mergeFields';
import { MergedTypeInfo, SubschemaConfig, isSubschemaConfig } from '../types';
import { MergedTypeInfo, SubschemaConfig } from '../types';

export function handleObject(
type: GraphQLCompositeType,
Expand Down
34 changes: 33 additions & 1 deletion packages/delegate/src/subschema.ts
@@ -1,6 +1,8 @@
import { GraphQLSchema } from 'graphql';

import { SubschemaConfig } from './types';
import { Transform, applySchemaTransforms } from '@graphql-tools/utils';

import { SubschemaConfig, MergedTypeConfig, CreateProxyingResolverFn, Subscriber, Executor } from './types';

import { FIELD_SUBSCHEMA_MAP_SYMBOL, OBJECT_SUBSCHEMA_SYMBOL } from './symbols';

Expand All @@ -12,3 +14,33 @@ export function getSubschema(result: any, responseKey: string): GraphQLSchema |
export function setObjectSubschema(result: any, subschema: GraphQLSchema | SubschemaConfig) {
result[OBJECT_SUBSCHEMA_SYMBOL] = subschema;
}

export function isSubschemaConfig(value: any): value is SubschemaConfig {
return Boolean((value as SubschemaConfig).schema);
}

export function isSubschema(value: any): value is Subschema {
return Boolean((value as Subschema).transformedSchema);
}

export class Subschema {
public schema: GraphQLSchema;
public rootValue?: Record<string, any>;
public executor?: Executor;
public subscriber?: Subscriber;
public createProxyingResolver?: CreateProxyingResolverFn;
public transforms: Array<Transform>;
public transformedSchema: GraphQLSchema;
public merge?: Record<string, MergedTypeConfig>;

constructor(config: SubschemaConfig) {
this.schema = config.schema;
this.executor = config.executor;
this.subscriber = config.subscriber;
this.createProxyingResolver = config.createProxyingResolver;
this.transforms = config.transforms ?? [];
this.merge = config.merge;

this.transformedSchema = applySchemaTransforms(this.schema, this.transforms);
}
}
6 changes: 1 addition & 5 deletions packages/delegate/src/types.ts
Expand Up @@ -13,7 +13,7 @@ import {
} from 'graphql';
import { Operation, Transform, Request, TypeMap, ExecutionResult } from '@graphql-tools/utils';

import { Subschema } from './GraphQLSubschema';
import { Subschema } from './Subschema';

export interface IDelegateToSchemaOptions<TContext = Record<string, any>, TArgs = Record<string, any>> {
schema: GraphQLSchema | SubschemaConfig | Subschema;
Expand Down Expand Up @@ -125,10 +125,6 @@ export type MergedTypeResolver = (
selectionSet: SelectionSetNode
) => any;

export function isSubschemaConfig(value: any): value is SubschemaConfig {
return Boolean((value as SubschemaConfig).schema);
}

export interface StitchingInfo {
transformedSchemas: Map<GraphQLSchema | SubschemaConfig, GraphQLSchema>;
fragmentsByField: Record<string, Record<string, InlineFragmentNode>>;
Expand Down

0 comments on commit 64550ef

Please sign in to comment.