relay-compiler 0.0.0-main-bfcb5c59 → 0.0.0-main-4467ae84

Sign up to get free protection for your applications and to get access to all the features.
Files changed (259) hide show
  1. package/cli.js +23 -0
  2. package/index.js +19 -3
  3. package/linux-x64/relay +0 -0
  4. package/macos-x64/relay +0 -0
  5. package/package.json +2 -26
  6. package/win-x64/relay.exe +0 -0
  7. package/bin/RelayCompilerBin.js.flow +0 -168
  8. package/bin/RelayCompilerMain.js.flow +0 -513
  9. package/bin/__fixtures__/plugin-module.js.flow +0 -17
  10. package/bin/relay-compiler +0 -19066
  11. package/codegen/CodegenDirectory.js.flow +0 -372
  12. package/codegen/CodegenRunner.js.flow +0 -424
  13. package/codegen/CodegenTypes.js.flow +0 -28
  14. package/codegen/CodegenWatcher.js.flow +0 -250
  15. package/codegen/NormalizationCodeGenerator.js.flow +0 -565
  16. package/codegen/ReaderCodeGenerator.js.flow +0 -510
  17. package/codegen/RelayCodeGenerator.js.flow +0 -85
  18. package/codegen/RelayFileWriter.js.flow +0 -365
  19. package/codegen/SourceControl.js.flow +0 -58
  20. package/codegen/compileRelayArtifacts.js.flow +0 -181
  21. package/codegen/createPrintRequireModuleDependency.js.flow +0 -19
  22. package/codegen/sortObjectByKey.js.flow +0 -25
  23. package/codegen/writeRelayGeneratedFile.js.flow +0 -235
  24. package/core/ASTCache.js.flow +0 -73
  25. package/core/ASTConvert.js.flow +0 -230
  26. package/core/CompilerContext.js.flow +0 -189
  27. package/core/CompilerError.js.flow +0 -255
  28. package/core/DotGraphQLParser.js.flow +0 -37
  29. package/core/GraphQLCompilerProfiler.js.flow +0 -341
  30. package/core/GraphQLDerivedFromMetadata.js.flow +0 -36
  31. package/core/GraphQLWatchmanClient.js.flow +0 -109
  32. package/core/IR.js.flow +0 -326
  33. package/core/IRPrinter.js.flow +0 -472
  34. package/core/IRTransformer.js.flow +0 -376
  35. package/core/IRValidator.js.flow +0 -259
  36. package/core/IRVisitor.js.flow +0 -150
  37. package/core/JSModuleParser.js.flow +0 -24
  38. package/core/RelayCompilerScope.js.flow +0 -199
  39. package/core/RelayFindGraphQLTags.js.flow +0 -118
  40. package/core/RelayGraphQLEnumsGenerator.js.flow +0 -55
  41. package/core/RelayIRTransforms.js.flow +0 -138
  42. package/core/RelayParser.js.flow +0 -1731
  43. package/core/RelaySourceModuleParser.js.flow +0 -133
  44. package/core/Schema.js.flow +0 -2035
  45. package/core/SchemaUtils.js.flow +0 -120
  46. package/core/filterContextForNode.js.flow +0 -49
  47. package/core/getFieldDefinition.js.flow +0 -156
  48. package/core/getIdentifierForArgumentValue.js.flow +0 -49
  49. package/core/getIdentifierForSelection.js.flow +0 -68
  50. package/core/getLiteralArgumentValues.js.flow +0 -32
  51. package/core/getNormalizationOperationName.js.flow +0 -19
  52. package/core/inferRootArgumentDefinitions.js.flow +0 -322
  53. package/index.js.flow +0 -198
  54. package/language/RelayLanguagePluginInterface.js.flow +0 -283
  55. package/language/javascript/FindGraphQLTags.js.flow +0 -136
  56. package/language/javascript/RelayFlowBabelFactories.js.flow +0 -176
  57. package/language/javascript/RelayFlowGenerator.js.flow +0 -1096
  58. package/language/javascript/RelayFlowTypeTransformers.js.flow +0 -181
  59. package/language/javascript/RelayLanguagePluginJavaScript.js.flow +0 -33
  60. package/language/javascript/formatGeneratedModule.js.flow +0 -65
  61. package/lib/bin/RelayCompilerBin.js +0 -143
  62. package/lib/bin/RelayCompilerMain.js +0 -486
  63. package/lib/bin/__fixtures__/plugin-module.js +0 -16
  64. package/lib/codegen/CodegenDirectory.js +0 -335
  65. package/lib/codegen/CodegenRunner.js +0 -433
  66. package/lib/codegen/CodegenTypes.js +0 -11
  67. package/lib/codegen/CodegenWatcher.js +0 -271
  68. package/lib/codegen/NormalizationCodeGenerator.js +0 -487
  69. package/lib/codegen/ReaderCodeGenerator.js +0 -473
  70. package/lib/codegen/RelayCodeGenerator.js +0 -75
  71. package/lib/codegen/RelayFileWriter.js +0 -270
  72. package/lib/codegen/SourceControl.js +0 -60
  73. package/lib/codegen/compileRelayArtifacts.js +0 -157
  74. package/lib/codegen/createPrintRequireModuleDependency.js +0 -19
  75. package/lib/codegen/sortObjectByKey.js +0 -41
  76. package/lib/codegen/writeRelayGeneratedFile.js +0 -206
  77. package/lib/core/ASTCache.js +0 -70
  78. package/lib/core/ASTConvert.js +0 -198
  79. package/lib/core/CompilerContext.js +0 -165
  80. package/lib/core/CompilerError.js +0 -252
  81. package/lib/core/DotGraphQLParser.js +0 -40
  82. package/lib/core/GraphQLCompilerProfiler.js +0 -299
  83. package/lib/core/GraphQLDerivedFromMetadata.js +0 -31
  84. package/lib/core/GraphQLWatchmanClient.js +0 -150
  85. package/lib/core/IR.js +0 -11
  86. package/lib/core/IRPrinter.js +0 -388
  87. package/lib/core/IRTransformer.js +0 -345
  88. package/lib/core/IRValidator.js +0 -226
  89. package/lib/core/IRVisitor.js +0 -45
  90. package/lib/core/JSModuleParser.js +0 -18
  91. package/lib/core/RelayCompilerScope.js +0 -183
  92. package/lib/core/RelayFindGraphQLTags.js +0 -79
  93. package/lib/core/RelayGraphQLEnumsGenerator.js +0 -50
  94. package/lib/core/RelayIRTransforms.js +0 -109
  95. package/lib/core/RelayParser.js +0 -1381
  96. package/lib/core/RelaySourceModuleParser.js +0 -104
  97. package/lib/core/Schema.js +0 -1877
  98. package/lib/core/SchemaUtils.js +0 -98
  99. package/lib/core/filterContextForNode.js +0 -50
  100. package/lib/core/getFieldDefinition.js +0 -145
  101. package/lib/core/getIdentifierForArgumentValue.js +0 -54
  102. package/lib/core/getIdentifierForSelection.js +0 -49
  103. package/lib/core/getLiteralArgumentValues.js +0 -26
  104. package/lib/core/getNormalizationOperationName.js +0 -17
  105. package/lib/core/inferRootArgumentDefinitions.js +0 -351
  106. package/lib/index.js +0 -178
  107. package/lib/language/RelayLanguagePluginInterface.js +0 -26
  108. package/lib/language/javascript/FindGraphQLTags.js +0 -126
  109. package/lib/language/javascript/RelayFlowBabelFactories.js +0 -160
  110. package/lib/language/javascript/RelayFlowGenerator.js +0 -856
  111. package/lib/language/javascript/RelayFlowTypeTransformers.js +0 -119
  112. package/lib/language/javascript/RelayLanguagePluginJavaScript.js +0 -30
  113. package/lib/language/javascript/formatGeneratedModule.js +0 -36
  114. package/lib/reporters/ConsoleReporter.js +0 -61
  115. package/lib/reporters/MultiReporter.js +0 -45
  116. package/lib/reporters/Reporter.js +0 -11
  117. package/lib/runner/Artifacts.js +0 -323
  118. package/lib/runner/BufferedFilesystem.js +0 -262
  119. package/lib/runner/GraphQLASTNodeGroup.js +0 -256
  120. package/lib/runner/GraphQLASTUtils.js +0 -23
  121. package/lib/runner/GraphQLNodeMap.js +0 -81
  122. package/lib/runner/Sources.js +0 -271
  123. package/lib/runner/StrictMap.js +0 -134
  124. package/lib/runner/compileArtifacts.js +0 -39
  125. package/lib/runner/extractAST.js +0 -77
  126. package/lib/runner/getChangedNodeNames.js +0 -82
  127. package/lib/runner/getSchemaInstance.js +0 -30
  128. package/lib/runner/types.js +0 -12
  129. package/lib/transforms/ApplyFragmentArgumentTransform.js +0 -393
  130. package/lib/transforms/ClientExtensionsTransform.js +0 -221
  131. package/lib/transforms/ConnectionTransform.js +0 -639
  132. package/lib/transforms/DeclarativeConnectionMutationTransform.js +0 -218
  133. package/lib/transforms/DeferStreamTransform.js +0 -246
  134. package/lib/transforms/DisallowIdAsAlias.js +0 -40
  135. package/lib/transforms/DisallowTypenameOnRoot.js +0 -53
  136. package/lib/transforms/FieldHandleTransform.js +0 -79
  137. package/lib/transforms/FilterCompilerDirectivesTransform.js +0 -29
  138. package/lib/transforms/FilterDirectivesTransform.js +0 -42
  139. package/lib/transforms/FlattenTransform.js +0 -306
  140. package/lib/transforms/GenerateIDFieldTransform.js +0 -135
  141. package/lib/transforms/GenerateTypeNameTransform.js +0 -149
  142. package/lib/transforms/InlineDataFragmentTransform.js +0 -100
  143. package/lib/transforms/InlineFragmentsTransform.js +0 -61
  144. package/lib/transforms/MaskTransform.js +0 -117
  145. package/lib/transforms/MatchTransform.js +0 -434
  146. package/lib/transforms/ReactFlightComponentTransform.js +0 -158
  147. package/lib/transforms/RefetchableFragmentTransform.js +0 -249
  148. package/lib/transforms/RelayDirectiveTransform.js +0 -83
  149. package/lib/transforms/RequiredFieldTransform.js +0 -369
  150. package/lib/transforms/SkipClientExtensionsTransform.js +0 -46
  151. package/lib/transforms/SkipHandleFieldTransform.js +0 -45
  152. package/lib/transforms/SkipRedundantNodesTransform.js +0 -261
  153. package/lib/transforms/SkipSplitOperationTransform.js +0 -32
  154. package/lib/transforms/SkipUnreachableNodeTransform.js +0 -158
  155. package/lib/transforms/SkipUnusedVariablesTransform.js +0 -75
  156. package/lib/transforms/SplitModuleImportTransform.js +0 -82
  157. package/lib/transforms/TestOperationTransform.js +0 -144
  158. package/lib/transforms/TransformUtils.js +0 -21
  159. package/lib/transforms/ValidateGlobalVariablesTransform.js +0 -92
  160. package/lib/transforms/ValidateRequiredArgumentsTransform.js +0 -114
  161. package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +0 -108
  162. package/lib/transforms/ValidateUnusedVariablesTransform.js +0 -96
  163. package/lib/transforms/query-generators/FetchableQueryGenerator.js +0 -157
  164. package/lib/transforms/query-generators/NodeQueryGenerator.js +0 -166
  165. package/lib/transforms/query-generators/QueryQueryGenerator.js +0 -48
  166. package/lib/transforms/query-generators/ViewerQueryGenerator.js +0 -77
  167. package/lib/transforms/query-generators/index.js +0 -60
  168. package/lib/transforms/query-generators/utils.js +0 -92
  169. package/lib/util/CodeMarker.js +0 -80
  170. package/lib/util/DefaultHandleKey.js +0 -15
  171. package/lib/util/RelayCompilerCache.js +0 -97
  172. package/lib/util/Rollout.js +0 -40
  173. package/lib/util/TimeReporter.js +0 -83
  174. package/lib/util/areEqualArgValues.js +0 -135
  175. package/lib/util/argumentContainsVariables.js +0 -37
  176. package/lib/util/dedupeJSONStringify.js +0 -160
  177. package/lib/util/generateAbstractTypeRefinementKey.js +0 -24
  178. package/lib/util/getDefinitionNodeHash.js +0 -22
  179. package/lib/util/getModuleName.js +0 -32
  180. package/lib/util/joinArgumentDefinitions.js +0 -67
  181. package/lib/util/md5.js +0 -17
  182. package/lib/util/murmurHash.js +0 -86
  183. package/lib/util/nullthrowsOSS.js +0 -23
  184. package/lib/util/orList.js +0 -36
  185. package/lib/util/partitionArray.js +0 -35
  186. package/relay-compiler.js +0 -17
  187. package/relay-compiler.min.js +0 -22
  188. package/reporters/ConsoleReporter.js.flow +0 -81
  189. package/reporters/MultiReporter.js.flow +0 -43
  190. package/reporters/Reporter.js.flow +0 -19
  191. package/runner/Artifacts.js.flow +0 -215
  192. package/runner/BufferedFilesystem.js.flow +0 -194
  193. package/runner/GraphQLASTNodeGroup.js.flow +0 -174
  194. package/runner/GraphQLASTUtils.js.flow +0 -26
  195. package/runner/GraphQLNodeMap.js.flow +0 -55
  196. package/runner/Sources.js.flow +0 -227
  197. package/runner/StrictMap.js.flow +0 -96
  198. package/runner/compileArtifacts.js.flow +0 -75
  199. package/runner/extractAST.js.flow +0 -98
  200. package/runner/getChangedNodeNames.js.flow +0 -48
  201. package/runner/getSchemaInstance.js.flow +0 -36
  202. package/runner/types.js.flow +0 -37
  203. package/transforms/ApplyFragmentArgumentTransform.js.flow +0 -524
  204. package/transforms/ClientExtensionsTransform.js.flow +0 -224
  205. package/transforms/ConnectionTransform.js.flow +0 -850
  206. package/transforms/DeclarativeConnectionMutationTransform.js.flow +0 -245
  207. package/transforms/DeferStreamTransform.js.flow +0 -263
  208. package/transforms/DisallowIdAsAlias.js.flow +0 -46
  209. package/transforms/DisallowTypenameOnRoot.js.flow +0 -44
  210. package/transforms/FieldHandleTransform.js.flow +0 -77
  211. package/transforms/FilterCompilerDirectivesTransform.js.flow +0 -33
  212. package/transforms/FilterDirectivesTransform.js.flow +0 -45
  213. package/transforms/FlattenTransform.js.flow +0 -458
  214. package/transforms/GenerateIDFieldTransform.js.flow +0 -151
  215. package/transforms/GenerateTypeNameTransform.js.flow +0 -159
  216. package/transforms/InlineDataFragmentTransform.js.flow +0 -123
  217. package/transforms/InlineFragmentsTransform.js.flow +0 -70
  218. package/transforms/MaskTransform.js.flow +0 -124
  219. package/transforms/MatchTransform.js.flow +0 -587
  220. package/transforms/ReactFlightComponentTransform.js.flow +0 -194
  221. package/transforms/RefetchableFragmentTransform.js.flow +0 -266
  222. package/transforms/RelayDirectiveTransform.js.flow +0 -96
  223. package/transforms/RequiredFieldTransform.js.flow +0 -413
  224. package/transforms/SkipClientExtensionsTransform.js.flow +0 -54
  225. package/transforms/SkipHandleFieldTransform.js.flow +0 -44
  226. package/transforms/SkipRedundantNodesTransform.js.flow +0 -255
  227. package/transforms/SkipSplitOperationTransform.js.flow +0 -37
  228. package/transforms/SkipUnreachableNodeTransform.js.flow +0 -148
  229. package/transforms/SkipUnusedVariablesTransform.js.flow +0 -59
  230. package/transforms/SplitModuleImportTransform.js.flow +0 -97
  231. package/transforms/TestOperationTransform.js.flow +0 -142
  232. package/transforms/TransformUtils.js.flow +0 -26
  233. package/transforms/ValidateGlobalVariablesTransform.js.flow +0 -80
  234. package/transforms/ValidateRequiredArgumentsTransform.js.flow +0 -126
  235. package/transforms/ValidateServerOnlyDirectivesTransform.js.flow +0 -111
  236. package/transforms/ValidateUnusedVariablesTransform.js.flow +0 -88
  237. package/transforms/query-generators/FetchableQueryGenerator.js.flow +0 -188
  238. package/transforms/query-generators/NodeQueryGenerator.js.flow +0 -217
  239. package/transforms/query-generators/QueryQueryGenerator.js.flow +0 -57
  240. package/transforms/query-generators/ViewerQueryGenerator.js.flow +0 -97
  241. package/transforms/query-generators/index.js.flow +0 -89
  242. package/transforms/query-generators/utils.js.flow +0 -76
  243. package/util/CodeMarker.js.flow +0 -79
  244. package/util/DefaultHandleKey.js.flow +0 -17
  245. package/util/RelayCompilerCache.js.flow +0 -86
  246. package/util/Rollout.js.flow +0 -39
  247. package/util/TimeReporter.js.flow +0 -79
  248. package/util/areEqualArgValues.js.flow +0 -126
  249. package/util/argumentContainsVariables.js.flow +0 -38
  250. package/util/dedupeJSONStringify.js.flow +0 -152
  251. package/util/generateAbstractTypeRefinementKey.js.flow +0 -29
  252. package/util/getDefinitionNodeHash.js.flow +0 -24
  253. package/util/getModuleName.js.flow +0 -39
  254. package/util/joinArgumentDefinitions.js.flow +0 -105
  255. package/util/md5.js.flow +0 -19
  256. package/util/murmurHash.js.flow +0 -94
  257. package/util/nullthrowsOSS.js.flow +0 -25
  258. package/util/orList.js.flow +0 -37
  259. package/util/partitionArray.js.flow +0 -37
@@ -1,322 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- */
10
-
11
- // flowlint ambiguous-object-type:error
12
-
13
- 'use strict';
14
-
15
- import type {
16
- Argument,
17
- ArgumentDefinition,
18
- Condition,
19
- Defer,
20
- Fragment,
21
- FragmentSpread,
22
- LinkedField,
23
- Root,
24
- SplitOperation,
25
- Stream,
26
- } from './IR';
27
-
28
- const CompilerContext = require('./CompilerContext');
29
- const {createCompilerError} = require('./CompilerError');
30
- const IRVisitor = require('./IRVisitor');
31
- const SchemaUtils = require('./SchemaUtils');
32
-
33
- type ArgumentMap = Map<string, ArgumentDefinition>;
34
-
35
- /**
36
- * Returns a transformed version of the input context where each document's
37
- * argument definitions are updated to accurately describe the root variables
38
- * used (or reachable) from that document:
39
- * - Fragment argument definitions are updated to include local argument
40
- * definitions and any root variables that are referenced
41
- * by the fragment (or any fragments it transitively spreads).
42
- * - Root argument definitions are updated to reflect the variables
43
- * referenced locally and all root variables referenced by any
44
- * fragments it (transitively) spreads.
45
- */
46
- function inferRootArgumentDefinitions(
47
- context: CompilerContext,
48
- ): CompilerContext {
49
- // This transform does two main tasks:
50
- // - Determine the set of root variables referenced locally in each
51
- // fragment. Note that RootArgumentDefinitions in the fragment's
52
- // argumentDefinitions can contain spurious entries for legacy
53
- // reasons. Instead of using those the fragment is traversed
54
- // to reanalyze variable usage.
55
- // - Determine the set of root variables that are transitively referenced
56
- // by each fragment, ie the union of all root variables used in the
57
- // fragment and any fragments it transitively spreads.
58
-
59
- // Cache fragments as they are transformed to avoid duplicate processing.
60
- // Because @argument values don't matter (only variable names/types),
61
- // each reachable fragment only has to be checked once.
62
- const transformed = new Map<string, ArgumentMap>();
63
- const nextContext = new CompilerContext(context.getSchema());
64
- return nextContext.addAll(
65
- Array.from(context.documents(), node => {
66
- switch (node.kind) {
67
- case 'Fragment': {
68
- const argumentDefinitions = transformFragmentArguments(
69
- context,
70
- transformed,
71
- node,
72
- );
73
- return ({
74
- ...node,
75
- argumentDefinitions: Array.from(argumentDefinitions.values()),
76
- }: Fragment);
77
- }
78
- case 'Root': {
79
- return transformRoot(context, transformed, node);
80
- }
81
- case 'SplitOperation': {
82
- return (node: SplitOperation);
83
- }
84
- default: {
85
- (node: empty);
86
- throw createCompilerError(
87
- `inferRootArgumentDefinitions: Unsupported kind '${node.kind}'.`,
88
- );
89
- }
90
- }
91
- }),
92
- );
93
- }
94
-
95
- function transformRoot(
96
- context: CompilerContext,
97
- transformed: Map<string, ArgumentMap>,
98
- root: Root,
99
- ): Root {
100
- // Ignore argument definitions, determine what root variables are
101
- // transitively referenced
102
- const argumentDefinitions = new Map();
103
- const localArgumentDefinitions = new Map();
104
- for (const [name, argDef] of root.argumentDefinitions.entries()) {
105
- if (argDef.kind === 'LocalArgumentDefinition') {
106
- localArgumentDefinitions.set(name, argDef);
107
- }
108
- }
109
- visit(context, transformed, argumentDefinitions, root);
110
- return {
111
- ...root,
112
- argumentDefinitions: Array.from(argumentDefinitions.values(), argDef => {
113
- if (argDef.kind !== 'RootArgumentDefinition') {
114
- throw createCompilerError(
115
- `inferRootArgumentDefinitions: Expected inferred variable '\$${argDef.name}' to be a root variables.`,
116
- [argDef.loc],
117
- );
118
- }
119
- const localDefinition = localArgumentDefinitions.get(argDef.name);
120
- const type = localDefinition?.type ?? argDef.type;
121
- return {
122
- defaultValue: localDefinition?.defaultValue ?? null,
123
- kind: 'LocalArgumentDefinition',
124
- loc: argDef.loc,
125
- name: argDef.name,
126
- type: type,
127
- };
128
- }),
129
- };
130
- }
131
-
132
- function transformFragmentArguments(
133
- context: CompilerContext,
134
- transformed: Map<string, ArgumentMap>,
135
- fragment: Fragment,
136
- ): ArgumentMap {
137
- const name = fragment.name;
138
- const transformedArguments = transformed.get(name);
139
- if (transformedArguments != null) {
140
- return transformedArguments;
141
- }
142
- // Start with only the explicitly defined local arguments, recover the
143
- // correct set of root variables excluding invalid @arguments values.
144
- const argumentDefinitions: ArgumentMap = new Map();
145
- fragment.argumentDefinitions.forEach(argDef => {
146
- if (argDef.kind === 'LocalArgumentDefinition') {
147
- argumentDefinitions.set(argDef.name, argDef);
148
- }
149
- });
150
- // Break cycles by initially caching a version that only has local
151
- // arguments. If the current fragment is reached again, it won't have
152
- // any root variables to add to its parents. The traversal below will
153
- // find any root variables and update the cached version of the
154
- // fragment.
155
- transformed.set(name, argumentDefinitions);
156
- visit(context, transformed, argumentDefinitions, fragment);
157
- transformed.set(name, argumentDefinitions);
158
- return argumentDefinitions;
159
- }
160
-
161
- function visit(
162
- context: CompilerContext,
163
- transformed: Map<string, ArgumentMap>,
164
- argumentDefinitions: ArgumentMap,
165
- node: Fragment | Root,
166
- ): void {
167
- IRVisitor.visit(node, {
168
- FragmentSpread(fragmentSpread: FragmentSpread) {
169
- const fragment = context.getFragment(
170
- fragmentSpread.name,
171
- fragmentSpread.loc,
172
- );
173
- const referencedFragmentArguments = transformFragmentArguments(
174
- context,
175
- transformed,
176
- fragment,
177
- );
178
- // Detect root variables being passed as the value of @arguments;
179
- // recover the expected type from the corresponding argument definitions.
180
- fragmentSpread.args.forEach(arg => {
181
- const argDef = referencedFragmentArguments.get(arg.name);
182
- if (
183
- argDef != null &&
184
- arg.value.kind === 'Variable' &&
185
- !argumentDefinitions.has(arg.value.variableName)
186
- ) {
187
- argumentDefinitions.set(arg.value.variableName, {
188
- kind: 'RootArgumentDefinition',
189
- loc: {kind: 'Derived', source: arg.loc},
190
- name: arg.value.variableName,
191
- type: argDef.type,
192
- });
193
- }
194
- });
195
- // Merge any root variables referenced by the spread fragment
196
- // into this (parent) fragment's arguments.
197
- for (const argDef of referencedFragmentArguments.values()) {
198
- if (argDef.kind === 'RootArgumentDefinition') {
199
- argumentDefinitions.set(argDef.name, argDef);
200
- }
201
- }
202
- },
203
- Argument(argument: Argument) {
204
- if (argument.value.kind === 'Literal') {
205
- return false;
206
- }
207
- const values = [argument.value];
208
- while (values.length > 0) {
209
- const currentValue = values.pop();
210
- if (currentValue.kind === 'Variable') {
211
- const type = currentValue.type ?? argument.type;
212
- if (type == null) {
213
- continue;
214
- }
215
- if (!argumentDefinitions.has(currentValue.variableName)) {
216
- // root variable
217
- argumentDefinitions.set(currentValue.variableName, {
218
- kind: 'RootArgumentDefinition',
219
- loc: {kind: 'Derived', source: argument.loc},
220
- name: currentValue.variableName,
221
- type: type,
222
- });
223
- }
224
- } else if (currentValue.kind === 'ObjectValue') {
225
- currentValue.fields.forEach(fieldValue => {
226
- if (fieldValue.value.kind !== 'Literal') {
227
- values.push(fieldValue.value);
228
- }
229
- });
230
- } else if (currentValue.kind === 'ListValue') {
231
- currentValue.items.forEach(listValue => {
232
- if (listValue.kind !== 'Literal') {
233
- values.push(listValue);
234
- }
235
- });
236
- }
237
- }
238
- return false;
239
- },
240
- Condition(condition: Condition) {
241
- const variable = condition.condition;
242
- if (variable.kind !== 'Variable') {
243
- return;
244
- }
245
- const type =
246
- variable.type ??
247
- SchemaUtils.getNonNullBooleanInput(context.getSchema());
248
- if (!argumentDefinitions.has(variable.variableName)) {
249
- // root variable
250
- argumentDefinitions.set(variable.variableName, {
251
- kind: 'RootArgumentDefinition',
252
- loc: {kind: 'Derived', source: variable.loc},
253
- name: variable.variableName,
254
- type: type,
255
- });
256
- }
257
- },
258
- Defer(defer: Defer) {
259
- const variable = defer.if;
260
- if (variable == null || variable.kind !== 'Variable') {
261
- return;
262
- }
263
- const type =
264
- variable.type ??
265
- SchemaUtils.getNonNullBooleanInput(context.getSchema());
266
- if (!argumentDefinitions.has(variable.variableName)) {
267
- // root variable
268
- argumentDefinitions.set(variable.variableName, {
269
- kind: 'RootArgumentDefinition',
270
- loc: {kind: 'Derived', source: variable.loc},
271
- name: variable.variableName,
272
- type: type,
273
- });
274
- }
275
- },
276
- Stream(stream: Stream) {
277
- [stream.if, stream.initialCount].forEach(variable => {
278
- if (variable == null || variable.kind !== 'Variable') {
279
- return;
280
- }
281
-
282
- const type =
283
- variable.type ??
284
- SchemaUtils.getNonNullBooleanInput(context.getSchema());
285
- if (!argumentDefinitions.has(variable.variableName)) {
286
- // root variable
287
- argumentDefinitions.set(variable.variableName, {
288
- kind: 'RootArgumentDefinition',
289
- loc: {kind: 'Derived', source: variable.loc},
290
- name: variable.variableName,
291
- type,
292
- });
293
- }
294
- });
295
- },
296
- LinkedField(field: LinkedField) {
297
- if (!field.handles) {
298
- return;
299
- }
300
- field.handles.forEach(handle => {
301
- const variable = handle.dynamicKey;
302
- if (variable == null) {
303
- return;
304
- }
305
- const type =
306
- variable.type ??
307
- SchemaUtils.getNullableStringInput(context.getSchema());
308
- if (!argumentDefinitions.has(variable.variableName)) {
309
- // root variable
310
- argumentDefinitions.set(variable.variableName, {
311
- kind: 'RootArgumentDefinition',
312
- loc: {kind: 'Derived', source: variable.loc},
313
- name: variable.variableName,
314
- type: type,
315
- });
316
- }
317
- });
318
- },
319
- });
320
- }
321
-
322
- module.exports = inferRootArgumentDefinitions;
package/index.js.flow DELETED
@@ -1,198 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- */
10
-
11
- // flowlint ambiguous-object-type:error
12
-
13
- 'use strict';
14
-
15
- const {main} = require('./bin/RelayCompilerMain');
16
- const CodegenDirectory = require('./codegen/CodegenDirectory');
17
- const CodegenRunner = require('./codegen/CodegenRunner');
18
- const CodegenWatcher = require('./codegen/CodegenWatcher');
19
- const compileRelayArtifacts = require('./codegen/compileRelayArtifacts');
20
- const RelayCodeGenerator = require('./codegen/RelayCodeGenerator');
21
- const RelayFileWriter = require('./codegen/RelayFileWriter');
22
- const {SourceControlMercurial} = require('./codegen/SourceControl');
23
- const writeRelayGeneratedFile = require('./codegen/writeRelayGeneratedFile');
24
- const ASTCache = require('./core/ASTCache');
25
- const ASTConvert = require('./core/ASTConvert');
26
- const CompilerContext = require('./core/CompilerContext');
27
- const CompilerError = require('./core/CompilerError');
28
- const DotGraphQLParser = require('./core/DotGraphQLParser');
29
- const filterContextForNode = require('./core/filterContextForNode');
30
- const getIdentifierForArgumentValue = require('./core/getIdentifierForArgumentValue');
31
- const getLiteralArgumentValues = require('./core/getLiteralArgumentValues');
32
- const getNormalizationOperationName = require('./core/getNormalizationOperationName');
33
- const GraphQLCompilerProfiler = require('./core/GraphQLCompilerProfiler');
34
- const {
35
- getReaderSourceDefinitionName,
36
- } = require('./core/GraphQLDerivedFromMetadata');
37
- const GraphQLWatchmanClient = require('./core/GraphQLWatchmanClient');
38
- const IRPrinter = require('./core/IRPrinter');
39
- const IRTransformer = require('./core/IRTransformer');
40
- const IRVisitor = require('./core/IRVisitor');
41
- const JSModuleParser = require('./core/JSModuleParser');
42
- const RelayFindGraphQLTags = require('./core/RelayFindGraphQLTags');
43
- const RelayIRTransforms = require('./core/RelayIRTransforms');
44
- const RelayParser = require('./core/RelayParser');
45
- const RelaySchema = require('./core/Schema');
46
- const SchemaUtils = require('./core/SchemaUtils');
47
- const FindGraphQLTags = require('./language/javascript/FindGraphQLTags');
48
- const {
49
- formatGeneratedCommonjsModule: formatGeneratedModule,
50
- } = require('./language/javascript/formatGeneratedModule');
51
- const RelayFlowGenerator = require('./language/javascript/RelayFlowGenerator');
52
- const ConsoleReporter = require('./reporters/ConsoleReporter');
53
- const MultiReporter = require('./reporters/MultiReporter');
54
- const Artifacts = require('./runner/Artifacts');
55
- const BufferedFilesystem = require('./runner/BufferedFilesystem');
56
- const compileArtifacts = require('./runner/compileArtifacts');
57
- const extractAST = require('./runner/extractAST');
58
- const getChangedNodeNames = require('./runner/getChangedNodeNames');
59
- const getSchemaInstance = require('./runner/getSchemaInstance');
60
- const GraphQLASTNodeGroup = require('./runner/GraphQLASTNodeGroup');
61
- const GraphQLASTUtils = require('./runner/GraphQLASTUtils');
62
- const GraphQLNodeMap = require('./runner/GraphQLNodeMap');
63
- const Sources = require('./runner/Sources');
64
- const StrictMap = require('./runner/StrictMap');
65
- const CodeMarker = require('./util/CodeMarker');
66
- const getDefinitionNodeHash = require('./util/getDefinitionNodeHash');
67
- const md5 = require('./util/md5');
68
- const Rollout = require('./util/Rollout');
69
- const TimeReporter = require('./util/TimeReporter');
70
-
71
- export type {Filesystem} from './codegen/CodegenDirectory';
72
- export type {
73
- WriteFiles,
74
- WriteFilesOptions,
75
- ParserConfig,
76
- WriterConfig,
77
- } from './codegen/CodegenRunner';
78
- export type {CompileResult, File} from './codegen/CodegenTypes';
79
- export type {FileFilter, WatchmanExpression} from './codegen/CodegenWatcher';
80
- export type {SourceControl} from './codegen/SourceControl';
81
- export type {RelayCompilerTransforms} from './codegen/compileRelayArtifacts';
82
- export type {IRTransform} from './core/CompilerContext';
83
- export type {
84
- Argument,
85
- ArgumentDefinition,
86
- ArgumentValue,
87
- Condition,
88
- Definition,
89
- Directive,
90
- Field,
91
- Fragment,
92
- FragmentSpread,
93
- GeneratedDefinition,
94
- Handle,
95
- InlineFragment,
96
- IR,
97
- LinkedField,
98
- ListValue,
99
- Literal,
100
- LocalArgumentDefinition,
101
- ModuleImport,
102
- Metadata,
103
- Node,
104
- ObjectFieldValue,
105
- ObjectValue,
106
- Request,
107
- Root,
108
- RootArgumentDefinition,
109
- ScalarField,
110
- Selection,
111
- SplitOperation,
112
- Variable,
113
- } from './core/IR';
114
- export type {Schema, TypeID, FieldID} from './core/Schema';
115
- export type {
116
- FormatModule,
117
- TypeGenerator,
118
- } from './language/RelayLanguagePluginInterface';
119
- export type {Reporter} from './reporters/Reporter';
120
- export type {
121
- ArtifactMap,
122
- ArtifactState,
123
- SerializedArtifactState,
124
- } from './runner/Artifacts';
125
- export type {NodeGroup} from './runner/GraphQLASTNodeGroup';
126
- export type {SourceChanges} from './runner/Sources';
127
- export type {StrictMap} from './runner/StrictMap';
128
- export type {ExtractFn} from './runner/extractAST';
129
- export type {SavedStateCollection, WatchmanFile} from './runner/types';
130
- export type {FlattenOptions} from './transforms/FlattenTransform';
131
-
132
- module.exports = {
133
- relayCompiler: main,
134
-
135
- ASTConvert,
136
- CodegenDirectory,
137
- CodegenRunner,
138
- CodegenWatcher,
139
- CodeMarker,
140
- CompilerContext,
141
- CompilerError,
142
- ConsoleReporter,
143
- DotGraphQLParser,
144
- ASTCache,
145
- IRTransformer,
146
- IRVisitor,
147
- Printer: IRPrinter,
148
- Profiler: GraphQLCompilerProfiler,
149
- Rollout,
150
- SchemaUtils,
151
- SourceControlMercurial,
152
- WatchmanClient: GraphQLWatchmanClient,
153
-
154
- filterContextForNode,
155
- getIdentifierForArgumentValue,
156
- getNormalizationOperationName,
157
- getLiteralArgumentValues,
158
-
159
- Parser: RelayParser,
160
- Schema: RelaySchema,
161
- CodeGenerator: RelayCodeGenerator,
162
- FlowGenerator: RelayFlowGenerator,
163
-
164
- FileWriter: RelayFileWriter,
165
- IRTransforms: RelayIRTransforms,
166
- JSModuleParser,
167
- MultiReporter,
168
- Runner: CodegenRunner,
169
- TimeReporter,
170
- compileRelayArtifacts,
171
- formatGeneratedModule,
172
- convertASTDocuments: ASTConvert.convertASTDocuments,
173
- transformASTSchema: ASTConvert.transformASTSchema,
174
-
175
- getReaderSourceDefinitionName,
176
-
177
- writeRelayGeneratedFile,
178
-
179
- Sources,
180
- __internal: {
181
- Artifacts,
182
- BufferedFilesystem,
183
- GraphQLASTNodeGroup,
184
- GraphQLASTUtils,
185
- GraphQLNodeMap,
186
- FindGraphQLTags,
187
- StrictMap,
188
- RelayFindGraphQLTags,
189
- compileArtifacts,
190
- extractFromJS: extractAST.extractFromJS,
191
- getChangedNodeNames,
192
- getDefinitionNodeHash,
193
- getSchemaInstance,
194
- md5,
195
- parseExecutableNode: extractAST.parseExecutableNode,
196
- toASTRecord: extractAST.toASTRecord,
197
- },
198
- };