Skip to content
This repository has been archived by the owner on Apr 15, 2020. It is now read-only.

Commit

Permalink
refactor(fieldNodes)
Browse files Browse the repository at this point in the history
Move renameFieldNode, wrapFieldNode, and collectFields into utils.
  • Loading branch information
yaacovCR committed Dec 5, 2019
1 parent aa6fb35 commit 957e1bc
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 35 deletions.
2 changes: 1 addition & 1 deletion src/stitching/extractFields.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FieldNode, FragmentDefinitionNode } from 'graphql';
import { collectFields } from './collectFields';
import { collectFields } from '../utils';

export function extractFields({
fieldNode,
Expand Down
2 changes: 0 additions & 2 deletions src/stitching/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import delegateToSchema from './delegateToSchema';
import defaultMergedResolver from './defaultMergedResolver';
import { wrapField, extractField, renameField, createMergedResolver } from './createMergedResolver';
import { extractFields } from './extractFields';
import { collectFields } from './collectFields';


export {
Expand All @@ -19,7 +18,6 @@ export {
defaultCreateRemoteResolver,
defaultMergedResolver,
createMergedResolver,
collectFields,
extractFields,

// TBD: deprecate in favor of createMergedResolver?
Expand Down
32 changes: 1 addition & 31 deletions src/test/testAlternateMergeSchemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import {
GraphQLScalarType,
FieldNode,
printSchema,
Kind,
} from 'graphql';
import {
transformSchema,
Expand Down Expand Up @@ -46,36 +45,7 @@ import {
} from '../stitching';
import { SubschemaConfig, MergedTypeConfig } from '../Interfaces';
import isSpecifiedScalarType from '../utils/isSpecifiedScalarType';

function renameFieldNode(fieldNode: FieldNode, name: string): FieldNode {
return {
...fieldNode,
name: {
...fieldNode.name,
value: name,
}
};
}

function wrapFieldNode(fieldNode: FieldNode, path: Array<string>): FieldNode {
let newFieldNode = fieldNode;
path.forEach(fieldName => {
newFieldNode = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: fieldName,
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [
fieldNode,
]
}
};
});
return newFieldNode;
}
import { wrapFieldNode, renameFieldNode } from '../utils/fieldNodes';

let linkSchema = `
"""
Expand Down
32 changes: 31 additions & 1 deletion src/stitching/collectFields.ts → src/utils/fieldNodes.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,40 @@
import {
FieldNode,
FragmentDefinitionNode,
Kind,
FragmentDefinitionNode,
SelectionSetNode,
} from 'graphql';

export function renameFieldNode(fieldNode: FieldNode, name: string): FieldNode {
return {
...fieldNode,
name: {
...fieldNode.name,
value: name,
}
};
}

export function wrapFieldNode(fieldNode: FieldNode, path: Array<string>): FieldNode {
let newFieldNode = fieldNode;
path.forEach(fieldName => {
newFieldNode = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: fieldName,
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [
fieldNode,
]
}
};
});
return newFieldNode;
}

export function collectFields(
selectionSet: SelectionSetNode,
fragments: Record<string, FragmentDefinitionNode>,
Expand Down
5 changes: 5 additions & 0 deletions src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,8 @@ export {
} from './transformInputValue';
export { concatInlineFragments, parseFragmentToInlineFragment } from './fragments';
export { mergeDeep } from './mergeDeep';
export {
collectFields,
wrapFieldNode,
renameFieldNode,
} from './fieldNodes';

0 comments on commit 957e1bc

Please sign in to comment.