From f966ce300fe21acc709cbf29c7388e883b2f3600 Mon Sep 17 00:00:00 2001 From: William Chargin Date: Mon, 17 Sep 2018 12:07:52 -0700 Subject: [PATCH] schema: make `fields` and `clauses` exact (#843) Summary: This affords more flexibility to clients, because an exact value can be used in place of an inexact value, but not vice versa. Test Plan: Running `yarn flow` suffices. wchargin-branch: schema-exact-type-fields --- src/graphql/schema.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/graphql/schema.js b/src/graphql/schema.js index d70d6a1..437a0bc 100644 --- a/src/graphql/schema.js +++ b/src/graphql/schema.js @@ -33,8 +33,8 @@ export type ObjectId = string; // are not. export type Schema = {+[Typename]: NodeType}; export type NodeType = - | {|+type: "OBJECT", +fields: {+[Fieldname]: FieldType}|} - | {|+type: "UNION", +clauses: {+[Typename]: true}|}; + | {|+type: "OBJECT", +fields: {|+[Fieldname]: FieldType|}|} + | {|+type: "UNION", +clauses: {|+[Typename]: true|}|}; export type FieldType = | {|+type: "ID"|} | {|+type: "PRIMITIVE"|} @@ -101,7 +101,7 @@ export function object(fields: {[Fieldname]: FieldType}): NodeType { } export function union(clauses: $ReadOnlyArray): NodeType { - const clausesMap = {}; + const clausesMap: {|[Typename]: true|} = ({}: any); for (const clause of clauses) { if (clausesMap[clause] != null) { throw new Error(`duplicate union clause: "${clause}"`);