Skip to content

Commit fc80e6b

Browse files
committed
Use empty arrays instead of undefined properties
1 parent 2eccaad commit fc80e6b

File tree

5 files changed

+18
-32
lines changed

5 files changed

+18
-32
lines changed

src/type/definition.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ export class GraphQLObjectType {
643643
name: string;
644644
description: ?string;
645645
astNode: ?ObjectTypeDefinitionNode;
646-
extensionASTNodes: ?$ReadOnlyArray<ObjectTypeExtensionNode>;
646+
extensionASTNodes: $ReadOnlyArray<ObjectTypeExtensionNode>;
647647
isTypeOf: ?GraphQLIsTypeOfFn<*, *>;
648648

649649
_typeConfig: GraphQLObjectTypeConfig<*, *>;
@@ -654,7 +654,7 @@ export class GraphQLObjectType {
654654
this.name = config.name;
655655
this.description = config.description;
656656
this.astNode = config.astNode;
657-
this.extensionASTNodes = config.extensionASTNodes;
657+
this.extensionASTNodes = config.extensionASTNodes || [];
658658
this.isTypeOf = config.isTypeOf;
659659
this._typeConfig = config;
660660
invariant(typeof config.name === 'string', 'Must provide name.');
@@ -900,7 +900,7 @@ export class GraphQLInterfaceType {
900900
name: string;
901901
description: ?string;
902902
astNode: ?InterfaceTypeDefinitionNode;
903-
extensionASTNodes: ?$ReadOnlyArray<InterfaceTypeExtensionNode>;
903+
extensionASTNodes: $ReadOnlyArray<InterfaceTypeExtensionNode>;
904904
resolveType: ?GraphQLTypeResolver<*, *>;
905905

906906
_typeConfig: GraphQLInterfaceTypeConfig<*, *>;
@@ -910,7 +910,7 @@ export class GraphQLInterfaceType {
910910
this.name = config.name;
911911
this.description = config.description;
912912
this.astNode = config.astNode;
913-
this.extensionASTNodes = config.extensionASTNodes;
913+
this.extensionASTNodes = config.extensionASTNodes || [];
914914
this.resolveType = config.resolveType;
915915
this._typeConfig = config;
916916
invariant(typeof config.name === 'string', 'Must provide name.');

src/type/schema.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export function isSchema(schema) {
7676
*/
7777
export class GraphQLSchema {
7878
astNode: ?SchemaDefinitionNode;
79-
extensionASTNodes: ?$ReadOnlyArray<SchemaExtensionNode>;
79+
extensionASTNodes: $ReadOnlyArray<SchemaExtensionNode>;
8080
_queryType: ?GraphQLObjectType;
8181
_mutationType: ?GraphQLObjectType;
8282
_subscriptionType: ?GraphQLObjectType;
@@ -87,7 +87,7 @@ export class GraphQLSchema {
8787
// Used as a cache for validateSchema().
8888
__validationErrors: ?$ReadOnlyArray<GraphQLError>;
8989
// Referenced by validateSchema().
90-
__allowedLegacyNames: ?$ReadOnlyArray<string>;
90+
__allowedLegacyNames: $ReadOnlyArray<string>;
9191

9292
constructor(config: GraphQLSchemaConfig): void {
9393
// If this schema was built from a source known to be valid, then it may be
@@ -117,14 +117,14 @@ export class GraphQLSchema {
117117
);
118118
}
119119

120-
this.__allowedLegacyNames = config.allowedLegacyNames;
120+
this.__allowedLegacyNames = config.allowedLegacyNames || [];
121121
this._queryType = config.query;
122122
this._mutationType = config.mutation;
123123
this._subscriptionType = config.subscription;
124124
// Provide specified directives (e.g. @include and @skip) by default.
125125
this._directives = config.directives || specifiedDirectives;
126126
this.astNode = config.astNode;
127-
this.extensionASTNodes = config.extensionASTNodes;
127+
this.extensionASTNodes = config.extensionASTNodes || [];
128128

129129
// Build type map now to detect any errors within this schema.
130130
let initialTypes: Array<?GraphQLNamedType> = [

src/type/validate.js

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,7 @@ function validateName(
218218
): void {
219219
// If a schema explicitly allows some legacy name which is no longer valid,
220220
// allow it to be assumed valid.
221-
if (
222-
context.schema.__allowedLegacyNames &&
223-
context.schema.__allowedLegacyNames.indexOf(node.name) !== -1
224-
) {
221+
if (context.schema.__allowedLegacyNames.indexOf(node.name) !== -1) {
225222
return;
226223
}
227224
// Ensure names are valid, however introspection types opt out.
@@ -580,14 +577,10 @@ function validateInputFields(
580577

581578
function getAllNodes<T: ASTNode, K: ASTNode>(object: {
582579
+astNode: ?T,
583-
+extensionASTNodes?: ?$ReadOnlyArray<K>,
580+
+extensionASTNodes: $ReadOnlyArray<K>,
584581
}): $ReadOnlyArray<T | K> {
585582
const { astNode, extensionASTNodes } = object;
586-
return astNode
587-
? extensionASTNodes
588-
? [astNode].concat(extensionASTNodes)
589-
: [astNode]
590-
: extensionASTNodes || [];
583+
return astNode ? [astNode].concat(extensionASTNodes) : extensionASTNodes;
591584
}
592585

593586
function getImplementsInterfaceNode(

src/utilities/__tests__/extendSchema-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ describe('extendSchema', () => {
245245
const testDirective = extendedTwiceSchema.getDirective('test');
246246

247247
expect(query.extensionASTNodes).to.have.lengthOf(2);
248-
expect(testType.extensionASTNodes).to.equal(undefined);
248+
expect(testType.extensionASTNodes).to.have.lengthOf(0);
249249

250250
const restoredExtensionAST = {
251251
kind: Kind.DOCUMENT,

src/utilities/extendSchema.js

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,7 @@ export function extendSchema(
223223
});
224224

225225
const schemaExtensionASTNodes = schemaExtensions
226-
? schema.extensionASTNodes
227-
? schema.extensionASTNodes.concat(schemaExtensions)
228-
: schemaExtensions
226+
? schema.extensionASTNodes.concat(schemaExtensions)
229227
: schema.extensionASTNodes;
230228

231229
const types = [
@@ -239,10 +237,9 @@ export function extendSchema(
239237
// Support both original legacy names and extended legacy names.
240238
const schemaAllowedLegacyNames = schema.__allowedLegacyNames;
241239
const extendAllowedLegacyNames = options && options.allowedLegacyNames;
242-
const allowedLegacyNames =
243-
schemaAllowedLegacyNames && extendAllowedLegacyNames
244-
? schemaAllowedLegacyNames.concat(extendAllowedLegacyNames)
245-
: schemaAllowedLegacyNames || extendAllowedLegacyNames;
240+
const allowedLegacyNames = extendAllowedLegacyNames
241+
? schemaAllowedLegacyNames.concat(extendAllowedLegacyNames)
242+
: schemaAllowedLegacyNames;
246243

247244
// Then produce and return a Schema with these types.
248245
return new GraphQLSchema({
@@ -301,9 +298,7 @@ export function extendSchema(
301298
function extendObjectType(type: GraphQLObjectType): GraphQLObjectType {
302299
const name = type.name;
303300
const extensionASTNodes = typeExtensionsMap[name]
304-
? type.extensionASTNodes
305-
? type.extensionASTNodes.concat(typeExtensionsMap[name])
306-
: typeExtensionsMap[name]
301+
? type.extensionASTNodes.concat(typeExtensionsMap[name])
307302
: type.extensionASTNodes;
308303
return new GraphQLObjectType({
309304
name,
@@ -321,9 +316,7 @@ export function extendSchema(
321316
): GraphQLInterfaceType {
322317
const name = type.name;
323318
const extensionASTNodes = typeExtensionsMap[name]
324-
? type.extensionASTNodes
325-
? type.extensionASTNodes.concat(typeExtensionsMap[name])
326-
: typeExtensionsMap[name]
319+
? type.extensionASTNodes.concat(typeExtensionsMap[name])
327320
: type.extensionASTNodes;
328321
return new GraphQLInterfaceType({
329322
name: type.name,

0 commit comments

Comments
 (0)