Skip to content

Commit 42f9072

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 42f9072

17 files changed

+250
-131
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

+94-63
Original file line numberDiff line numberDiff line change
@@ -31,116 +31,147 @@ 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+
type: 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+
type: 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);
51-
52-
expect(resolveSchemaCoordinate(schema, 'Business.unknown')).to.equal(
50+
const type = schema.getType('Business');
51+
const field = type.getFields().name;
52+
expect(resolveSchemaCoordinate(schema, 'Business.name')).to.deep.equal({
53+
kind: 'Field',
54+
type,
55+
field,
56+
});
57+
58+
expect(resolveSchemaCoordinate(schema, 'Business.unknown')).to.deep.equal(
5359
undefined,
5460
);
5561

56-
expect(resolveSchemaCoordinate(schema, 'Unknown.field')).to.equal(
62+
expect(resolveSchemaCoordinate(schema, 'Unknown.field')).to.deep.equal(
5763
undefined,
5864
);
5965

60-
expect(resolveSchemaCoordinate(schema, 'String.field')).to.equal(undefined);
66+
expect(resolveSchemaCoordinate(schema, 'String.field')).to.deep.equal(
67+
undefined,
68+
);
6169
});
6270

6371
it('does not resolve meta-fields', () => {
64-
expect(resolveSchemaCoordinate(schema, 'Business.__typename')).to.equal(
65-
undefined,
66-
);
72+
expect(
73+
resolveSchemaCoordinate(schema, 'Business.__typename'),
74+
).to.deep.equal(undefined);
6775
});
6876

6977
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-
);
78+
const type = schema.getType('SearchCriteria');
79+
const inputField = type.getFields().filter;
80+
expect(
81+
resolveSchemaCoordinate(schema, 'SearchCriteria.filter'),
82+
).to.deep.equal({
83+
kind: 'InputField',
84+
type,
85+
inputField,
86+
});
7587

76-
expect(resolveSchemaCoordinate(schema, 'SearchCriteria.unknown')).to.equal(
77-
undefined,
78-
);
88+
expect(
89+
resolveSchemaCoordinate(schema, 'SearchCriteria.unknown'),
90+
).to.deep.equal(undefined);
7991
});
8092

8193
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-
);
94+
const type = schema.getType('SearchFilter');
95+
const enumValue = type.getValue('OPEN_NOW');
96+
expect(
97+
resolveSchemaCoordinate(schema, 'SearchFilter.OPEN_NOW'),
98+
).to.deep.equal({
99+
kind: 'EnumValue',
100+
type,
101+
enumValue,
102+
});
87103

88-
expect(resolveSchemaCoordinate(schema, 'SearchFilter.UNKNOWN')).to.equal(
89-
undefined,
90-
);
104+
expect(
105+
resolveSchemaCoordinate(schema, 'SearchFilter.UNKNOWN'),
106+
).to.deep.equal(undefined);
91107
});
92108

93109
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);
110+
const type = schema.getType('Query');
111+
const field = type.getFields().searchBusiness;
112+
const fieldArgument = field.args.find((arg) => arg.name === 'criteria');
99113
expect(
100114
resolveSchemaCoordinate(schema, 'Query.searchBusiness(criteria:)'),
101-
).to.equal(expected);
115+
).to.deep.equal({
116+
kind: 'FieldArgument',
117+
type,
118+
field,
119+
fieldArgument,
120+
});
102121

103-
expect(resolveSchemaCoordinate(schema, 'Business.name(unknown:)')).to.equal(
104-
undefined,
105-
);
122+
expect(
123+
resolveSchemaCoordinate(schema, 'Business.name(unknown:)'),
124+
).to.deep.equal(undefined);
106125

107-
expect(resolveSchemaCoordinate(schema, 'Unknown.field(arg:)')).to.equal(
108-
undefined,
109-
);
126+
expect(
127+
resolveSchemaCoordinate(schema, 'Unknown.field(arg:)'),
128+
).to.deep.equal(undefined);
110129

111-
expect(resolveSchemaCoordinate(schema, 'Business.unknown(arg:)')).to.equal(
112-
undefined,
113-
);
130+
expect(
131+
resolveSchemaCoordinate(schema, 'Business.unknown(arg:)'),
132+
).to.deep.equal(undefined);
114133

115134
expect(
116135
resolveSchemaCoordinate(schema, 'SearchCriteria.name(arg:)'),
117-
).to.equal(undefined);
136+
).to.deep.equal(undefined);
118137
});
119138

120139
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);
140+
expect(resolveSchemaCoordinate(schema, '@private')).to.deep.equal({
141+
kind: 'Directive',
142+
directive: schema.getDirective('private'),
143+
});
124144

125-
expect(resolveSchemaCoordinate(schema, '@unknown')).to.equal(undefined);
145+
expect(resolveSchemaCoordinate(schema, '@deprecated')).to.deep.equal({
146+
kind: 'Directive',
147+
directive: schema.getDirective('deprecated'),
148+
});
126149

127-
expect(resolveSchemaCoordinate(schema, '@Business')).to.equal(undefined);
150+
expect(resolveSchemaCoordinate(schema, '@unknown')).to.deep.equal(
151+
undefined,
152+
);
153+
154+
expect(resolveSchemaCoordinate(schema, '@Business')).to.deep.equal(
155+
undefined,
156+
);
128157
});
129158

130159
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,
160+
const directive = schema.getDirective('private');
161+
const directiveArgument = directive.args.find(
162+
(arg) => arg.name === 'scope',
137163
);
164+
expect(resolveSchemaCoordinate(schema, '@private(scope:)')).to.deep.equal({
165+
kind: 'DirectiveArgument',
166+
directive,
167+
directiveArgument,
168+
});
138169

139-
expect(resolveSchemaCoordinate(schema, '@private(unknown:)')).to.equal(
170+
expect(resolveSchemaCoordinate(schema, '@private(unknown:)')).to.deep.equal(
140171
undefined,
141172
);
142173

143-
expect(resolveSchemaCoordinate(schema, '@unknown(arg:)')).to.equal(
174+
expect(resolveSchemaCoordinate(schema, '@unknown(arg:)')).to.deep.equal(
144175
undefined,
145176
);
146177
});

0 commit comments

Comments
 (0)