Skip to content
This repository was archived by the owner on Sep 27, 2023. It is now read-only.

Commit ee8a79f

Browse files
committed
add optional to refTypeDataProperty
1 parent 2d1586f commit ee8a79f

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

src/TypeScriptGenerator.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -474,17 +474,14 @@ function createVisitor(
474474
);
475475
return nodes;
476476
},
477-
478477
Fragment(node) {
479478
const flattenedSelections: Selection[] = flattenArray(
480479
/* $FlowFixMe: selections have already been transformed */
481480
(node.selections as any) as ReadonlyArray<ReadonlyArray<Selection>>
482481
);
483-
484482
const numConcreteSelections = flattenedSelections.filter(
485483
s => s.concreteType
486484
).length;
487-
488485
const selections = flattenedSelections.map(selection => {
489486
if (
490487
numConcreteSelections <= 1 &&
@@ -498,16 +495,15 @@ function createVisitor(
498495
}
499496
];
500497
}
501-
502498
return [selection];
503499
});
504-
505500
state.generatedFragments.add(node.name);
506501

507502
const refTypeName = getRefTypeName(node.name);
508503
const refTypeDataProperty = objectTypeProperty(
509504
DATA_REF,
510-
ts.createTypeReferenceNode(`${node.name}$data`, undefined)
505+
ts.createTypeReferenceNode(`${node.name}$data`, undefined),
506+
{ optional: true }
511507
);
512508
refTypeDataProperty.questionToken = ts.createToken(
513509
ts.SyntaxKind.QuestionToken
@@ -528,21 +524,22 @@ function createVisitor(
528524
const dataType = ts.createTypeReferenceNode(node.name, undefined);
529525

530526
const unmasked = node.metadata != null && node.metadata.mask === false;
531-
532527
const baseType = selectionsToAST(
533528
schema,
534529
selections,
535530
state,
536531
unmasked,
537532
unmasked ? undefined : node.name
538533
);
539-
540534
const type = isPlural(node)
541535
? ts.createTypeReferenceNode(ts.createIdentifier("ReadonlyArray"), [
542536
baseType
543537
])
544538
: baseType;
545539
state.runtimeImports.add("FragmentRefs");
540+
if (state.hasConnectionResolver) {
541+
state.runtimeImports.add("ConnectionReference");
542+
}
546543

547544
return [
548545
...getEnumDefinitions(schema, state),
@@ -1085,7 +1082,7 @@ function getEnumDefinitions(
10851082
function getRefetchableQueryParentFragmentName(
10861083
state: State,
10871084
metadata: Metadata
1088-
): string | null | undefined {
1085+
): string | null {
10891086
if (
10901087
(metadata && !metadata.isRefetchableQuery) ||
10911088
(!state.useHaste && !state.useSingleArtifactDirectory)

test/TypeScriptGenerator-test.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { generateTestsFromFixtures } from "relay-test-utils-internal/lib/generat
99
import * as parseGraphQLText from "relay-test-utils-internal/lib/parseGraphQLText";
1010
import * as RelayTestSchema from "relay-test-utils-internal/lib/RelayTestSchema";
1111
import * as TypeScriptGenerator from "../src/TypeScriptGenerator";
12-
import * as Schema from 'relay-compiler/lib/core/Schema';
12+
import * as Schema from "relay-compiler/lib/core/Schema";
1313

1414
const DEPRECATED__create = (Schema as any).DEPRECATED__create;
1515

@@ -49,20 +49,23 @@ function generate(
4949
`
5050
]);
5151
const { definitions } = parseGraphQLText(schema, text);
52-
const compilerSchema = DEPRECATED__create(
53-
RelayTestSchema,
54-
schema,
55-
);
52+
const compilerSchema = DEPRECATED__create(RelayTestSchema, schema);
5653
return new GraphQLCompilerContext(compilerSchema)
5754
.addAll(definitions)
5855
.applyTransforms(TypeScriptGenerator.transforms)
5956
.documents()
6057
.map(
6158
doc =>
62-
`// ${doc.name}.graphql\n${TypeScriptGenerator.generate(compilerSchema, doc as any, {
63-
...options,
64-
normalizationIR: context ? (context.get(doc.name) as Root) : undefined
65-
})}`
59+
`// ${doc.name}.graphql\n${TypeScriptGenerator.generate(
60+
compilerSchema,
61+
doc as any,
62+
{
63+
...options,
64+
normalizationIR: context
65+
? (context.get(doc.name) as Root)
66+
: undefined
67+
}
68+
)}`
6669
)
6770
.join("\n\n");
6871
}
@@ -73,11 +76,11 @@ describe("Snapshot tests", () => {
7376
RelayTestSchema,
7477
IRTransforms.schemaExtensions
7578
);
76-
const { definitions, schema: extendedSchema } = parseGraphQLText(schema, text);
77-
const compilerSchema = DEPRECATED__create(
78-
RelayTestSchema,
79-
extendedSchema,
79+
const { definitions, schema: extendedSchema } = parseGraphQLText(
80+
schema,
81+
text
8082
);
83+
const compilerSchema = DEPRECATED__create(RelayTestSchema, extendedSchema);
8184
return new GraphQLCompilerContext(compilerSchema)
8285
.addAll(definitions)
8386
.applyTransforms([

0 commit comments

Comments
 (0)