Skip to content

Commit a4a8920

Browse files
committed
Address review feedback
s/fieldName/memberName Adds wrapping object around return type of resolveSchemaCoordinate to ensure it's easy to use that result.
1 parent b2cf85c commit a4a8920

17 files changed

+188
-137
lines changed

src/index.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,6 @@ export {
181181
GraphQLScalarSerializer,
182182
GraphQLScalarValueParser,
183183
GraphQLScalarLiteralParser,
184-
GraphQLSchemaElement,
185184
} from './type/index';
186185

187186
// Parse and operate on GraphQL language source files.
@@ -462,4 +461,5 @@ export {
462461
BreakingChange,
463462
DangerousChange,
464463
TypedQueryDocumentNode,
464+
GraphQLSchemaElement,
465465
} from './utilities/index';

src/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ export type {
168168
GraphQLScalarSerializer,
169169
GraphQLScalarValueParser,
170170
GraphQLScalarLiteralParser,
171-
GraphQLSchemaElement,
172171
} from './type/index';
173172

174173
// Parse and operate on GraphQL language source files.
@@ -450,4 +449,5 @@ export type {
450449
BuildSchemaOptions,
451450
BreakingChange,
452451
DangerousChange,
452+
GraphQLSchemaElement,
453453
} from './utilities/index';

src/language/__tests__/parser-test.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ describe('Parser', () => {
544544
loc: { start: 0, end: 6 },
545545
value: 'MyType',
546546
},
547-
fieldName: undefined,
547+
memberName: undefined,
548548
argumentName: undefined,
549549
});
550550
});
@@ -560,7 +560,7 @@ describe('Parser', () => {
560560
loc: { start: 0, end: 6 },
561561
value: 'MyType',
562562
},
563-
fieldName: {
563+
memberName: {
564564
kind: Kind.NAME,
565565
loc: { start: 7, end: 12 },
566566
value: 'field',
@@ -589,7 +589,7 @@ describe('Parser', () => {
589589
loc: { start: 0, end: 6 },
590590
value: 'MyType',
591591
},
592-
fieldName: {
592+
memberName: {
593593
kind: Kind.NAME,
594594
loc: { start: 7, end: 12 },
595595
value: 'field',
@@ -622,7 +622,7 @@ describe('Parser', () => {
622622
loc: { start: 1, end: 12 },
623623
value: 'myDirective',
624624
},
625-
fieldName: undefined,
625+
memberName: undefined,
626626
argumentName: undefined,
627627
});
628628
});
@@ -638,7 +638,7 @@ describe('Parser', () => {
638638
loc: { start: 1, end: 12 },
639639
value: 'myDirective',
640640
},
641-
fieldName: undefined,
641+
memberName: undefined,
642642
argumentName: {
643643
kind: Kind.NAME,
644644
loc: { start: 13, end: 16 },

src/language/ast.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,6 @@ export interface SchemaCoordinateNode {
609609
readonly loc?: Location;
610610
readonly isDirective: boolean;
611611
readonly name: NameNode;
612-
readonly fieldName?: NameNode;
612+
readonly memberName?: NameNode;
613613
readonly argumentName?: NameNode;
614614
}

src/language/ast.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,6 @@ export type SchemaCoordinateNode = {|
635635
+loc?: Location,
636636
+isDirective: boolean,
637637
+name: NameNode,
638-
+fieldName?: NameNode,
638+
+memberName?: NameNode,
639639
+argumentName?: NameNode,
640640
|};

src/language/parser.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1371,13 +1371,13 @@ export class Parser {
13711371
const start = this._lexer.token;
13721372
const isDirective = this.expectOptionalToken(TokenKind.AT);
13731373
const name = this.parseName();
1374-
let fieldName;
1374+
let memberName;
13751375
if (!isDirective && this.expectOptionalToken(TokenKind.DOT)) {
1376-
fieldName = this.parseName();
1376+
memberName = this.parseName();
13771377
}
13781378
let argumentName;
13791379
if (
1380-
(isDirective || fieldName) &&
1380+
(isDirective || memberName) &&
13811381
this.expectOptionalToken(TokenKind.PAREN_L)
13821382
) {
13831383
argumentName = this.parseName();
@@ -1388,7 +1388,7 @@ export class Parser {
13881388
kind: Kind.SCHEMA_COORDINATE,
13891389
isDirective,
13901390
name,
1391-
fieldName,
1391+
memberName,
13921392
argumentName,
13931393
loc: this.loc(start),
13941394
};

src/language/printer.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -305,11 +305,11 @@ const printDocASTReducer: any = {
305305
// Schema Coordinate
306306

307307
SchemaCoordinate: {
308-
leave: ({ isDirective, name, fieldName, argumentName }) =>
308+
leave: ({ isDirective, name, memberName, argumentName }) =>
309309
join([
310310
isDirective && '@',
311311
name,
312-
wrap('.', fieldName),
312+
wrap('.', memberName),
313313
wrap('(', argumentName, ':)'),
314314
]),
315315
},

src/language/visitor.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ const QueryDocumentKeys = {
123123
EnumTypeExtension: ['name', 'directives', 'values'],
124124
InputObjectTypeExtension: ['name', 'directives', 'fields'],
125125

126-
SchemaCoordinate: ['name', 'fieldName', 'argumentName'],
126+
SchemaCoordinate: ['name', 'memberName', 'argumentName'],
127127
};
128128

129129
export const BREAK: { ... } = Object.freeze({});

src/type/element.d.ts

-16
This file was deleted.

src/type/element.js

-16
This file was deleted.

src/type/index.d.ts

-3
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,3 @@ export {
167167
} from './introspection';
168168

169169
export { validateSchema, assertValidSchema } from './validate';
170-
171-
// Schema Element type.
172-
export { GraphQLSchemaElement } from './element';

src/type/index.js

-3
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,3 @@ export type {
161161

162162
// Validate GraphQL schema.
163163
export { validateSchema, assertValidSchema } from './validate';
164-
165-
// Schema Element type.
166-
export type { GraphQLSchemaElement } from './element';

src/utilities/__tests__/resolveSchemaCoordinate-test.js

+81-64
Original file line numberDiff line numberDiff line change
@@ -31,116 +31,133 @@ describe('resolveSchemaCoordinate', () => {
3131
`);
3232

3333
it('resolves a Named Type', () => {
34-
const expected = schema.getType('Business');
35-
expect(expected).not.to.equal(undefined);
36-
expect(resolveSchemaCoordinate(schema, 'Business')).to.equal(expected);
34+
expect(resolveSchemaCoordinate(schema, 'Business')).to.deep.equal({
35+
kind: 'NamedType',
36+
namedType: schema.getType('Business'),
37+
});
3738

38-
expect(resolveSchemaCoordinate(schema, 'String')).to.equal(
39-
schema.getType('String'),
40-
);
39+
expect(resolveSchemaCoordinate(schema, 'String')).to.deep.equal({
40+
kind: 'NamedType',
41+
namedType: schema.getType('String'),
42+
});
4143

42-
expect(resolveSchemaCoordinate(schema, 'private')).to.equal(undefined);
44+
expect(resolveSchemaCoordinate(schema, 'private')).to.deep.equal(undefined);
4345

44-
expect(resolveSchemaCoordinate(schema, 'Unknown')).to.equal(undefined);
46+
expect(resolveSchemaCoordinate(schema, 'Unknown')).to.deep.equal(undefined);
4547
});
4648

4749
it('resolves a Type Field', () => {
48-
const expected = schema.getType('Business').getFields().name;
49-
expect(expected).not.to.equal(undefined);
50-
expect(resolveSchemaCoordinate(schema, 'Business.name')).to.equal(expected);
50+
expect(resolveSchemaCoordinate(schema, 'Business.name')).to.deep.equal({
51+
kind: 'Field',
52+
field: schema.getType('Business').getFields().name,
53+
});
5154

52-
expect(resolveSchemaCoordinate(schema, 'Business.unknown')).to.equal(
55+
expect(resolveSchemaCoordinate(schema, 'Business.unknown')).to.deep.equal(
5356
undefined,
5457
);
5558

56-
expect(resolveSchemaCoordinate(schema, 'Unknown.field')).to.equal(
59+
expect(resolveSchemaCoordinate(schema, 'Unknown.field')).to.deep.equal(
5760
undefined,
5861
);
5962

60-
expect(resolveSchemaCoordinate(schema, 'String.field')).to.equal(undefined);
63+
expect(resolveSchemaCoordinate(schema, 'String.field')).to.deep.equal(
64+
undefined,
65+
);
6166
});
6267

6368
it('does not resolve meta-fields', () => {
64-
expect(resolveSchemaCoordinate(schema, 'Business.__typename')).to.equal(
65-
undefined,
66-
);
69+
expect(
70+
resolveSchemaCoordinate(schema, 'Business.__typename'),
71+
).to.deep.equal(undefined);
6772
});
6873

6974
it('resolves a Input Field', () => {
70-
const expected = schema.getType('SearchCriteria').getFields().filter;
71-
expect(expected).not.to.equal(undefined);
72-
expect(resolveSchemaCoordinate(schema, 'SearchCriteria.filter')).to.equal(
73-
expected,
74-
);
75+
expect(
76+
resolveSchemaCoordinate(schema, 'SearchCriteria.filter'),
77+
).to.deep.equal({
78+
kind: 'InputField',
79+
inputField: schema.getType('SearchCriteria').getFields().filter,
80+
});
7581

76-
expect(resolveSchemaCoordinate(schema, 'SearchCriteria.unknown')).to.equal(
77-
undefined,
78-
);
82+
expect(
83+
resolveSchemaCoordinate(schema, 'SearchCriteria.unknown'),
84+
).to.deep.equal(undefined);
7985
});
8086

8187
it('resolves a Enum Value', () => {
82-
const expected = schema.getType('SearchFilter').getValue('OPEN_NOW');
83-
expect(expected).not.to.equal(undefined);
84-
expect(resolveSchemaCoordinate(schema, 'SearchFilter.OPEN_NOW')).to.equal(
85-
expected,
86-
);
88+
expect(
89+
resolveSchemaCoordinate(schema, 'SearchFilter.OPEN_NOW'),
90+
).to.deep.equal({
91+
kind: 'EnumValue',
92+
enumValue: schema.getType('SearchFilter').getValue('OPEN_NOW'),
93+
});
8794

88-
expect(resolveSchemaCoordinate(schema, 'SearchFilter.UNKNOWN')).to.equal(
89-
undefined,
90-
);
95+
expect(
96+
resolveSchemaCoordinate(schema, 'SearchFilter.UNKNOWN'),
97+
).to.deep.equal(undefined);
9198
});
9299

93100
it('resolves a Field Argument', () => {
94-
const expected = schema
95-
.getType('Query')
96-
.getFields()
97-
.searchBusiness.args.find((arg) => arg.name === 'criteria');
98-
expect(expected).not.to.equal(undefined);
99101
expect(
100102
resolveSchemaCoordinate(schema, 'Query.searchBusiness(criteria:)'),
101-
).to.equal(expected);
103+
).to.deep.equal({
104+
kind: 'FieldArgument',
105+
fieldArgument: schema
106+
.getType('Query')
107+
.getFields()
108+
.searchBusiness.args.find((arg) => arg.name === 'criteria'),
109+
});
102110

103-
expect(resolveSchemaCoordinate(schema, 'Business.name(unknown:)')).to.equal(
104-
undefined,
105-
);
111+
expect(
112+
resolveSchemaCoordinate(schema, 'Business.name(unknown:)'),
113+
).to.deep.equal(undefined);
106114

107-
expect(resolveSchemaCoordinate(schema, 'Unknown.field(arg:)')).to.equal(
108-
undefined,
109-
);
115+
expect(
116+
resolveSchemaCoordinate(schema, 'Unknown.field(arg:)'),
117+
).to.deep.equal(undefined);
110118

111-
expect(resolveSchemaCoordinate(schema, 'Business.unknown(arg:)')).to.equal(
112-
undefined,
113-
);
119+
expect(
120+
resolveSchemaCoordinate(schema, 'Business.unknown(arg:)'),
121+
).to.deep.equal(undefined);
114122

115123
expect(
116124
resolveSchemaCoordinate(schema, 'SearchCriteria.name(arg:)'),
117-
).to.equal(undefined);
125+
).to.deep.equal(undefined);
118126
});
119127

120128
it('resolves a Directive', () => {
121-
const expected = schema.getDirective('private');
122-
expect(expected).not.to.equal(undefined);
123-
expect(resolveSchemaCoordinate(schema, '@private')).to.equal(expected);
129+
expect(resolveSchemaCoordinate(schema, '@private')).to.deep.equal({
130+
kind: 'Directive',
131+
directive: schema.getDirective('private'),
132+
});
124133

125-
expect(resolveSchemaCoordinate(schema, '@unknown')).to.equal(undefined);
134+
expect(resolveSchemaCoordinate(schema, '@deprecated')).to.deep.equal({
135+
kind: 'Directive',
136+
directive: schema.getDirective('deprecated'),
137+
});
126138

127-
expect(resolveSchemaCoordinate(schema, '@Business')).to.equal(undefined);
128-
});
139+
expect(resolveSchemaCoordinate(schema, '@unknown')).to.deep.equal(
140+
undefined,
141+
);
129142

130-
it('resolves a Directive Argument', () => {
131-
const expected = schema
132-
.getDirective('private')
133-
.args.find((arg) => arg.name === 'scope');
134-
expect(expected).not.to.equal(undefined);
135-
expect(resolveSchemaCoordinate(schema, '@private(scope:)')).to.equal(
136-
expected,
143+
expect(resolveSchemaCoordinate(schema, '@Business')).to.deep.equal(
144+
undefined,
137145
);
146+
});
138147

139-
expect(resolveSchemaCoordinate(schema, '@private(unknown:)')).to.equal(
148+
it('resolves a Directive Argument', () => {
149+
expect(resolveSchemaCoordinate(schema, '@private(scope:)')).to.deep.equal({
150+
kind: 'DirectiveArgument',
151+
directiveArgument: schema
152+
.getDirective('private')
153+
.args.find((arg) => arg.name === 'scope'),
154+
});
155+
156+
expect(resolveSchemaCoordinate(schema, '@private(unknown:)')).to.deep.equal(
140157
undefined,
141158
);
142159

143-
expect(resolveSchemaCoordinate(schema, '@unknown(arg:)')).to.equal(
160+
expect(resolveSchemaCoordinate(schema, '@unknown(arg:)')).to.deep.equal(
144161
undefined,
145162
);
146163
});

src/utilities/index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ export { TypedQueryDocumentNode } from './typedQueryDocumentNode';
112112

113113
// Schema coordinates
114114
export {
115+
GraphQLSchemaElement,
115116
resolveSchemaCoordinate,
116117
resolveASTSchemaCoordinate,
117118
} from './resolveSchemaCoordinate';

src/utilities/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ export type { BreakingChange, DangerousChange } from './findBreakingChanges';
106106

107107
// Schema coordinates
108108
export {
109+
GraphQLSchemaElement,
109110
resolveSchemaCoordinate,
110111
resolveASTSchemaCoordinate,
111112
} from './resolveSchemaCoordinate';

0 commit comments

Comments
 (0)