@ardatan/relay-compiler 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/LICENSE +21 -0
  2. package/bin/RelayCompilerBin.js.flow +169 -0
  3. package/bin/RelayCompilerMain.js.flow +515 -0
  4. package/bin/__fixtures__/plugin-module.js.flow +17 -0
  5. package/bin/relay-compiler +19066 -0
  6. package/codegen/CodegenDirectory.js.flow +375 -0
  7. package/codegen/CodegenRunner.js.flow +432 -0
  8. package/codegen/CodegenTypes.js.flow +28 -0
  9. package/codegen/CodegenWatcher.js.flow +254 -0
  10. package/codegen/NormalizationCodeGenerator.js.flow +566 -0
  11. package/codegen/ReaderCodeGenerator.js.flow +512 -0
  12. package/codegen/RelayCodeGenerator.js.flow +85 -0
  13. package/codegen/RelayFileWriter.js.flow +367 -0
  14. package/codegen/SourceControl.js.flow +58 -0
  15. package/codegen/compileRelayArtifacts.js.flow +182 -0
  16. package/codegen/createPrintRequireModuleDependency.js.flow +19 -0
  17. package/codegen/sortObjectByKey.js.flow +25 -0
  18. package/codegen/writeRelayGeneratedFile.js.flow +239 -0
  19. package/core/ASTCache.js.flow +74 -0
  20. package/core/ASTConvert.js.flow +233 -0
  21. package/core/CompilerContext.js.flow +191 -0
  22. package/core/CompilerError.js.flow +255 -0
  23. package/core/DotGraphQLParser.js.flow +39 -0
  24. package/core/GraphQLCompilerProfiler.js.flow +341 -0
  25. package/core/GraphQLDerivedFromMetadata.js.flow +36 -0
  26. package/core/GraphQLWatchmanClient.js.flow +111 -0
  27. package/core/IR.js.flow +326 -0
  28. package/core/IRPrinter.js.flow +478 -0
  29. package/core/IRTransformer.js.flow +377 -0
  30. package/core/IRValidator.js.flow +260 -0
  31. package/core/IRVisitor.js.flow +150 -0
  32. package/core/JSModuleParser.js.flow +24 -0
  33. package/core/RelayCompilerScope.js.flow +199 -0
  34. package/core/RelayFindGraphQLTags.js.flow +119 -0
  35. package/core/RelayGraphQLEnumsGenerator.js.flow +55 -0
  36. package/core/RelayIRTransforms.js.flow +138 -0
  37. package/core/RelayParser.js.flow +1734 -0
  38. package/core/RelaySourceModuleParser.js.flow +135 -0
  39. package/core/Schema.js.flow +2037 -0
  40. package/core/SchemaUtils.js.flow +120 -0
  41. package/core/filterContextForNode.js.flow +50 -0
  42. package/core/getFieldDefinition.js.flow +156 -0
  43. package/core/getIdentifierForArgumentValue.js.flow +49 -0
  44. package/core/getIdentifierForSelection.js.flow +69 -0
  45. package/core/getLiteralArgumentValues.js.flow +32 -0
  46. package/core/getNormalizationOperationName.js.flow +19 -0
  47. package/core/inferRootArgumentDefinitions.js.flow +323 -0
  48. package/index.js +10 -0
  49. package/index.js.flow +200 -0
  50. package/language/RelayLanguagePluginInterface.js.flow +283 -0
  51. package/language/javascript/FindGraphQLTags.js.flow +137 -0
  52. package/language/javascript/RelayFlowBabelFactories.js.flow +176 -0
  53. package/language/javascript/RelayFlowGenerator.js.flow +1100 -0
  54. package/language/javascript/RelayFlowTypeTransformers.js.flow +184 -0
  55. package/language/javascript/RelayLanguagePluginJavaScript.js.flow +34 -0
  56. package/language/javascript/formatGeneratedModule.js.flow +65 -0
  57. package/lib/bin/RelayCompilerBin.js +143 -0
  58. package/lib/bin/RelayCompilerMain.js +486 -0
  59. package/lib/bin/__fixtures__/plugin-module.js +16 -0
  60. package/lib/codegen/CodegenDirectory.js +336 -0
  61. package/lib/codegen/CodegenRunner.js +433 -0
  62. package/lib/codegen/CodegenTypes.js +11 -0
  63. package/lib/codegen/CodegenWatcher.js +271 -0
  64. package/lib/codegen/NormalizationCodeGenerator.js +480 -0
  65. package/lib/codegen/ReaderCodeGenerator.js +472 -0
  66. package/lib/codegen/RelayCodeGenerator.js +68 -0
  67. package/lib/codegen/RelayFileWriter.js +270 -0
  68. package/lib/codegen/SourceControl.js +60 -0
  69. package/lib/codegen/compileRelayArtifacts.js +157 -0
  70. package/lib/codegen/createPrintRequireModuleDependency.js +19 -0
  71. package/lib/codegen/sortObjectByKey.js +41 -0
  72. package/lib/codegen/writeRelayGeneratedFile.js +208 -0
  73. package/lib/core/ASTCache.js +70 -0
  74. package/lib/core/ASTConvert.js +198 -0
  75. package/lib/core/CompilerContext.js +165 -0
  76. package/lib/core/CompilerError.js +251 -0
  77. package/lib/core/DotGraphQLParser.js +40 -0
  78. package/lib/core/GraphQLCompilerProfiler.js +299 -0
  79. package/lib/core/GraphQLDerivedFromMetadata.js +31 -0
  80. package/lib/core/GraphQLWatchmanClient.js +150 -0
  81. package/lib/core/IR.js +11 -0
  82. package/lib/core/IRPrinter.js +389 -0
  83. package/lib/core/IRTransformer.js +345 -0
  84. package/lib/core/IRValidator.js +226 -0
  85. package/lib/core/IRVisitor.js +45 -0
  86. package/lib/core/JSModuleParser.js +18 -0
  87. package/lib/core/RelayCompilerScope.js +149 -0
  88. package/lib/core/RelayFindGraphQLTags.js +79 -0
  89. package/lib/core/RelayGraphQLEnumsGenerator.js +50 -0
  90. package/lib/core/RelayIRTransforms.js +109 -0
  91. package/lib/core/RelayParser.js +1382 -0
  92. package/lib/core/RelaySourceModuleParser.js +104 -0
  93. package/lib/core/Schema.js +1877 -0
  94. package/lib/core/SchemaUtils.js +98 -0
  95. package/lib/core/filterContextForNode.js +49 -0
  96. package/lib/core/getFieldDefinition.js +145 -0
  97. package/lib/core/getIdentifierForArgumentValue.js +53 -0
  98. package/lib/core/getIdentifierForSelection.js +48 -0
  99. package/lib/core/getLiteralArgumentValues.js +26 -0
  100. package/lib/core/getNormalizationOperationName.js +17 -0
  101. package/lib/core/inferRootArgumentDefinitions.js +351 -0
  102. package/lib/index.js +178 -0
  103. package/lib/language/RelayLanguagePluginInterface.js +14 -0
  104. package/lib/language/javascript/FindGraphQLTags.js +126 -0
  105. package/lib/language/javascript/RelayFlowBabelFactories.js +160 -0
  106. package/lib/language/javascript/RelayFlowGenerator.js +857 -0
  107. package/lib/language/javascript/RelayFlowTypeTransformers.js +119 -0
  108. package/lib/language/javascript/RelayLanguagePluginJavaScript.js +30 -0
  109. package/lib/language/javascript/formatGeneratedModule.js +36 -0
  110. package/lib/reporters/ConsoleReporter.js +61 -0
  111. package/lib/reporters/MultiReporter.js +45 -0
  112. package/lib/reporters/Reporter.js +11 -0
  113. package/lib/runner/Artifacts.js +323 -0
  114. package/lib/runner/BufferedFilesystem.js +261 -0
  115. package/lib/runner/GraphQLASTNodeGroup.js +256 -0
  116. package/lib/runner/GraphQLASTUtils.js +23 -0
  117. package/lib/runner/GraphQLNodeMap.js +81 -0
  118. package/lib/runner/Sources.js +271 -0
  119. package/lib/runner/StrictMap.js +134 -0
  120. package/lib/runner/compileArtifacts.js +39 -0
  121. package/lib/runner/extractAST.js +77 -0
  122. package/lib/runner/getChangedNodeNames.js +82 -0
  123. package/lib/runner/getSchemaInstance.js +30 -0
  124. package/lib/runner/types.js +12 -0
  125. package/lib/transforms/ApplyFragmentArgumentTransform.js +393 -0
  126. package/lib/transforms/ClientExtensionsTransform.js +222 -0
  127. package/lib/transforms/ConnectionTransform.js +643 -0
  128. package/lib/transforms/DeclarativeConnectionMutationTransform.js +221 -0
  129. package/lib/transforms/DeferStreamTransform.js +247 -0
  130. package/lib/transforms/DisallowIdAsAlias.js +41 -0
  131. package/lib/transforms/DisallowTypenameOnRoot.js +53 -0
  132. package/lib/transforms/FieldHandleTransform.js +81 -0
  133. package/lib/transforms/FilterCompilerDirectivesTransform.js +29 -0
  134. package/lib/transforms/FilterDirectivesTransform.js +41 -0
  135. package/lib/transforms/FlattenTransform.js +308 -0
  136. package/lib/transforms/GenerateIDFieldTransform.js +137 -0
  137. package/lib/transforms/GenerateTypeNameTransform.js +155 -0
  138. package/lib/transforms/InlineDataFragmentTransform.js +104 -0
  139. package/lib/transforms/InlineFragmentsTransform.js +63 -0
  140. package/lib/transforms/MaskTransform.js +121 -0
  141. package/lib/transforms/MatchTransform.js +438 -0
  142. package/lib/transforms/ReactFlightComponentTransform.js +161 -0
  143. package/lib/transforms/RefetchableFragmentTransform.js +249 -0
  144. package/lib/transforms/RelayDirectiveTransform.js +85 -0
  145. package/lib/transforms/RequiredFieldTransform.js +373 -0
  146. package/lib/transforms/SkipClientExtensionsTransform.js +49 -0
  147. package/lib/transforms/SkipHandleFieldTransform.js +45 -0
  148. package/lib/transforms/SkipRedundantNodesTransform.js +255 -0
  149. package/lib/transforms/SkipSplitOperationTransform.js +32 -0
  150. package/lib/transforms/SkipUnreachableNodeTransform.js +158 -0
  151. package/lib/transforms/SkipUnusedVariablesTransform.js +74 -0
  152. package/lib/transforms/SplitModuleImportTransform.js +85 -0
  153. package/lib/transforms/TestOperationTransform.js +145 -0
  154. package/lib/transforms/TransformUtils.js +21 -0
  155. package/lib/transforms/ValidateGlobalVariablesTransform.js +91 -0
  156. package/lib/transforms/ValidateRequiredArgumentsTransform.js +118 -0
  157. package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +111 -0
  158. package/lib/transforms/ValidateUnusedVariablesTransform.js +96 -0
  159. package/lib/transforms/query-generators/FetchableQueryGenerator.js +157 -0
  160. package/lib/transforms/query-generators/NodeQueryGenerator.js +166 -0
  161. package/lib/transforms/query-generators/QueryQueryGenerator.js +48 -0
  162. package/lib/transforms/query-generators/ViewerQueryGenerator.js +77 -0
  163. package/lib/transforms/query-generators/index.js +60 -0
  164. package/lib/transforms/query-generators/utils.js +92 -0
  165. package/lib/util/CodeMarker.js +80 -0
  166. package/lib/util/DefaultHandleKey.js +15 -0
  167. package/lib/util/RelayCompilerCache.js +98 -0
  168. package/lib/util/Rollout.js +40 -0
  169. package/lib/util/TimeReporter.js +83 -0
  170. package/lib/util/areEqualArgValues.js +135 -0
  171. package/lib/util/argumentContainsVariables.js +37 -0
  172. package/lib/util/dedupeJSONStringify.js +160 -0
  173. package/lib/util/generateAbstractTypeRefinementKey.js +24 -0
  174. package/lib/util/getDefinitionNodeHash.js +22 -0
  175. package/lib/util/getModuleName.js +32 -0
  176. package/lib/util/joinArgumentDefinitions.js +66 -0
  177. package/lib/util/md5.js +17 -0
  178. package/lib/util/murmurHash.js +86 -0
  179. package/lib/util/nullthrowsOSS.js +23 -0
  180. package/lib/util/orList.js +36 -0
  181. package/lib/util/partitionArray.js +35 -0
  182. package/package.json +42 -0
  183. package/relay-compiler.js +17 -0
  184. package/relay-compiler.min.js +22 -0
  185. package/reporters/ConsoleReporter.js.flow +81 -0
  186. package/reporters/MultiReporter.js.flow +43 -0
  187. package/reporters/Reporter.js.flow +19 -0
  188. package/runner/Artifacts.js.flow +219 -0
  189. package/runner/BufferedFilesystem.js.flow +194 -0
  190. package/runner/GraphQLASTNodeGroup.js.flow +176 -0
  191. package/runner/GraphQLASTUtils.js.flow +26 -0
  192. package/runner/GraphQLNodeMap.js.flow +55 -0
  193. package/runner/Sources.js.flow +228 -0
  194. package/runner/StrictMap.js.flow +96 -0
  195. package/runner/compileArtifacts.js.flow +76 -0
  196. package/runner/extractAST.js.flow +100 -0
  197. package/runner/getChangedNodeNames.js.flow +48 -0
  198. package/runner/getSchemaInstance.js.flow +36 -0
  199. package/runner/types.js.flow +37 -0
  200. package/transforms/ApplyFragmentArgumentTransform.js.flow +526 -0
  201. package/transforms/ClientExtensionsTransform.js.flow +226 -0
  202. package/transforms/ConnectionTransform.js.flow +859 -0
  203. package/transforms/DeclarativeConnectionMutationTransform.js.flow +250 -0
  204. package/transforms/DeferStreamTransform.js.flow +266 -0
  205. package/transforms/DisallowIdAsAlias.js.flow +48 -0
  206. package/transforms/DisallowTypenameOnRoot.js.flow +45 -0
  207. package/transforms/FieldHandleTransform.js.flow +81 -0
  208. package/transforms/FilterCompilerDirectivesTransform.js.flow +33 -0
  209. package/transforms/FilterDirectivesTransform.js.flow +45 -0
  210. package/transforms/FlattenTransform.js.flow +462 -0
  211. package/transforms/GenerateIDFieldTransform.js.flow +154 -0
  212. package/transforms/GenerateTypeNameTransform.js.flow +167 -0
  213. package/transforms/InlineDataFragmentTransform.js.flow +129 -0
  214. package/transforms/InlineFragmentsTransform.js.flow +73 -0
  215. package/transforms/MaskTransform.js.flow +130 -0
  216. package/transforms/MatchTransform.js.flow +593 -0
  217. package/transforms/ReactFlightComponentTransform.js.flow +198 -0
  218. package/transforms/RefetchableFragmentTransform.js.flow +272 -0
  219. package/transforms/RelayDirectiveTransform.js.flow +99 -0
  220. package/transforms/RequiredFieldTransform.js.flow +419 -0
  221. package/transforms/SkipClientExtensionsTransform.js.flow +57 -0
  222. package/transforms/SkipHandleFieldTransform.js.flow +45 -0
  223. package/transforms/SkipRedundantNodesTransform.js.flow +259 -0
  224. package/transforms/SkipSplitOperationTransform.js.flow +37 -0
  225. package/transforms/SkipUnreachableNodeTransform.js.flow +149 -0
  226. package/transforms/SkipUnusedVariablesTransform.js.flow +59 -0
  227. package/transforms/SplitModuleImportTransform.js.flow +101 -0
  228. package/transforms/TestOperationTransform.js.flow +143 -0
  229. package/transforms/TransformUtils.js.flow +26 -0
  230. package/transforms/ValidateGlobalVariablesTransform.js.flow +81 -0
  231. package/transforms/ValidateRequiredArgumentsTransform.js.flow +131 -0
  232. package/transforms/ValidateServerOnlyDirectivesTransform.js.flow +115 -0
  233. package/transforms/ValidateUnusedVariablesTransform.js.flow +89 -0
  234. package/transforms/query-generators/FetchableQueryGenerator.js.flow +189 -0
  235. package/transforms/query-generators/NodeQueryGenerator.js.flow +219 -0
  236. package/transforms/query-generators/QueryQueryGenerator.js.flow +57 -0
  237. package/transforms/query-generators/ViewerQueryGenerator.js.flow +97 -0
  238. package/transforms/query-generators/index.js.flow +90 -0
  239. package/transforms/query-generators/utils.js.flow +76 -0
  240. package/util/CodeMarker.js.flow +79 -0
  241. package/util/DefaultHandleKey.js.flow +17 -0
  242. package/util/RelayCompilerCache.js.flow +88 -0
  243. package/util/Rollout.js.flow +39 -0
  244. package/util/TimeReporter.js.flow +79 -0
  245. package/util/areEqualArgValues.js.flow +126 -0
  246. package/util/argumentContainsVariables.js.flow +38 -0
  247. package/util/dedupeJSONStringify.js.flow +152 -0
  248. package/util/generateAbstractTypeRefinementKey.js.flow +29 -0
  249. package/util/getDefinitionNodeHash.js.flow +25 -0
  250. package/util/getModuleName.js.flow +39 -0
  251. package/util/joinArgumentDefinitions.js.flow +105 -0
  252. package/util/md5.js.flow +22 -0
  253. package/util/murmurHash.js.flow +94 -0
  254. package/util/nullthrowsOSS.js.flow +25 -0
  255. package/util/orList.js.flow +37 -0
  256. package/util/partitionArray.js.flow +37 -0
@@ -0,0 +1,149 @@
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
+ *
8
+ * @format
9
+ */
10
+ // flowlint ambiguous-object-type:error
11
+ 'use strict';
12
+
13
+ var _require = require('./CompilerError'),
14
+ createUserError = _require.createUserError,
15
+ eachWithCombinedError = _require.eachWithCombinedError;
16
+
17
+ /**
18
+ * Creates a scope for a `Root`, with each argument mapped to a variable of the
19
+ * same name. Example:
20
+ *
21
+ * Query:
22
+ * query Foo($id: ID, $size: Int = 42) { ... }
23
+ *
24
+ * Scope:
25
+ * {
26
+ * id: $id,
27
+ * size: $size,
28
+ * }
29
+ *
30
+ * Note that even though a default value is defined for $size, the scope must
31
+ * assume that this could be overridden at runtime. The value cannot be decided
32
+ * statically and therefore is set to a variable.
33
+ */
34
+ function getRootScope(definitions) {
35
+ var scope = {};
36
+ definitions.forEach(function (definition) {
37
+ scope[definition.name] = {
38
+ kind: 'Variable',
39
+ loc: definition.loc,
40
+ variableName: definition.name,
41
+ type: definition.type
42
+ };
43
+ });
44
+ return scope;
45
+ }
46
+ /**
47
+ * Creates a scope for a `Fragment` by translating fragment spread arguments in
48
+ * the context of a parent scope into a new scope and validating them against
49
+ * the argument definitions.
50
+ *
51
+ *
52
+ * Parent Scope:
53
+ * {
54
+ * active: $parentActive
55
+ * }
56
+ *
57
+ * Fragment Spread:
58
+ * ...Bar(size: 42, enabled: $active)
59
+ *
60
+ * Fragment:
61
+ * fragment Bar on Foo @argumentDefinitions(
62
+ * id: {type: "ID"}
63
+ * size: {type: "Int"}
64
+ * enabled: {type: "Boolean}
65
+ * scale: {type: "Int", imports: "pixelRatio"}
66
+ * )
67
+ *
68
+ * Scope:
69
+ * {
70
+ * // No argument is provided for $id, it gets the default value which in this
71
+ * // case is `null`:
72
+ * id: null,
73
+ *
74
+ * // The parent passes 42 as a literal value for $size:
75
+ * size: 42,
76
+ *
77
+ * // The parent passes a variable as the value of $enabled. This variable is
78
+ * // resolved in the parent scope to the value $parentActive, which becomes
79
+ * // the value of $enabled:
80
+ * $enabled: $parentActive,
81
+ *
82
+ * // $scale imports pixelRatio from the root scope. Since any argument in a
83
+ * // root scope maps to a variable of the same name, that means the value of
84
+ * // pixelRatio in the root is $pixelRatio:
85
+ * $scale: $pixelRatio,
86
+ * }
87
+ */
88
+
89
+
90
+ function getFragmentScope(schema, definitions, args, parentScope, spread) {
91
+ var argMap = new Map();
92
+ args.forEach(function (arg) {
93
+ if (arg.value.kind === 'Literal') {
94
+ argMap.set(arg.name, arg.value);
95
+ } else if (arg.value.kind === 'Variable') {
96
+ argMap.set(arg.name, parentScope[arg.value.variableName]);
97
+ }
98
+ });
99
+ var fragmentScope = {};
100
+ eachWithCombinedError(definitions, function (definition) {
101
+ if (definition.kind === 'RootArgumentDefinition') {
102
+ if (argMap.has(definition.name)) {
103
+ var _argNode$loc;
104
+
105
+ var argNode = args.find(function (a) {
106
+ return a.name === definition.name;
107
+ });
108
+ throw createUserError("Unexpected argument '".concat(definition.name, "' supplied to fragment '").concat(spread.name, "'. @arguments may only be provided for variables defined in the fragment's @argumentDefinitions."), [(_argNode$loc = argNode === null || argNode === void 0 ? void 0 : argNode.loc) !== null && _argNode$loc !== void 0 ? _argNode$loc : spread.loc]);
109
+ }
110
+
111
+ fragmentScope[definition.name] = {
112
+ kind: 'Variable',
113
+ loc: definition.loc,
114
+ variableName: definition.name,
115
+ type: definition.type
116
+ };
117
+ } else {
118
+ var arg = argMap.get(definition.name);
119
+
120
+ if (arg == null || arg.kind === 'Literal' && arg.value == null) {
121
+ // No variable or literal null was passed, fall back to default
122
+ // value.
123
+ if (definition.defaultValue == null && schema.isNonNull(definition.type)) {
124
+ var _argNode$loc2;
125
+
126
+ var _argNode = args.find(function (a) {
127
+ return a.name === definition.name;
128
+ });
129
+
130
+ throw createUserError("No value found for required argument '".concat(definition.name, ": ").concat(schema.getTypeString(definition.type), "' on fragment '").concat(spread.name, "'."), [(_argNode$loc2 = _argNode === null || _argNode === void 0 ? void 0 : _argNode.loc) !== null && _argNode$loc2 !== void 0 ? _argNode$loc2 : spread.loc]);
131
+ }
132
+
133
+ fragmentScope[definition.name] = {
134
+ kind: 'Literal',
135
+ value: definition.defaultValue
136
+ };
137
+ } else {
138
+ // Variable or non-null literal.
139
+ fragmentScope[definition.name] = arg;
140
+ }
141
+ }
142
+ });
143
+ return fragmentScope;
144
+ }
145
+
146
+ module.exports = {
147
+ getFragmentScope: getFragmentScope,
148
+ getRootScope: getRootScope
149
+ };
@@ -0,0 +1,79 @@
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
+ *
8
+ * @format
9
+ */
10
+ // flowlint ambiguous-object-type:error
11
+ 'use strict';
12
+
13
+ var RelayCompilerCache = require('../util/RelayCompilerCache');
14
+
15
+ var getModuleName = require('../util/getModuleName');
16
+
17
+ var graphql = require('graphql');
18
+
19
+ var path = require('path');
20
+
21
+ var util = require('util');
22
+
23
+ var cache = new RelayCompilerCache('RelayFindGraphQLTags', 'v1');
24
+
25
+ function memoizedFind(tagFinder, text, baseDir, file) {
26
+ !file.exists ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayFindGraphQLTags: Called with non-existent file `%s`', file.relPath) : invariant(false) : void 0;
27
+ return cache.getOrCompute(file.hash, find.bind(null, tagFinder, text, path.join(baseDir, file.relPath)));
28
+ }
29
+
30
+ function find(tagFinder, text, absPath) {
31
+ var tags = tagFinder(text, absPath);
32
+ var moduleName = getModuleName(absPath);
33
+ tags.forEach(function (tag) {
34
+ return validateTemplate(tag, moduleName, absPath);
35
+ });
36
+ return tags.map(function (tag) {
37
+ return tag.template;
38
+ });
39
+ }
40
+
41
+ function validateTemplate(_ref, moduleName, filePath) {
42
+ var template = _ref.template,
43
+ keyName = _ref.keyName,
44
+ sourceLocationOffset = _ref.sourceLocationOffset;
45
+ var ast = graphql.parse(new graphql.Source(template, filePath, sourceLocationOffset));
46
+ ast.definitions.forEach(function (def) {
47
+ if (def.kind === 'OperationDefinition') {
48
+ !(def.name != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayFindGraphQLTags: In module `%s`, an operation requires a name.', moduleName, def.kind) : invariant(false) : void 0;
49
+ var definitionName = def.name.value;
50
+ var operationNameParts = definitionName.match(/^(.*)(Mutation|Query|Subscription)$/);
51
+ !(operationNameParts && definitionName.startsWith(moduleName)) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayFindGraphQLTags: Operation names in graphql tags must be prefixed ' + 'with the module name and end in "Mutation", "Query", or ' + '"Subscription". Got `%s` in module `%s`.', definitionName, moduleName) : invariant(false) : void 0;
52
+ } else if (def.kind === 'FragmentDefinition') {
53
+ var _definitionName = def.name.value;
54
+
55
+ if (keyName != null) {
56
+ !(_definitionName === moduleName + '_' + keyName) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayFindGraphQLTags: Container fragment names must be ' + '`<ModuleName>_<propName>`. Got `%s`, expected `%s`.', _definitionName, moduleName + '_' + keyName) : invariant(false) : void 0;
57
+ } else {
58
+ !_definitionName.startsWith(moduleName) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayFindGraphQLTags: Fragment names in graphql tags must be prefixed ' + 'with the module name. Got `%s` in module `%s`.', _definitionName, moduleName) : invariant(false) : void 0;
59
+ }
60
+ }
61
+ });
62
+ } // TODO: Not sure why this is defined here rather than imported, is it so that it doesn’t get stripped in prod?
63
+
64
+
65
+ function invariant(condition, msg) {
66
+ if (!condition) {
67
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
68
+ args[_key - 2] = arguments[_key];
69
+ }
70
+
71
+ throw new Error(util.format.apply(util, [msg].concat(args)));
72
+ }
73
+ }
74
+
75
+ module.exports = {
76
+ find: find,
77
+ // Exported for testing only.
78
+ memoizedFind: memoizedFind
79
+ };
@@ -0,0 +1,50 @@
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
+ *
8
+ * @format
9
+ */
10
+ // flowlint ambiguous-object-type:error
11
+ 'use strict';
12
+
13
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
+
15
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
16
+
17
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
18
+
19
+ var SignedSource = require('signedsource');
20
+
21
+ function writeForSchema(schema, licenseHeader, codegenDir, getModuleName) {
22
+ var header = '/**\n' + licenseHeader.map(function (line) {
23
+ return " * ".concat(line, "\n");
24
+ }).join('') + ' *\n' + " * ".concat(SignedSource.getSigningToken(), "\n") + ' * @flow strict\n' + ' */\n' + '\n';
25
+ var enumTypes = schema.getTypes().filter(function (type) {
26
+ return schema.isEnum(type);
27
+ });
28
+
29
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(enumTypes),
30
+ _step;
31
+
32
+ try {
33
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
34
+ var type = _step.value;
35
+ var enumType = schema.assertEnumType(type);
36
+ var name = schema.getTypeString(type);
37
+ var values = (0, _toConsumableArray2["default"])(schema.getEnumValues(enumType)).sort();
38
+ var enumFileContent = header + "export type ".concat(name, " =\n | '") + values.join("'\n | '") + "'\n | '%future added value';\n";
39
+ codegenDir.writeFile("".concat(getModuleName(name), ".js"), SignedSource.signFile(enumFileContent));
40
+ }
41
+ } catch (err) {
42
+ _iterator.e(err);
43
+ } finally {
44
+ _iterator.f();
45
+ }
46
+ }
47
+
48
+ module.exports = {
49
+ writeForSchema: writeForSchema
50
+ };
@@ -0,0 +1,109 @@
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
+ *
8
+ * @format
9
+ */
10
+ // flowlint ambiguous-object-type:error
11
+ 'use strict';
12
+
13
+ var ApplyFragmentArgumentTransform = require('../transforms/ApplyFragmentArgumentTransform');
14
+
15
+ var ClientExtensionsTransform = require('../transforms/ClientExtensionsTransform');
16
+
17
+ var ConnectionTransform = require('../transforms/ConnectionTransform');
18
+
19
+ var DeclarativeConnectionMutationTransform = require('../transforms/DeclarativeConnectionMutationTransform');
20
+
21
+ var DeferStreamTransform = require('../transforms/DeferStreamTransform');
22
+
23
+ var DisallowIdAsAlias = require('../transforms/DisallowIdAsAlias');
24
+
25
+ var DisallowTypenameOnRoot = require('../transforms/DisallowTypenameOnRoot');
26
+
27
+ var FieldHandleTransform = require('../transforms/FieldHandleTransform');
28
+
29
+ var FilterCompilerDirectivesTransform = require('../transforms/FilterCompilerDirectivesTransform');
30
+
31
+ var FilterDirectivesTransform = require('../transforms/FilterDirectivesTransform');
32
+
33
+ var FlattenTransform = require('../transforms/FlattenTransform');
34
+
35
+ var GenerateIDFieldTransform = require('../transforms/GenerateIDFieldTransform');
36
+
37
+ var GenerateTypeNameTransform = require('../transforms/GenerateTypeNameTransform');
38
+
39
+ var InlineDataFragmentTransform = require('../transforms/InlineDataFragmentTransform');
40
+
41
+ var InlineFragmentsTransform = require('../transforms/InlineFragmentsTransform');
42
+
43
+ var MaskTransform = require('../transforms/MaskTransform');
44
+
45
+ var MatchTransform = require('../transforms/MatchTransform');
46
+
47
+ var ReactFlightComponentTransform = require('../transforms/ReactFlightComponentTransform');
48
+
49
+ var RefetchableFragmentTransform = require('../transforms/RefetchableFragmentTransform');
50
+
51
+ var RelayDirectiveTransform = require('../transforms/RelayDirectiveTransform');
52
+
53
+ var RelayFlowGenerator = require('../language/javascript/RelayFlowGenerator');
54
+
55
+ var RequiredFieldTransform = require('../transforms/RequiredFieldTransform');
56
+
57
+ var SkipClientExtensionsTransform = require('../transforms/SkipClientExtensionsTransform');
58
+
59
+ var SkipHandleFieldTransform = require('../transforms/SkipHandleFieldTransform');
60
+
61
+ var SkipRedundantNodesTransform = require('../transforms/SkipRedundantNodesTransform');
62
+
63
+ var SkipSplitOperationTransform = require('../transforms/SkipSplitOperationTransform');
64
+
65
+ var SkipUnreachableNodeTransform = require('../transforms/SkipUnreachableNodeTransform');
66
+
67
+ var SkipUnusedVariablesTransform = require('../transforms/SkipUnusedVariablesTransform');
68
+
69
+ var SplitModuleImportTransform = require('../transforms/SplitModuleImportTransform');
70
+
71
+ var TestOperationTransform = require('../transforms/TestOperationTransform');
72
+
73
+ var ValidateGlobalVariablesTransform = require('../transforms/ValidateGlobalVariablesTransform');
74
+
75
+ var ValidateRequiredArgumentsTransform = require('../transforms/ValidateRequiredArgumentsTransform');
76
+
77
+ var ValidateUnusedVariablesTransform = require('../transforms/ValidateUnusedVariablesTransform');
78
+
79
+ // Transforms applied to the code used to process a query response.
80
+ var relaySchemaExtensions = [ConnectionTransform.SCHEMA_EXTENSION, DeclarativeConnectionMutationTransform.SCHEMA_EXTENSION, InlineDataFragmentTransform.SCHEMA_EXTENSION, MatchTransform.SCHEMA_EXTENSION, RequiredFieldTransform.SCHEMA_EXTENSION, RefetchableFragmentTransform.SCHEMA_EXTENSION, RelayDirectiveTransform.SCHEMA_EXTENSION, RelayFlowGenerator.SCHEMA_EXTENSION, TestOperationTransform.SCHEMA_EXTENSION, ValidateUnusedVariablesTransform.SCHEMA_EXTENSION]; // Transforms applied to both operations and fragments for both reading and
81
+ // writing from the store.
82
+
83
+ var relayCommonTransforms = [DisallowIdAsAlias.transform, ConnectionTransform.transform, RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RefetchableFragmentTransform.transform, DeferStreamTransform.transform, ReactFlightComponentTransform.transform]; // Transforms applied to fragments used for reading data from a store
84
+
85
+ var relayFragmentTransforms = [ClientExtensionsTransform.transform, FieldHandleTransform.transform, InlineDataFragmentTransform.transform, FlattenTransform.transformWithOptions({
86
+ isForCodegen: true
87
+ }), RequiredFieldTransform.transform, SkipRedundantNodesTransform.transform]; // Transforms applied to queries/mutations/subscriptions that are used for
88
+ // fetching data from the server and parsing those responses.
89
+
90
+ var relayQueryTransforms = [SplitModuleImportTransform.transform, DisallowTypenameOnRoot.transform, ValidateUnusedVariablesTransform.transform, ApplyFragmentArgumentTransform.transform, ValidateGlobalVariablesTransform.transform, GenerateIDFieldTransform.transform, DeclarativeConnectionMutationTransform.transform]; // Transforms applied to the code used to process a query response.
91
+
92
+ var relayCodegenTransforms = [FilterCompilerDirectivesTransform.transform, SkipUnreachableNodeTransform.transform, InlineFragmentsTransform.transform, // NOTE: For the codegen context, we make sure to run ClientExtensions
93
+ // transform after we've inlined fragment spreads (i.e. InlineFragmentsTransform)
94
+ // This will ensure that we don't generate nested ClientExtension nodes
95
+ ClientExtensionsTransform.transform, GenerateTypeNameTransform.transform, FlattenTransform.transformWithOptions({
96
+ isForCodegen: true
97
+ }), SkipRedundantNodesTransform.transform, TestOperationTransform.transform]; // Transforms applied before printing the query sent to the server.
98
+
99
+ var relayPrintTransforms = [SkipSplitOperationTransform.transform, // NOTE: Skipping client extensions might leave empty selections, which we
100
+ // skip by running SkipUnreachableNodeTransform immediately after.
101
+ ClientExtensionsTransform.transform, SkipClientExtensionsTransform.transform, SkipUnreachableNodeTransform.transform, GenerateTypeNameTransform.transform, FlattenTransform.transformWithOptions({}), SkipHandleFieldTransform.transform, FilterDirectivesTransform.transform, SkipUnusedVariablesTransform.transform, ValidateRequiredArgumentsTransform.transform];
102
+ module.exports = {
103
+ commonTransforms: relayCommonTransforms,
104
+ codegenTransforms: relayCodegenTransforms,
105
+ fragmentTransforms: relayFragmentTransforms,
106
+ printTransforms: relayPrintTransforms,
107
+ queryTransforms: relayQueryTransforms,
108
+ schemaExtensions: relaySchemaExtensions
109
+ };