relay-compiler 9.0.0 → 10.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/RelayCompilerBin.js.flow +169 -0
- package/bin/RelayCompilerMain.js.flow +515 -0
- package/bin/__fixtures__/plugin-module.js.flow +17 -0
- package/bin/relay-compiler +3862 -2505
- package/codegen/CodegenDirectory.js.flow +375 -0
- package/codegen/CodegenRunner.js.flow +432 -0
- package/codegen/CodegenTypes.js.flow +28 -0
- package/codegen/CodegenWatcher.js.flow +254 -0
- package/codegen/NormalizationCodeGenerator.js.flow +571 -0
- package/codegen/ReaderCodeGenerator.js.flow +512 -0
- package/codegen/RelayCodeGenerator.js.flow +85 -0
- package/codegen/RelayFileWriter.js.flow +367 -0
- package/codegen/SourceControl.js.flow +58 -0
- package/codegen/compileRelayArtifacts.js.flow +182 -0
- package/codegen/createPrintRequireModuleDependency.js.flow +21 -0
- package/codegen/sortObjectByKey.js.flow +25 -0
- package/codegen/writeRelayGeneratedFile.js.flow +223 -0
- package/core/ASTCache.js.flow +74 -0
- package/core/ASTConvert.js.flow +233 -0
- package/core/CompilerContext.js.flow +191 -0
- package/core/CompilerError.js.flow +250 -0
- package/core/DotGraphQLParser.js.flow +39 -0
- package/core/GraphQLCompilerProfiler.js.flow +341 -0
- package/core/GraphQLDerivedFromMetadata.js.flow +36 -0
- package/core/GraphQLWatchmanClient.js.flow +111 -0
- package/core/IR.js.flow +326 -0
- package/core/IRPrinter.js.flow +477 -0
- package/core/IRTransformer.js.flow +377 -0
- package/core/IRValidator.js.flow +260 -0
- package/core/IRVisitor.js.flow +150 -0
- package/core/JSModuleParser.js.flow +24 -0
- package/core/RelayCompilerScope.js.flow +199 -0
- package/core/RelayFindGraphQLTags.js.flow +119 -0
- package/core/RelayGraphQLEnumsGenerator.js.flow +55 -0
- package/core/RelayIRTransforms.js.flow +138 -0
- package/core/RelayParser.js.flow +1731 -0
- package/core/RelaySourceModuleParser.js.flow +135 -0
- package/core/Schema.js.flow +2037 -0
- package/core/SchemaUtils.js.flow +120 -0
- package/core/filterContextForNode.js.flow +50 -0
- package/core/getFieldDefinition.js.flow +156 -0
- package/core/getIdentifierForArgumentValue.js.flow +49 -0
- package/core/getIdentifierForSelection.js.flow +69 -0
- package/core/getLiteralArgumentValues.js.flow +32 -0
- package/core/getNormalizationOperationName.js.flow +19 -0
- package/core/inferRootArgumentDefinitions.js.flow +323 -0
- package/index.js +1 -1
- package/index.js.flow +200 -0
- package/language/RelayLanguagePluginInterface.js.flow +283 -0
- package/language/javascript/FindGraphQLTags.js.flow +137 -0
- package/language/javascript/RelayFlowBabelFactories.js.flow +176 -0
- package/language/javascript/RelayFlowGenerator.js.flow +1099 -0
- package/language/javascript/RelayFlowTypeTransformers.js.flow +184 -0
- package/language/javascript/RelayLanguagePluginJavaScript.js.flow +34 -0
- package/language/javascript/formatGeneratedModule.js.flow +65 -0
- package/lib/bin/RelayCompilerBin.js +10 -0
- package/lib/bin/RelayCompilerMain.js +127 -130
- package/lib/codegen/CodegenDirectory.js +2 -6
- package/lib/codegen/CodegenRunner.js +37 -76
- package/lib/codegen/CodegenWatcher.js +13 -21
- package/lib/codegen/NormalizationCodeGenerator.js +131 -50
- package/lib/codegen/ReaderCodeGenerator.js +116 -49
- package/lib/codegen/RelayCodeGenerator.js +17 -6
- package/lib/codegen/RelayFileWriter.js +15 -37
- package/lib/codegen/compileRelayArtifacts.js +16 -30
- package/lib/codegen/sortObjectByKey.js +43 -0
- package/lib/codegen/writeRelayGeneratedFile.js +86 -96
- package/lib/core/ASTCache.js +3 -4
- package/lib/core/CompilerContext.js +3 -4
- package/lib/core/CompilerError.js +27 -54
- package/lib/core/GraphQLCompilerProfiler.js +8 -12
- package/lib/core/GraphQLDerivedFromMetadata.js +1 -10
- package/lib/core/GraphQLWatchmanClient.js +4 -12
- package/lib/core/IRPrinter.js +16 -21
- package/lib/core/IRTransformer.js +8 -6
- package/lib/core/IRValidator.js +1 -3
- package/lib/core/RelayCompilerScope.js +4 -4
- package/lib/core/RelayGraphQLEnumsGenerator.js +12 -15
- package/lib/core/RelayIRTransforms.js +23 -13
- package/lib/core/RelayParser.js +53 -89
- package/lib/core/RelaySourceModuleParser.js +1 -3
- package/lib/core/Schema.js +106 -77
- package/lib/core/SchemaUtils.js +15 -1
- package/lib/core/getFieldDefinition.js +12 -15
- package/lib/core/getIdentifierForSelection.js +1 -1
- package/lib/core/inferRootArgumentDefinitions.js +27 -36
- package/lib/index.js +1 -3
- package/lib/language/javascript/FindGraphQLTags.js +7 -72
- package/lib/language/javascript/RelayFlowBabelFactories.js +5 -5
- package/lib/language/javascript/RelayFlowGenerator.js +131 -108
- package/lib/language/javascript/RelayFlowTypeTransformers.js +1 -3
- package/lib/reporters/ConsoleReporter.js +1 -3
- package/lib/reporters/MultiReporter.js +1 -3
- package/lib/runner/Artifacts.js +69 -170
- package/lib/runner/BufferedFilesystem.js +32 -66
- package/lib/runner/GraphQLASTNodeGroup.js +54 -120
- package/lib/runner/GraphQLNodeMap.js +14 -19
- package/lib/runner/Sources.js +70 -85
- package/lib/runner/StrictMap.js +21 -37
- package/lib/runner/getChangedNodeNames.js +30 -62
- package/lib/transforms/ApplyFragmentArgumentTransform.js +71 -31
- package/lib/transforms/ClientExtensionsTransform.js +15 -15
- package/lib/transforms/ConnectionTransform.js +26 -38
- package/lib/transforms/DeclarativeConnectionMutationTransform.js +225 -0
- package/lib/transforms/DeferStreamTransform.js +27 -17
- package/lib/transforms/DisallowTypenameOnRoot.js +55 -0
- package/lib/transforms/FieldHandleTransform.js +7 -3
- package/lib/transforms/FilterCompilerDirectivesTransform.js +29 -0
- package/lib/transforms/FlattenTransform.js +23 -19
- package/lib/transforms/GenerateIDFieldTransform.js +56 -35
- package/lib/transforms/GenerateTypeNameTransform.js +84 -10
- package/lib/transforms/InlineDataFragmentTransform.js +9 -4
- package/lib/transforms/MaskTransform.js +17 -17
- package/lib/transforms/MatchTransform.js +114 -32
- package/lib/transforms/ReactFlightComponentTransform.js +162 -0
- package/lib/transforms/RefetchableFragmentTransform.js +21 -17
- package/lib/transforms/RelayDirectiveTransform.js +8 -3
- package/lib/transforms/RequiredFieldTransform.js +380 -0
- package/lib/transforms/SkipClientExtensionsTransform.js +8 -0
- package/lib/transforms/SkipHandleFieldTransform.js +6 -2
- package/lib/transforms/SkipRedundantNodesTransform.js +9 -2
- package/lib/transforms/SkipSplitOperationTransform.js +32 -0
- package/lib/transforms/SkipUnreachableNodeTransform.js +9 -2
- package/lib/transforms/SkipUnusedVariablesTransform.js +18 -17
- package/lib/transforms/SplitModuleImportTransform.js +2 -2
- package/lib/transforms/TestOperationTransform.js +26 -20
- package/lib/transforms/ValidateGlobalVariablesTransform.js +18 -30
- package/lib/transforms/ValidateRequiredArgumentsTransform.js +12 -15
- package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +16 -30
- package/lib/transforms/ValidateUnusedVariablesTransform.js +18 -30
- package/lib/transforms/query-generators/FetchableQueryGenerator.js +161 -0
- package/lib/transforms/query-generators/NodeQueryGenerator.js +22 -3
- package/lib/transforms/query-generators/QueryQueryGenerator.js +2 -1
- package/lib/transforms/query-generators/ViewerQueryGenerator.js +1 -0
- package/lib/transforms/query-generators/index.js +23 -6
- package/lib/transforms/query-generators/utils.js +17 -16
- package/lib/util/RelayCompilerCache.js +2 -4
- package/lib/util/argumentContainsVariables.js +37 -0
- package/lib/util/dedupeJSONStringify.js +15 -12
- package/lib/util/generateAbstractTypeRefinementKey.js +24 -0
- package/lib/util/getModuleName.js +1 -1
- package/lib/util/joinArgumentDefinitions.js +3 -1
- package/package.json +7 -7
- package/relay-compiler.js +4 -4
- package/relay-compiler.min.js +4 -4
- package/reporters/ConsoleReporter.js.flow +81 -0
- package/reporters/MultiReporter.js.flow +43 -0
- package/reporters/Reporter.js.flow +19 -0
- package/runner/Artifacts.js.flow +219 -0
- package/runner/BufferedFilesystem.js.flow +194 -0
- package/runner/GraphQLASTNodeGroup.js.flow +176 -0
- package/runner/GraphQLASTUtils.js.flow +26 -0
- package/runner/GraphQLNodeMap.js.flow +55 -0
- package/runner/Sources.js.flow +228 -0
- package/runner/StrictMap.js.flow +96 -0
- package/runner/compileArtifacts.js.flow +76 -0
- package/runner/extractAST.js.flow +100 -0
- package/runner/getChangedNodeNames.js.flow +48 -0
- package/runner/getSchemaInstance.js.flow +36 -0
- package/runner/types.js.flow +37 -0
- package/transforms/ApplyFragmentArgumentTransform.js.flow +526 -0
- package/transforms/ClientExtensionsTransform.js.flow +224 -0
- package/transforms/ConnectionTransform.js.flow +855 -0
- package/transforms/DeclarativeConnectionMutationTransform.js.flow +246 -0
- package/transforms/DeferStreamTransform.js.flow +265 -0
- package/transforms/DisallowIdAsAlias.js.flow +47 -0
- package/transforms/DisallowTypenameOnRoot.js.flow +45 -0
- package/transforms/FieldHandleTransform.js.flow +79 -0
- package/transforms/FilterCompilerDirectivesTransform.js.flow +33 -0
- package/transforms/FilterDirectivesTransform.js.flow +45 -0
- package/transforms/FlattenTransform.js.flow +454 -0
- package/transforms/GenerateIDFieldTransform.js.flow +152 -0
- package/transforms/GenerateTypeNameTransform.js.flow +161 -0
- package/transforms/InlineDataFragmentTransform.js.flow +125 -0
- package/transforms/InlineFragmentsTransform.js.flow +71 -0
- package/transforms/MaskTransform.js.flow +126 -0
- package/transforms/MatchTransform.js.flow +589 -0
- package/transforms/ReactFlightComponentTransform.js.flow +195 -0
- package/transforms/RefetchableFragmentTransform.js.flow +272 -0
- package/transforms/RelayDirectiveTransform.js.flow +97 -0
- package/transforms/RequiredFieldTransform.js.flow +415 -0
- package/transforms/SkipClientExtensionsTransform.js.flow +54 -0
- package/transforms/SkipHandleFieldTransform.js.flow +44 -0
- package/transforms/SkipRedundantNodesTransform.js.flow +257 -0
- package/transforms/SkipSplitOperationTransform.js.flow +37 -0
- package/transforms/SkipUnreachableNodeTransform.js.flow +149 -0
- package/transforms/SkipUnusedVariablesTransform.js.flow +59 -0
- package/transforms/SplitModuleImportTransform.js.flow +98 -0
- package/transforms/TestOperationTransform.js.flow +142 -0
- package/transforms/TransformUtils.js.flow +26 -0
- package/transforms/ValidateGlobalVariablesTransform.js.flow +81 -0
- package/transforms/ValidateRequiredArgumentsTransform.js.flow +127 -0
- package/transforms/ValidateServerOnlyDirectivesTransform.js.flow +112 -0
- package/transforms/ValidateUnusedVariablesTransform.js.flow +89 -0
- package/transforms/query-generators/FetchableQueryGenerator.js.flow +189 -0
- package/transforms/query-generators/NodeQueryGenerator.js.flow +219 -0
- package/transforms/query-generators/QueryQueryGenerator.js.flow +57 -0
- package/transforms/query-generators/ViewerQueryGenerator.js.flow +97 -0
- package/transforms/query-generators/index.js.flow +90 -0
- package/transforms/query-generators/utils.js.flow +76 -0
- package/util/CodeMarker.js.flow +79 -0
- package/util/DefaultHandleKey.js.flow +17 -0
- package/util/RelayCompilerCache.js.flow +88 -0
- package/util/Rollout.js.flow +39 -0
- package/util/TimeReporter.js.flow +79 -0
- package/util/areEqualOSS.js.flow +123 -0
- package/util/argumentContainsVariables.js.flow +38 -0
- package/util/dedupeJSONStringify.js.flow +152 -0
- package/util/generateAbstractTypeRefinementKey.js.flow +29 -0
- package/util/getDefinitionNodeHash.js.flow +25 -0
- package/util/getModuleName.js.flow +39 -0
- package/util/joinArgumentDefinitions.js.flow +105 -0
- package/util/md5.js.flow +22 -0
- package/util/murmurHash.js.flow +94 -0
- package/util/nullthrowsOSS.js.flow +25 -0
- package/util/orList.js.flow +37 -0
- package/util/partitionArray.js.flow +37 -0
@@ -22,55 +22,19 @@ var BABYLON_OPTIONS = {
|
|
22
22
|
allowReturnOutsideFunction: true,
|
23
23
|
allowSuperOutsideMethod: true,
|
24
24
|
sourceType: 'module',
|
25
|
-
plugins: [
|
26
|
-
'asyncGenerators', 'classProperties', ['decorators', {
|
25
|
+
plugins: ['asyncGenerators', 'classProperties', ['decorators', {
|
27
26
|
decoratorsBeforeExport: true
|
28
|
-
}], 'doExpressions', 'dynamicImport', 'exportExtensions', 'flow',
|
27
|
+
}], 'doExpressions', 'dynamicImport', 'exportExtensions', ['flow', {
|
28
|
+
enums: true
|
29
|
+
}], 'functionBind', 'functionSent', 'jsx', 'nullishCoalescingOperator', 'objectRestSpread', 'optionalChaining', 'optionalCatchBinding'],
|
29
30
|
strictMode: false
|
30
31
|
};
|
31
32
|
|
32
33
|
function find(text) {
|
33
|
-
var result = [];
|
34
|
+
var result = []; // $FlowFixMe Discovered when typing babel/parser
|
35
|
+
|
34
36
|
var ast = babylon.parse(text, BABYLON_OPTIONS);
|
35
37
|
var visitors = {
|
36
|
-
CallExpression: function CallExpression(node) {
|
37
|
-
var callee = node.callee;
|
38
|
-
|
39
|
-
if (!(callee.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.name] || callee.kind === 'MemberExpression' && callee.object.type === 'Identifier' && callee.object.value === 'Relay' && callee.property.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.property.name])) {
|
40
|
-
traverse(node, visitors);
|
41
|
-
return;
|
42
|
-
}
|
43
|
-
|
44
|
-
var fragments = node.arguments[1];
|
45
|
-
|
46
|
-
if (fragments.type === 'ObjectExpression') {
|
47
|
-
fragments.properties.forEach(function (property) {
|
48
|
-
!(property.type === 'ObjectProperty' && property.key.type === 'Identifier' && property.value.type === 'TaggedTemplateExpression') ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be ' + '`key: graphql`.', node.callee.name) : invariant(false) : void 0;
|
49
|
-
!isGraphQLModernOrDeprecatedTag(property.value.tag) ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, property.value.tag.loc)) : invariant(false) : void 0;
|
50
|
-
|
51
|
-
if (isGraphQLTag(property.value.tag)) {
|
52
|
-
result.push({
|
53
|
-
keyName: property.key.name,
|
54
|
-
template: getGraphQLText(property.value.quasi),
|
55
|
-
sourceLocationOffset: getSourceLocationOffset(property.value.quasi)
|
56
|
-
});
|
57
|
-
}
|
58
|
-
});
|
59
|
-
} else {
|
60
|
-
!(fragments && fragments.type === 'TaggedTemplateExpression') ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects a second argument of fragment ' + 'definitions.', node.callee.name) : invariant(false) : void 0;
|
61
|
-
!isGraphQLModernOrDeprecatedTag(fragments.tag) ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, fragments.tag.loc)) : invariant(false) : void 0;
|
62
|
-
result.push({
|
63
|
-
keyName: null,
|
64
|
-
template: getGraphQLText(fragments.quasi),
|
65
|
-
sourceLocationOffset: getSourceLocationOffset(fragments.quasi)
|
66
|
-
});
|
67
|
-
} // Visit remaining arguments
|
68
|
-
|
69
|
-
|
70
|
-
for (var ii = 2; ii < node.arguments.length; ii++) {
|
71
|
-
visit(node.arguments[ii], visitors);
|
72
|
-
}
|
73
|
-
},
|
74
38
|
TaggedTemplateExpression: function TaggedTemplateExpression(node) {
|
75
39
|
if (isGraphQLTag(node.tag)) {
|
76
40
|
result.push({
|
@@ -85,17 +49,6 @@ function find(text) {
|
|
85
49
|
return result;
|
86
50
|
}
|
87
51
|
|
88
|
-
var CREATE_CONTAINER_FUNCTIONS = Object.create(null, {
|
89
|
-
createFragmentContainer: {
|
90
|
-
value: true
|
91
|
-
},
|
92
|
-
createPaginationContainer: {
|
93
|
-
value: true
|
94
|
-
},
|
95
|
-
createRefetchContainer: {
|
96
|
-
value: true
|
97
|
-
}
|
98
|
-
});
|
99
52
|
var IGNORED_KEYS = {
|
100
53
|
comments: true,
|
101
54
|
end: true,
|
@@ -111,20 +64,12 @@ function isGraphQLTag(tag) {
|
|
111
64
|
return tag.type === 'Identifier' && tag.name === 'graphql';
|
112
65
|
}
|
113
66
|
|
114
|
-
function isGraphQLModernOrDeprecatedTag(tag) {
|
115
|
-
return tag.type === 'Identifier' && (tag.name === 'graphql' || tag.name === 'graphql_DEPRECATED');
|
116
|
-
}
|
117
|
-
|
118
67
|
function getTemplateNode(quasi) {
|
119
68
|
var quasis = quasi.quasis;
|
120
69
|
!(quasis && quasis.length === 1) ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: Substitutions are not allowed in graphql tags.') : invariant(false) : void 0;
|
121
70
|
return quasis[0];
|
122
71
|
}
|
123
72
|
|
124
|
-
function getGraphQLText(quasi) {
|
125
|
-
return getTemplateNode(quasi).value.raw;
|
126
|
-
}
|
127
|
-
|
128
73
|
function getSourceLocationOffset(quasi) {
|
129
74
|
var loc = getTemplateNode(quasi).loc.start;
|
130
75
|
return {
|
@@ -134,17 +79,6 @@ function getSourceLocationOffset(quasi) {
|
|
134
79
|
};
|
135
80
|
}
|
136
81
|
|
137
|
-
function getSourceTextForLocation(text, loc) {
|
138
|
-
if (loc == null) {
|
139
|
-
return '(source unavailable)';
|
140
|
-
}
|
141
|
-
|
142
|
-
var lines = text.split('\n').slice(loc.start.line - 1, loc.end.line);
|
143
|
-
lines[0] = lines[0].slice(loc.start.column);
|
144
|
-
lines[lines.length - 1] = lines[lines.length - 1].slice(0, loc.end.column);
|
145
|
-
return lines.join('\n');
|
146
|
-
}
|
147
|
-
|
148
82
|
function invariant(condition, msg) {
|
149
83
|
if (!condition) {
|
150
84
|
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
@@ -156,6 +90,7 @@ function invariant(condition, msg) {
|
|
156
90
|
}
|
157
91
|
|
158
92
|
function visit(node, visitors) {
|
93
|
+
// $FlowFixMe Discovered when typing babel
|
159
94
|
var fn = visitors[node.type];
|
160
95
|
|
161
96
|
if (fn != null) {
|
@@ -18,7 +18,7 @@ var t = require('@babel/types');
|
|
18
18
|
* type NAME = any;
|
19
19
|
*/
|
20
20
|
function anyTypeAlias(name) {
|
21
|
-
return t.typeAlias(t.identifier(name),
|
21
|
+
return t.typeAlias(t.identifier(name), undefined, t.anyTypeAnnotation());
|
22
22
|
}
|
23
23
|
/**
|
24
24
|
* {|
|
@@ -51,7 +51,7 @@ function inexactObjectTypeAnnotation(props) {
|
|
51
51
|
|
52
52
|
|
53
53
|
function exportType(name, type) {
|
54
|
-
return t.exportNamedDeclaration(t.typeAlias(t.identifier(name),
|
54
|
+
return t.exportNamedDeclaration(t.typeAlias(t.identifier(name), undefined, type), [], undefined);
|
55
55
|
}
|
56
56
|
/**
|
57
57
|
* export type {A, B, C}
|
@@ -59,9 +59,9 @@ function exportType(name, type) {
|
|
59
59
|
|
60
60
|
|
61
61
|
function exportTypes(names) {
|
62
|
-
var res = t.exportNamedDeclaration(
|
62
|
+
var res = t.exportNamedDeclaration(undefined, names.map(function (name) {
|
63
63
|
return t.exportSpecifier(t.identifier(name), t.identifier(name));
|
64
|
-
}),
|
64
|
+
}), undefined);
|
65
65
|
res.exportKind = 'type';
|
66
66
|
return res;
|
67
67
|
}
|
@@ -71,7 +71,7 @@ function exportTypes(names) {
|
|
71
71
|
|
72
72
|
|
73
73
|
function declareExportOpaqueType(name, value) {
|
74
|
-
return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name),
|
74
|
+
return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name), undefined, t.genericTypeAnnotation(t.identifier(value))));
|
75
75
|
}
|
76
76
|
/**
|
77
77
|
* import type {NAMES[0], NAMES[1], ...} from 'MODULE';
|
@@ -12,10 +12,20 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
16
16
|
|
17
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
18
18
|
|
19
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
20
|
+
|
21
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
22
|
+
|
23
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
24
|
+
|
25
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
26
|
+
|
27
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
28
|
+
|
19
29
|
var FlattenTransform = require('../../transforms/FlattenTransform');
|
20
30
|
|
21
31
|
var IRVisitor = require('../../core/IRVisitor');
|
@@ -30,6 +40,12 @@ var RefetchableFragmentTransform = require('../../transforms/RefetchableFragment
|
|
30
40
|
|
31
41
|
var RelayDirectiveTransform = require('../../transforms/RelayDirectiveTransform');
|
32
42
|
|
43
|
+
var RequiredFieldTransform = require('../../transforms/RequiredFieldTransform');
|
44
|
+
|
45
|
+
var generateAbstractTypeRefinementKey = require('../../util/generateAbstractTypeRefinementKey');
|
46
|
+
|
47
|
+
var partitionArray = require('../../util/partitionArray');
|
48
|
+
|
33
49
|
var _require = require('./RelayFlowBabelFactories'),
|
34
50
|
anyTypeAlias = _require.anyTypeAlias,
|
35
51
|
declareExportOpaqueType = _require.declareExportOpaqueType,
|
@@ -148,14 +164,14 @@ function selectionsToBabel(schema, selections, state, unmasked, fragmentTypeName
|
|
148
164
|
|
149
165
|
for (var concreteType in byConcreteType) {
|
150
166
|
selectionMap = mergeSelections(selectionMap, selectionsToMap(byConcreteType[concreteType].map(function (sel) {
|
151
|
-
return (
|
167
|
+
return _objectSpread(_objectSpread({}, sel), {}, {
|
152
168
|
conditional: true
|
153
169
|
});
|
154
170
|
})));
|
155
171
|
}
|
156
172
|
|
157
173
|
var selectionMapValues = groupRefs(Array.from(selectionMap.values())).map(function (sel) {
|
158
|
-
return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, (
|
174
|
+
return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, _objectSpread(_objectSpread({}, sel), {}, {
|
159
175
|
conditional: false
|
160
176
|
}), state, unmasked, sel.concreteType) : makeProp(schema, sel, state, unmasked);
|
161
177
|
});
|
@@ -176,7 +192,7 @@ function mergeSelection(a, b) {
|
|
176
192
|
|
177
193
|
if (!a) {
|
178
194
|
if (shouldSetConditional) {
|
179
|
-
return (
|
195
|
+
return _objectSpread(_objectSpread({}, b), {}, {
|
180
196
|
conditional: true
|
181
197
|
});
|
182
198
|
}
|
@@ -184,7 +200,7 @@ function mergeSelection(a, b) {
|
|
184
200
|
return b;
|
185
201
|
}
|
186
202
|
|
187
|
-
return (
|
203
|
+
return _objectSpread(_objectSpread({}, a), {}, {
|
188
204
|
nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, nullthrows(b.nodeSelections), shouldSetConditional) : null,
|
189
205
|
conditional: a.conditional && b.conditional
|
190
206
|
});
|
@@ -193,56 +209,37 @@ function mergeSelection(a, b) {
|
|
193
209
|
function mergeSelections(a, b) {
|
194
210
|
var shouldSetConditional = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
195
211
|
var merged = new Map();
|
196
|
-
|
197
|
-
var
|
198
|
-
|
212
|
+
|
213
|
+
var _iterator = _createForOfIteratorHelper(a.entries()),
|
214
|
+
_step;
|
199
215
|
|
200
216
|
try {
|
201
|
-
for (
|
217
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
202
218
|
var _step$value = _step.value,
|
203
219
|
key = _step$value[0],
|
204
220
|
value = _step$value[1];
|
205
221
|
merged.set(key, value);
|
206
222
|
}
|
207
223
|
} catch (err) {
|
208
|
-
|
209
|
-
_iteratorError = err;
|
224
|
+
_iterator.e(err);
|
210
225
|
} finally {
|
211
|
-
|
212
|
-
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
|
213
|
-
_iterator["return"]();
|
214
|
-
}
|
215
|
-
} finally {
|
216
|
-
if (_didIteratorError) {
|
217
|
-
throw _iteratorError;
|
218
|
-
}
|
219
|
-
}
|
226
|
+
_iterator.f();
|
220
227
|
}
|
221
228
|
|
222
|
-
var
|
223
|
-
|
224
|
-
var _iteratorError2 = undefined;
|
229
|
+
var _iterator2 = _createForOfIteratorHelper(b.entries()),
|
230
|
+
_step2;
|
225
231
|
|
226
232
|
try {
|
227
|
-
for (
|
233
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
228
234
|
var _step2$value = _step2.value,
|
229
|
-
|
230
|
-
|
231
|
-
merged.set(
|
235
|
+
_key = _step2$value[0],
|
236
|
+
_value = _step2$value[1];
|
237
|
+
merged.set(_key, mergeSelection(a.get(_key), _value, shouldSetConditional));
|
232
238
|
}
|
233
239
|
} catch (err) {
|
234
|
-
|
235
|
-
_iteratorError2 = err;
|
240
|
+
_iterator2.e(err);
|
236
241
|
} finally {
|
237
|
-
|
238
|
-
if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
|
239
|
-
_iterator2["return"]();
|
240
|
-
}
|
241
|
-
} finally {
|
242
|
-
if (_didIteratorError2) {
|
243
|
-
throw _iteratorError2;
|
244
|
-
}
|
245
|
-
}
|
242
|
+
_iterator2.f();
|
246
243
|
}
|
247
244
|
|
248
245
|
return merged;
|
@@ -256,7 +253,6 @@ function createVisitor(schema, options) {
|
|
256
253
|
var state = {
|
257
254
|
customScalars: options.customScalars,
|
258
255
|
enumsHasteModule: options.enumsHasteModule,
|
259
|
-
existingFragmentNames: options.existingFragmentNames,
|
260
256
|
generatedFragments: new Set(),
|
261
257
|
generatedInputObjectTypes: {},
|
262
258
|
optionalInputFields: options.optionalInputFields,
|
@@ -271,11 +267,19 @@ function createVisitor(schema, options) {
|
|
271
267
|
return {
|
272
268
|
leave: {
|
273
269
|
Root: function Root(node) {
|
270
|
+
var _node$metadata;
|
271
|
+
|
274
272
|
var inputVariablesType = generateInputVariablesType(schema, node, state);
|
275
273
|
var inputObjectTypes = generateInputObjectTypes(state);
|
276
|
-
var
|
274
|
+
var responseTypeDefinition = selectionsToBabel(schema,
|
277
275
|
/* $FlowFixMe: selections have already been transformed */
|
278
|
-
node.selections, state, false)
|
276
|
+
node.selections, state, false);
|
277
|
+
|
278
|
+
if (((_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.childrenCanBubbleNull) === true) {
|
279
|
+
responseTypeDefinition = t.nullableTypeAnnotation(responseTypeDefinition);
|
280
|
+
}
|
281
|
+
|
282
|
+
var responseType = exportType("".concat(node.name, "Response"), responseTypeDefinition);
|
279
283
|
var operationTypes = [t.objectTypeProperty(t.identifier('variables'), t.genericTypeAnnotation(t.identifier("".concat(node.name, "Variables")))), t.objectTypeProperty(t.identifier('response'), t.genericTypeAnnotation(t.identifier("".concat(node.name, "Response"))))]; // Generate raw response type
|
280
284
|
|
281
285
|
var rawResponseType;
|
@@ -302,30 +306,20 @@ function createVisitor(schema, options) {
|
|
302
306
|
babelNodes.push.apply(babelNodes, (0, _toConsumableArray2["default"])(refetchableFragmentName ? generateFragmentRefsForRefetchable(refetchableFragmentName) : getFragmentImports(state)).concat((0, _toConsumableArray2["default"])(getEnumDefinitions(schema, state)), (0, _toConsumableArray2["default"])(inputObjectTypes), [inputVariablesType, responseType]));
|
303
307
|
|
304
308
|
if (rawResponseType) {
|
305
|
-
var
|
306
|
-
|
307
|
-
var _iteratorError3 = undefined;
|
309
|
+
var _iterator3 = _createForOfIteratorHelper(state.matchFields),
|
310
|
+
_step3;
|
308
311
|
|
309
312
|
try {
|
310
|
-
for (
|
313
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
311
314
|
var _step3$value = _step3.value,
|
312
315
|
key = _step3$value[0],
|
313
316
|
ast = _step3$value[1];
|
314
317
|
babelNodes.push(exportType(key, ast));
|
315
318
|
}
|
316
319
|
} catch (err) {
|
317
|
-
|
318
|
-
_iteratorError3 = err;
|
320
|
+
_iterator3.e(err);
|
319
321
|
} finally {
|
320
|
-
|
321
|
-
if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
|
322
|
-
_iterator3["return"]();
|
323
|
-
}
|
324
|
-
} finally {
|
325
|
-
if (_didIteratorError3) {
|
326
|
-
throw _iteratorError3;
|
327
|
-
}
|
328
|
-
}
|
322
|
+
_iterator3.f();
|
329
323
|
}
|
330
324
|
|
331
325
|
operationTypes.push(t.objectTypeProperty(t.identifier('rawResponse'), t.genericTypeAnnotation(t.identifier("".concat(node.name, "RawResponse")))));
|
@@ -336,15 +330,16 @@ function createVisitor(schema, options) {
|
|
336
330
|
return t.program(babelNodes);
|
337
331
|
},
|
338
332
|
Fragment: function Fragment(node) {
|
339
|
-
var
|
340
|
-
|
333
|
+
var _node$metadata2;
|
334
|
+
|
335
|
+
var selections = flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
341
336
|
node.selections);
|
342
337
|
var numConecreteSelections = selections.filter(function (s) {
|
343
338
|
return s.concreteType;
|
344
339
|
}).length;
|
345
340
|
selections = selections.map(function (selection) {
|
346
341
|
if (numConecreteSelections <= 1 && isTypenameSelection(selection) && !schema.isAbstractType(node.type)) {
|
347
|
-
return [(
|
342
|
+
return [_objectSpread(_objectSpread({}, selection), {}, {
|
348
343
|
concreteType: schema.getTypeString(node.type)
|
349
344
|
})];
|
350
345
|
}
|
@@ -364,25 +359,28 @@ function createVisitor(schema, options) {
|
|
364
359
|
var unmasked = node.metadata != null && node.metadata.mask === false;
|
365
360
|
var baseType = selectionsToBabel(schema, selections, state, unmasked, unmasked ? undefined : getOldFragmentTypeName(node.name));
|
366
361
|
var type = isPluralFragment ? readOnlyArrayOfType(baseType) : baseType;
|
362
|
+
|
363
|
+
if (((_node$metadata2 = node.metadata) === null || _node$metadata2 === void 0 ? void 0 : _node$metadata2.childrenCanBubbleNull) === true) {
|
364
|
+
type = t.nullableTypeAnnotation(type);
|
365
|
+
}
|
366
|
+
|
367
367
|
state.runtimeImports.add('FragmentReference');
|
368
368
|
return t.program([].concat((0, _toConsumableArray2["default"])(getFragmentImports(state)), (0, _toConsumableArray2["default"])(getEnumDefinitions(schema, state)), [importTypes(Array.from(state.runtimeImports).sort(), 'relay-runtime')], (0, _toConsumableArray2["default"])(fragmentTypes), [exportType(node.name, type), exportType(dataTypeName, dataType), exportType(refTypeName, isPluralFragment ? readOnlyArrayOfType(refType) : refType)]));
|
369
369
|
},
|
370
370
|
InlineFragment: function InlineFragment(node) {
|
371
|
-
return flattenArray(
|
372
|
-
/* $FlowFixMe: selections have already been transformed */
|
371
|
+
return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
373
372
|
node.selections).map(function (typeSelection) {
|
374
|
-
return schema.isAbstractType(node.typeCondition) ? (
|
373
|
+
return schema.isAbstractType(node.typeCondition) ? _objectSpread(_objectSpread({}, typeSelection), {}, {
|
375
374
|
conditional: true
|
376
|
-
}) : (
|
375
|
+
}) : _objectSpread(_objectSpread({}, typeSelection), {}, {
|
377
376
|
concreteType: schema.getTypeString(node.typeCondition)
|
378
377
|
});
|
379
378
|
});
|
380
379
|
},
|
381
380
|
Condition: function Condition(node) {
|
382
|
-
return flattenArray(
|
383
|
-
/* $FlowFixMe: selections have already been transformed */
|
381
|
+
return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
384
382
|
node.selections).map(function (selection) {
|
385
|
-
return (
|
383
|
+
return _objectSpread(_objectSpread({}, selection), {}, {
|
386
384
|
conditional: true
|
387
385
|
});
|
388
386
|
});
|
@@ -390,7 +388,9 @@ function createVisitor(schema, options) {
|
|
390
388
|
ScalarField: function ScalarField(node) {
|
391
389
|
return visitScalarField(schema, node, state);
|
392
390
|
},
|
393
|
-
LinkedField:
|
391
|
+
LinkedField: function LinkedField(node) {
|
392
|
+
return visitLinkedField(schema, node);
|
393
|
+
},
|
394
394
|
ModuleImport: function ModuleImport(node) {
|
395
395
|
return [{
|
396
396
|
key: '__fragmentPropName',
|
@@ -417,26 +417,61 @@ function createVisitor(schema, options) {
|
|
417
417
|
}
|
418
418
|
|
419
419
|
function visitNodeWithSelectionsOnly(node) {
|
420
|
-
return flattenArray(
|
421
|
-
/* $FlowFixMe: selections have already been transformed */
|
420
|
+
return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
422
421
|
node.selections);
|
423
422
|
}
|
424
423
|
|
425
424
|
function visitScalarField(schema, node, state) {
|
425
|
+
var _node$metadata3;
|
426
|
+
|
427
|
+
var requiredMetadata = (_node$metadata3 = node.metadata) === null || _node$metadata3 === void 0 ? void 0 : _node$metadata3.required;
|
428
|
+
var nodeType = requiredMetadata != null ? schema.getNonNullType(node.type) : node.type;
|
426
429
|
return [{
|
427
430
|
key: node.alias,
|
428
431
|
schemaName: node.name,
|
429
|
-
value: transformScalarType(schema,
|
432
|
+
value: transformScalarType(schema, nodeType, state)
|
430
433
|
}];
|
431
434
|
}
|
432
435
|
|
433
|
-
function
|
436
|
+
function getLinkedFieldNodeType(schema, node) {
|
437
|
+
var _node$metadata4, _node$metadata5;
|
438
|
+
|
439
|
+
var requiredMetadata = (_node$metadata4 = node.metadata) === null || _node$metadata4 === void 0 ? void 0 : _node$metadata4.required;
|
440
|
+
|
441
|
+
if (requiredMetadata != null) {
|
442
|
+
return schema.getNonNullType(node.type);
|
443
|
+
}
|
444
|
+
|
445
|
+
if (((_node$metadata5 = node.metadata) === null || _node$metadata5 === void 0 ? void 0 : _node$metadata5.childrenCanBubbleNull) === true) {
|
446
|
+
if (schema.isList(node.type)) {
|
447
|
+
// In a plural field, nulls bubble up to the item, resulting in a list of nullable items.
|
448
|
+
return schema.mapListItemType(node.type, function (inner) {
|
449
|
+
return schema.getNullableType(inner);
|
450
|
+
});
|
451
|
+
} else if (schema.isNonNull(node.type)) {
|
452
|
+
var nullable = schema.getNullableType(node.type);
|
453
|
+
|
454
|
+
if (schema.isList(nullable)) {
|
455
|
+
return schema.getNonNullType(schema.mapListItemType(nullable, function (inner) {
|
456
|
+
return schema.getNullableType(inner);
|
457
|
+
}));
|
458
|
+
}
|
459
|
+
|
460
|
+
return nullable;
|
461
|
+
}
|
462
|
+
|
463
|
+
return node.type;
|
464
|
+
}
|
465
|
+
|
466
|
+
return node.type;
|
467
|
+
}
|
468
|
+
|
469
|
+
function visitLinkedField(schema, node) {
|
434
470
|
return [{
|
435
471
|
key: node.alias,
|
436
472
|
schemaName: node.name,
|
437
|
-
nodeType: node
|
438
|
-
nodeSelections: selectionsToMap(flattenArray(
|
439
|
-
/* $FlowFixMe: selections have already been transformed */
|
473
|
+
nodeType: getLinkedFieldNodeType(schema, node),
|
474
|
+
nodeSelections: selectionsToMap(flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
440
475
|
node.selections),
|
441
476
|
/*
|
442
477
|
* append concreteType to key so overlapping fields with different
|
@@ -526,7 +561,7 @@ function appendLocal3DPayload(types, selections, schema, state, currentType) {
|
|
526
561
|
if (moduleImport) {
|
527
562
|
// Generate an extra opaque type for client 3D fields
|
528
563
|
state.runtimeImports.add('Local3DPayload');
|
529
|
-
types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(moduleImport.documentName), exactObjectTypeAnnotation(selections.filter(function (sel) {
|
564
|
+
types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(nullthrows(moduleImport.documentName)), exactObjectTypeAnnotation(selections.filter(function (sel) {
|
530
565
|
return sel.schemaName !== 'js';
|
531
566
|
}).map(function (selection) {
|
532
567
|
return makeRawResponseProp(schema, selection, state, currentType);
|
@@ -536,19 +571,17 @@ function appendLocal3DPayload(types, selections, schema, state, currentType) {
|
|
536
571
|
|
537
572
|
|
538
573
|
function createRawResponseTypeVisitor(schema, state) {
|
539
|
-
|
574
|
+
return {
|
540
575
|
leave: {
|
541
576
|
Root: function Root(node) {
|
542
|
-
return exportType("".concat(node.name, "RawResponse"), selectionsToRawResponseBabel(schema,
|
543
|
-
/* $FlowFixMe: selections have already been transformed */
|
577
|
+
return exportType("".concat(node.name, "RawResponse"), selectionsToRawResponseBabel(schema, // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
544
578
|
node.selections, state, null));
|
545
579
|
},
|
546
580
|
InlineFragment: function InlineFragment(node) {
|
547
581
|
var typeCondition = node.typeCondition;
|
548
|
-
return flattenArray(
|
549
|
-
/* $FlowFixMe: selections have already been transformed */
|
582
|
+
return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
550
583
|
node.selections).map(function (typeSelection) {
|
551
|
-
return schema.isAbstractType(typeCondition) ? typeSelection : (
|
584
|
+
return schema.isAbstractType(typeCondition) ? typeSelection : _objectSpread(_objectSpread({}, typeSelection), {}, {
|
552
585
|
concreteType: schema.getTypeString(typeCondition)
|
553
586
|
});
|
554
587
|
});
|
@@ -557,15 +590,16 @@ function createRawResponseTypeVisitor(schema, state) {
|
|
557
590
|
return visitScalarField(schema, node, state);
|
558
591
|
},
|
559
592
|
ClientExtension: function ClientExtension(node) {
|
560
|
-
return flattenArray(
|
561
|
-
/* $FlowFixMe: selections have already been transformed */
|
593
|
+
return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
562
594
|
node.selections).map(function (sel) {
|
563
|
-
return (
|
595
|
+
return _objectSpread(_objectSpread({}, sel), {}, {
|
564
596
|
conditional: true
|
565
597
|
});
|
566
598
|
});
|
567
599
|
},
|
568
|
-
LinkedField:
|
600
|
+
LinkedField: function LinkedField(node) {
|
601
|
+
return visitLinkedField(schema, node);
|
602
|
+
},
|
569
603
|
Condition: visitNodeWithSelectionsOnly,
|
570
604
|
Defer: visitNodeWithSelectionsOnly,
|
571
605
|
Stream: visitNodeWithSelectionsOnly,
|
@@ -577,14 +611,13 @@ function createRawResponseTypeVisitor(schema, state) {
|
|
577
611
|
}
|
578
612
|
}
|
579
613
|
};
|
580
|
-
return visitor;
|
581
614
|
} // Dedupe the generated type of module selections to reduce file size
|
582
615
|
|
583
616
|
|
584
617
|
function visitRawResposneModuleImport(schema, node, state) {
|
585
618
|
var selections = node.selections,
|
586
619
|
key = node.name;
|
587
|
-
var moduleSelections = selections.filter( // $FlowFixMe selections have already been transformed
|
620
|
+
var moduleSelections = selections.filter( // $FlowFixMe[prop-missing] selections have already been transformed
|
588
621
|
function (sel) {
|
589
622
|
return sel.length && sel[0].schemaName === 'js';
|
590
623
|
}).map(function (arr) {
|
@@ -592,8 +625,7 @@ function visitRawResposneModuleImport(schema, node, state) {
|
|
592
625
|
});
|
593
626
|
|
594
627
|
if (!state.matchFields.has(key)) {
|
595
|
-
var ast = selectionsToRawResponseBabel(schema,
|
596
|
-
/* $FlowFixMe: selections have already been transformed */
|
628
|
+
var ast = selectionsToRawResponseBabel(schema, // $FlowFixMe[incompatible-cast] : selections have already been transformed
|
597
629
|
node.selections.filter(function (sel) {
|
598
630
|
return sel.length > 1 || sel[0].schemaName !== 'js';
|
599
631
|
}), state, null);
|
@@ -603,7 +635,7 @@ function visitRawResposneModuleImport(schema, node, state) {
|
|
603
635
|
return [].concat((0, _toConsumableArray2["default"])(moduleSelections), [{
|
604
636
|
key: key,
|
605
637
|
kind: 'ModuleImport',
|
606
|
-
documentName: node.
|
638
|
+
documentName: node.key
|
607
639
|
}]);
|
608
640
|
}
|
609
641
|
|
@@ -675,21 +707,21 @@ function getFragmentImports(state) {
|
|
675
707
|
|
676
708
|
if (state.usedFragments.size > 0) {
|
677
709
|
var usedFragments = Array.from(state.usedFragments).sort();
|
678
|
-
|
679
|
-
var
|
680
|
-
|
710
|
+
|
711
|
+
var _iterator4 = _createForOfIteratorHelper(usedFragments),
|
712
|
+
_step4;
|
681
713
|
|
682
714
|
try {
|
683
|
-
for (
|
715
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
684
716
|
var usedFragment = _step4.value;
|
685
717
|
var fragmentTypeName = getOldFragmentTypeName(usedFragment);
|
686
718
|
|
687
719
|
if (!state.generatedFragments.has(usedFragment)) {
|
688
|
-
if (state.useHaste
|
720
|
+
if (state.useHaste) {
|
689
721
|
// TODO(T22653277) support non-haste environments when importing
|
690
722
|
// fragments
|
691
723
|
imports.push(importTypes([fragmentTypeName], usedFragment + '.graphql'));
|
692
|
-
} else if (state.useSingleArtifactDirectory
|
724
|
+
} else if (state.useSingleArtifactDirectory) {
|
693
725
|
imports.push(importTypes([fragmentTypeName], './' + usedFragment + '.graphql'));
|
694
726
|
} else {
|
695
727
|
imports.push(anyTypeAlias(fragmentTypeName));
|
@@ -697,18 +729,9 @@ function getFragmentImports(state) {
|
|
697
729
|
}
|
698
730
|
}
|
699
731
|
} catch (err) {
|
700
|
-
|
701
|
-
_iteratorError4 = err;
|
732
|
+
_iterator4.e(err);
|
702
733
|
} finally {
|
703
|
-
|
704
|
-
if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
|
705
|
-
_iterator4["return"]();
|
706
|
-
}
|
707
|
-
} finally {
|
708
|
-
if (_didIteratorError4) {
|
709
|
-
throw _iteratorError4;
|
710
|
-
}
|
711
|
-
}
|
734
|
+
_iterator4.f();
|
712
735
|
}
|
713
736
|
}
|
714
737
|
|
@@ -832,7 +855,7 @@ function getDataTypeName(name) {
|
|
832
855
|
return "".concat(name, "$data");
|
833
856
|
}
|
834
857
|
|
835
|
-
var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
|
858
|
+
var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RequiredFieldTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
|
836
859
|
var DIRECTIVE_NAME = 'raw_response_type';
|
837
860
|
module.exports = {
|
838
861
|
generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'),
|
@@ -43,15 +43,13 @@ function transformNonNullableScalarType(schema, type, state, objectProps) {
|
|
43
43
|
}
|
44
44
|
|
45
45
|
function transformGraphQLScalarType(typeName, state) {
|
46
|
-
var _customType;
|
47
|
-
|
48
46
|
var customType = state.customScalars[typeName];
|
49
47
|
|
50
48
|
if (typeof customType === 'function') {
|
51
49
|
return customType(t);
|
52
50
|
}
|
53
51
|
|
54
|
-
switch (
|
52
|
+
switch (customType !== null && customType !== void 0 ? customType : typeName) {
|
55
53
|
case 'ID':
|
56
54
|
case 'String':
|
57
55
|
return t.stringTypeAnnotation();
|