relay-compiler 0.0.0-main-8ff54d69 → 0.0.0-main-38f1c96e

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) 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 -24
  6. package/win-x64/relay.exe +0 -0
  7. package/bin/RelayCompilerBin.js.flow +0 -168
  8. package/bin/RelayCompilerMain.js.flow +0 -515
  9. package/bin/__fixtures__/plugin-module.js.flow +0 -17
  10. package/bin/relay-compiler +0 -19068
  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 -566
  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 -1741
  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 -488
  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/test-utils/TestSchema.js +0 -27
  130. package/lib/test-utils/parseGraphQLText.js +0 -30
  131. package/lib/transforms/ApplyFragmentArgumentTransform.js +0 -393
  132. package/lib/transforms/ClientExtensionsTransform.js +0 -221
  133. package/lib/transforms/ConnectionTransform.js +0 -639
  134. package/lib/transforms/DeclarativeConnectionMutationTransform.js +0 -218
  135. package/lib/transforms/DeferStreamTransform.js +0 -246
  136. package/lib/transforms/DisallowIdAsAlias.js +0 -40
  137. package/lib/transforms/DisallowTypenameOnRoot.js +0 -53
  138. package/lib/transforms/FieldHandleTransform.js +0 -79
  139. package/lib/transforms/FilterCompilerDirectivesTransform.js +0 -29
  140. package/lib/transforms/FilterDirectivesTransform.js +0 -42
  141. package/lib/transforms/FlattenTransform.js +0 -306
  142. package/lib/transforms/GenerateIDFieldTransform.js +0 -135
  143. package/lib/transforms/GenerateTypeNameTransform.js +0 -149
  144. package/lib/transforms/InlineDataFragmentTransform.js +0 -100
  145. package/lib/transforms/InlineFragmentsTransform.js +0 -61
  146. package/lib/transforms/MaskTransform.js +0 -117
  147. package/lib/transforms/MatchTransform.js +0 -434
  148. package/lib/transforms/ReactFlightComponentTransform.js +0 -158
  149. package/lib/transforms/RefetchableFragmentTransform.js +0 -249
  150. package/lib/transforms/RelayDirectiveTransform.js +0 -83
  151. package/lib/transforms/RequiredFieldTransform.js +0 -369
  152. package/lib/transforms/SkipClientExtensionsTransform.js +0 -46
  153. package/lib/transforms/SkipHandleFieldTransform.js +0 -45
  154. package/lib/transforms/SkipRedundantNodesTransform.js +0 -261
  155. package/lib/transforms/SkipSplitOperationTransform.js +0 -32
  156. package/lib/transforms/SkipUnreachableNodeTransform.js +0 -158
  157. package/lib/transforms/SkipUnusedVariablesTransform.js +0 -75
  158. package/lib/transforms/SplitModuleImportTransform.js +0 -82
  159. package/lib/transforms/TestOperationTransform.js +0 -144
  160. package/lib/transforms/TransformUtils.js +0 -21
  161. package/lib/transforms/ValidateGlobalVariablesTransform.js +0 -92
  162. package/lib/transforms/ValidateRequiredArgumentsTransform.js +0 -114
  163. package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +0 -108
  164. package/lib/transforms/ValidateUnusedVariablesTransform.js +0 -96
  165. package/lib/transforms/query-generators/FetchableQueryGenerator.js +0 -157
  166. package/lib/transforms/query-generators/NodeQueryGenerator.js +0 -166
  167. package/lib/transforms/query-generators/QueryQueryGenerator.js +0 -48
  168. package/lib/transforms/query-generators/ViewerQueryGenerator.js +0 -77
  169. package/lib/transforms/query-generators/index.js +0 -60
  170. package/lib/transforms/query-generators/utils.js +0 -92
  171. package/lib/util/CodeMarker.js +0 -80
  172. package/lib/util/DefaultHandleKey.js +0 -15
  173. package/lib/util/RelayCompilerCache.js +0 -97
  174. package/lib/util/Rollout.js +0 -40
  175. package/lib/util/TimeReporter.js +0 -83
  176. package/lib/util/areEqualArgValues.js +0 -135
  177. package/lib/util/argumentContainsVariables.js +0 -37
  178. package/lib/util/dedupeJSONStringify.js +0 -160
  179. package/lib/util/generateAbstractTypeRefinementKey.js +0 -24
  180. package/lib/util/getDefinitionNodeHash.js +0 -22
  181. package/lib/util/getModuleName.js +0 -32
  182. package/lib/util/joinArgumentDefinitions.js +0 -67
  183. package/lib/util/md5.js +0 -17
  184. package/lib/util/murmurHash.js +0 -86
  185. package/lib/util/nullthrowsOSS.js +0 -23
  186. package/lib/util/orList.js +0 -36
  187. package/lib/util/partitionArray.js +0 -35
  188. package/relay-compiler.js +0 -17
  189. package/relay-compiler.min.js +0 -22
  190. package/reporters/ConsoleReporter.js.flow +0 -81
  191. package/reporters/MultiReporter.js.flow +0 -43
  192. package/reporters/Reporter.js.flow +0 -19
  193. package/runner/Artifacts.js.flow +0 -215
  194. package/runner/BufferedFilesystem.js.flow +0 -194
  195. package/runner/GraphQLASTNodeGroup.js.flow +0 -174
  196. package/runner/GraphQLASTUtils.js.flow +0 -26
  197. package/runner/GraphQLNodeMap.js.flow +0 -55
  198. package/runner/Sources.js.flow +0 -227
  199. package/runner/StrictMap.js.flow +0 -96
  200. package/runner/compileArtifacts.js.flow +0 -75
  201. package/runner/extractAST.js.flow +0 -98
  202. package/runner/getChangedNodeNames.js.flow +0 -48
  203. package/runner/getSchemaInstance.js.flow +0 -36
  204. package/runner/types.js.flow +0 -37
  205. package/test-utils/TestSchema.js.flow +0 -30
  206. package/test-utils/parseGraphQLText.js.flow +0 -41
  207. package/transforms/ApplyFragmentArgumentTransform.js.flow +0 -524
  208. package/transforms/ClientExtensionsTransform.js.flow +0 -224
  209. package/transforms/ConnectionTransform.js.flow +0 -850
  210. package/transforms/DeclarativeConnectionMutationTransform.js.flow +0 -245
  211. package/transforms/DeferStreamTransform.js.flow +0 -263
  212. package/transforms/DisallowIdAsAlias.js.flow +0 -46
  213. package/transforms/DisallowTypenameOnRoot.js.flow +0 -44
  214. package/transforms/FieldHandleTransform.js.flow +0 -77
  215. package/transforms/FilterCompilerDirectivesTransform.js.flow +0 -33
  216. package/transforms/FilterDirectivesTransform.js.flow +0 -45
  217. package/transforms/FlattenTransform.js.flow +0 -458
  218. package/transforms/GenerateIDFieldTransform.js.flow +0 -151
  219. package/transforms/GenerateTypeNameTransform.js.flow +0 -159
  220. package/transforms/InlineDataFragmentTransform.js.flow +0 -123
  221. package/transforms/InlineFragmentsTransform.js.flow +0 -70
  222. package/transforms/MaskTransform.js.flow +0 -124
  223. package/transforms/MatchTransform.js.flow +0 -587
  224. package/transforms/ReactFlightComponentTransform.js.flow +0 -207
  225. package/transforms/RefetchableFragmentTransform.js.flow +0 -266
  226. package/transforms/RelayDirectiveTransform.js.flow +0 -96
  227. package/transforms/RequiredFieldTransform.js.flow +0 -413
  228. package/transforms/SkipClientExtensionsTransform.js.flow +0 -54
  229. package/transforms/SkipHandleFieldTransform.js.flow +0 -44
  230. package/transforms/SkipRedundantNodesTransform.js.flow +0 -277
  231. package/transforms/SkipSplitOperationTransform.js.flow +0 -37
  232. package/transforms/SkipUnreachableNodeTransform.js.flow +0 -148
  233. package/transforms/SkipUnusedVariablesTransform.js.flow +0 -59
  234. package/transforms/SplitModuleImportTransform.js.flow +0 -97
  235. package/transforms/TestOperationTransform.js.flow +0 -142
  236. package/transforms/TransformUtils.js.flow +0 -26
  237. package/transforms/ValidateGlobalVariablesTransform.js.flow +0 -80
  238. package/transforms/ValidateRequiredArgumentsTransform.js.flow +0 -130
  239. package/transforms/ValidateServerOnlyDirectivesTransform.js.flow +0 -128
  240. package/transforms/ValidateUnusedVariablesTransform.js.flow +0 -88
  241. package/transforms/query-generators/FetchableQueryGenerator.js.flow +0 -188
  242. package/transforms/query-generators/NodeQueryGenerator.js.flow +0 -217
  243. package/transforms/query-generators/QueryQueryGenerator.js.flow +0 -57
  244. package/transforms/query-generators/ViewerQueryGenerator.js.flow +0 -97
  245. package/transforms/query-generators/index.js.flow +0 -89
  246. package/transforms/query-generators/utils.js.flow +0 -76
  247. package/util/CodeMarker.js.flow +0 -79
  248. package/util/DefaultHandleKey.js.flow +0 -17
  249. package/util/RelayCompilerCache.js.flow +0 -86
  250. package/util/Rollout.js.flow +0 -39
  251. package/util/TimeReporter.js.flow +0 -79
  252. package/util/areEqualArgValues.js.flow +0 -126
  253. package/util/argumentContainsVariables.js.flow +0 -38
  254. package/util/dedupeJSONStringify.js.flow +0 -156
  255. package/util/generateAbstractTypeRefinementKey.js.flow +0 -29
  256. package/util/getDefinitionNodeHash.js.flow +0 -24
  257. package/util/getModuleName.js.flow +0 -39
  258. package/util/joinArgumentDefinitions.js.flow +0 -105
  259. package/util/md5.js.flow +0 -19
  260. package/util/murmurHash.js.flow +0 -94
  261. package/util/nullthrowsOSS.js.flow +0 -25
  262. package/util/orList.js.flow +0 -37
  263. package/util/partitionArray.js.flow +0 -37
@@ -1,1877 +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
- *
8
- * @format
9
- * @emails oncall+relay
10
- */
11
- // flowlint ambiguous-object-type:error
12
- 'use strict';
13
-
14
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
15
-
16
- var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
17
-
18
- var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
19
-
20
- var _require = require('./CompilerError'),
21
- createCompilerError = _require.createCompilerError;
22
-
23
- var _require2 = require('./SchemaUtils'),
24
- isSchemaDefinitionAST = _require2.isSchemaDefinitionAST;
25
-
26
- var _require3 = require('graphql'),
27
- GraphQLBoolean = _require3.GraphQLBoolean,
28
- GraphQLFloat = _require3.GraphQLFloat,
29
- GraphQLID = _require3.GraphQLID,
30
- GraphQLInt = _require3.GraphQLInt,
31
- GraphQLString = _require3.GraphQLString,
32
- parse = _require3.parse,
33
- parseType = _require3.parseType,
34
- print = _require3.print,
35
- valueFromASTUntyped = _require3.valueFromASTUntyped;
36
-
37
- /**
38
- * @private
39
- */
40
- var Type = /*#__PURE__*/function () {
41
- function Type(name, isClient) {
42
- this.name = name;
43
- this.isClient = isClient;
44
- }
45
-
46
- var _proto = Type.prototype;
47
-
48
- _proto.toString = function toString() {
49
- return this.name;
50
- };
51
-
52
- _proto.toJSON = function toJSON() {
53
- return String(this);
54
- };
55
-
56
- return Type;
57
- }();
58
- /**
59
- * @private
60
- */
61
-
62
-
63
- var ScalarType = /*#__PURE__*/function (_Type) {
64
- (0, _inheritsLoose2["default"])(ScalarType, _Type);
65
-
66
- function ScalarType() {
67
- return _Type.apply(this, arguments) || this;
68
- }
69
-
70
- return ScalarType;
71
- }(Type);
72
- /**
73
- * @private
74
- */
75
-
76
-
77
- var EnumType = /*#__PURE__*/function (_Type2) {
78
- (0, _inheritsLoose2["default"])(EnumType, _Type2);
79
-
80
- function EnumType(name, values, isClient) {
81
- var _this;
82
-
83
- _this = _Type2.call(this, name, isClient) || this;
84
- _this.values = values;
85
- return _this;
86
- }
87
-
88
- return EnumType;
89
- }(Type);
90
- /**
91
- * @private
92
- */
93
-
94
-
95
- var UnionType = /*#__PURE__*/function (_Type3) {
96
- (0, _inheritsLoose2["default"])(UnionType, _Type3);
97
-
98
- function UnionType() {
99
- return _Type3.apply(this, arguments) || this;
100
- }
101
-
102
- return UnionType;
103
- }(Type);
104
- /**
105
- * @private
106
- */
107
-
108
-
109
- var ObjectType = /*#__PURE__*/function (_Type4) {
110
- (0, _inheritsLoose2["default"])(ObjectType, _Type4);
111
-
112
- function ObjectType() {
113
- return _Type4.apply(this, arguments) || this;
114
- }
115
-
116
- return ObjectType;
117
- }(Type);
118
- /**
119
- * @private
120
- */
121
-
122
-
123
- var InputObjectType = /*#__PURE__*/function (_Type5) {
124
- (0, _inheritsLoose2["default"])(InputObjectType, _Type5);
125
-
126
- function InputObjectType() {
127
- return _Type5.apply(this, arguments) || this;
128
- }
129
-
130
- return InputObjectType;
131
- }(Type);
132
- /**
133
- * @private
134
- */
135
-
136
-
137
- var InterfaceType = /*#__PURE__*/function (_Type6) {
138
- (0, _inheritsLoose2["default"])(InterfaceType, _Type6);
139
-
140
- function InterfaceType() {
141
- return _Type6.apply(this, arguments) || this;
142
- }
143
-
144
- return InterfaceType;
145
- }(Type);
146
- /**
147
- * @private
148
- */
149
-
150
-
151
- var List = /*#__PURE__*/function () {
152
- function List(type) {
153
- this.ofType = type;
154
- this._typeString = "[".concat(String(this.ofType), "]");
155
- }
156
-
157
- var _proto2 = List.prototype;
158
-
159
- _proto2.toString = function toString() {
160
- return this._typeString;
161
- };
162
-
163
- _proto2.toJSON = function toJSON() {
164
- return this.toString();
165
- };
166
-
167
- return List;
168
- }();
169
- /**
170
- * @private
171
- */
172
-
173
-
174
- var NonNull = /*#__PURE__*/function () {
175
- function NonNull(type) {
176
- this.ofType = type;
177
- this._typeString = "".concat(String(this.ofType), "!");
178
- }
179
-
180
- var _proto3 = NonNull.prototype;
181
-
182
- _proto3.toString = function toString() {
183
- return this._typeString;
184
- };
185
-
186
- _proto3.toJSON = function toJSON() {
187
- return this.toString();
188
- };
189
-
190
- return NonNull;
191
- }();
192
- /**
193
- * @private
194
- */
195
-
196
-
197
- var Field = function Field(schema, name, type, belongsTo, args, directives, isClient) {
198
- this.name = name;
199
- this.type = type;
200
- this.belongsTo = belongsTo;
201
- this.isClient = isClient;
202
- this.args = parseInputArgumentDefinitionsMap(schema, args);
203
- this.directives = directives;
204
- };
205
- /**
206
- * @private
207
- */
208
-
209
-
210
- function unwrap(type) {
211
- if (type instanceof NonNull || type instanceof List) {
212
- return unwrap(type.ofType);
213
- }
214
-
215
- return type;
216
- }
217
- /**
218
- * @private
219
- */
220
-
221
-
222
- function hasConcreteTypeThatImplements(schema, type, interfaceType) {
223
- return _isAbstractType(type) && getConcreteTypes(schema, type).some(function (concreteType) {
224
- return schema.implementsInterface(schema.assertCompositeType(concreteType), interfaceType);
225
- });
226
- }
227
- /**
228
- * @private
229
- */
230
-
231
-
232
- function getConcreteTypes(schema, type) {
233
- var concreteTypes = new Set();
234
- schema.getPossibleTypes(type).forEach(function (possibleType) {
235
- if (_isObject(possibleType)) {
236
- concreteTypes.add(possibleType);
237
- }
238
- });
239
- return Array.from(concreteTypes);
240
- }
241
-
242
- var TYPENAME_FIELD = '__typename';
243
- var CLIENT_ID_FIELD = '__id';
244
- var QUERY_TYPE_KEY = Symbol('Query');
245
- var MUTATION_TYPE_KEY = Symbol('Mutation');
246
- var SUBSCRIPTION_TYPE_KEY = Symbol('Subscription');
247
-
248
- function _isScalar(type) {
249
- return type instanceof ScalarType;
250
- }
251
-
252
- function _isObject(type) {
253
- return type instanceof ObjectType;
254
- }
255
-
256
- function _isEnum(type) {
257
- return type instanceof EnumType;
258
- }
259
-
260
- function _isUnion(type) {
261
- return type instanceof UnionType;
262
- }
263
-
264
- function _isInputObject(type) {
265
- return type instanceof InputObjectType;
266
- }
267
-
268
- function _isInterface(type) {
269
- return type instanceof InterfaceType;
270
- }
271
-
272
- function _isWrapper(type) {
273
- return type instanceof List || type instanceof NonNull;
274
- }
275
-
276
- function isBaseType(type) {
277
- return type instanceof ScalarType || type instanceof ObjectType || type instanceof EnumType || type instanceof UnionType || type instanceof InputObjectType || type instanceof InterfaceType;
278
- }
279
-
280
- function _isAbstractType(type) {
281
- return type instanceof UnionType || type instanceof InterfaceType;
282
- }
283
-
284
- function _isCompositeType(type) {
285
- return type instanceof ObjectType || type instanceof UnionType || type instanceof InterfaceType;
286
- }
287
-
288
- function _isInputType(type) {
289
- return type instanceof InputObjectType || type instanceof ScalarType || type instanceof EnumType;
290
- }
291
-
292
- var Schema = /*#__PURE__*/function () {
293
- /**
294
- * @private
295
- */
296
- function Schema(typeMap) {
297
- var _this2 = this;
298
-
299
- this._typeMap = typeMap;
300
- this._typeWrappersMap = new Map();
301
- this._fieldsMap = new Map();
302
- this._typeNameMap = new Map();
303
- this._clientIdMap = new Map();
304
- this._directiveMap = new Map(typeMap.getDirectives().map(function (directive) {
305
- return [directive.name, {
306
- locations: directive.locations,
307
- args: parseInputArgumentDefinitions(_this2, directive.args),
308
- name: directive.name,
309
- isClient: directive.isClient
310
- }];
311
- }));
312
- }
313
-
314
- var _proto4 = Schema.prototype;
315
-
316
- _proto4.getTypes = function getTypes() {
317
- return this._typeMap.getTypes();
318
- };
319
-
320
- _proto4.getTypeFromAST = function getTypeFromAST(typeNode) {
321
- if (typeNode.kind === 'NonNullType') {
322
- var innerType = this.getTypeFromAST(typeNode.type);
323
-
324
- if (!innerType) {
325
- return;
326
- }
327
-
328
- if (innerType instanceof NonNull) {
329
- throw createCompilerError('Unable to wrap non-nullable type with non-null wrapper.');
330
- }
331
-
332
- var cacheKey = "".concat(this.getTypeString(innerType), "!");
333
-
334
- var type = this._typeWrappersMap.get(cacheKey);
335
-
336
- if (type) {
337
- return type;
338
- }
339
-
340
- type = new NonNull(innerType);
341
-
342
- this._typeWrappersMap.set(cacheKey, type);
343
-
344
- return type;
345
- } else if (typeNode.kind === 'ListType') {
346
- var _innerType = this.getTypeFromAST(typeNode.type);
347
-
348
- if (!_innerType) {
349
- return;
350
- }
351
-
352
- var _cacheKey = "[".concat(this.getTypeString(_innerType), "]");
353
-
354
- var _type = this._typeWrappersMap.get(_cacheKey);
355
-
356
- if (_type) {
357
- return _type;
358
- }
359
-
360
- _type = new List(_innerType);
361
-
362
- this._typeWrappersMap.set(_cacheKey, _type);
363
-
364
- return _type;
365
- }
366
-
367
- return this._typeMap.getTypeByName(typeNode.name.value);
368
- };
369
-
370
- _proto4._getRawType = function _getRawType(typeName) {
371
- var type = this._typeWrappersMap.get(typeName);
372
-
373
- if (type) {
374
- return type;
375
- }
376
-
377
- if (typeof typeName === 'string') {
378
- return this.getTypeFromAST(parseType(typeName));
379
- } else {
380
- var operationType;
381
-
382
- if (typeName === QUERY_TYPE_KEY) {
383
- operationType = this._typeMap.getQueryType();
384
- } else if (typeName === MUTATION_TYPE_KEY) {
385
- operationType = this._typeMap.getMutationType();
386
- } else if (typeName === SUBSCRIPTION_TYPE_KEY) {
387
- operationType = this._typeMap.getSubscriptionType();
388
- }
389
-
390
- if (operationType instanceof ObjectType) {
391
- return operationType;
392
- }
393
- }
394
- };
395
-
396
- _proto4.getTypeFromString = function getTypeFromString(typeName) {
397
- return this._getRawType(typeName);
398
- };
399
-
400
- _proto4.expectTypeFromString = function expectTypeFromString(typeName) {
401
- var type = this.getTypeFromString(typeName);
402
-
403
- if (type == null) {
404
- throw createCompilerError("Unknown type: '".concat(typeName, "'."));
405
- }
406
-
407
- return type;
408
- };
409
-
410
- _proto4.expectTypeFromAST = function expectTypeFromAST(ast) {
411
- var type = this.getTypeFromAST(ast);
412
-
413
- if (type == null) {
414
- throw createCompilerError("Unknown type: '".concat(print(ast), "'."), null, [ast]);
415
- }
416
-
417
- return type;
418
- };
419
-
420
- _proto4.getNonNullType = function getNonNullType(type) {
421
- if (type instanceof NonNull) {
422
- return type;
423
- }
424
-
425
- var cacheKey = "".concat(String(type), "!");
426
-
427
- var nonNullType = this._typeWrappersMap.get(cacheKey);
428
-
429
- if (nonNullType) {
430
- return nonNullType;
431
- }
432
-
433
- nonNullType = new NonNull(type);
434
-
435
- this._typeWrappersMap.set(cacheKey, nonNullType);
436
-
437
- return nonNullType;
438
- };
439
-
440
- _proto4.getRawType = function getRawType(type) {
441
- return unwrap(type);
442
- };
443
-
444
- _proto4.getNullableType = function getNullableType(type) {
445
- if (type instanceof NonNull) {
446
- return type.ofType;
447
- }
448
-
449
- return type;
450
- };
451
-
452
- _proto4.getListItemType = function getListItemType(type) {
453
- if (type instanceof List) {
454
- return type.ofType;
455
- }
456
-
457
- return type;
458
- };
459
-
460
- _proto4.mapListItemType = function mapListItemType(type, mapper) {
461
- if (!(type instanceof List)) {
462
- throw createCompilerError('Expected List type');
463
- }
464
-
465
- var innerType = mapper(type.ofType);
466
- var cacheKey = "[".concat(this.getTypeString(innerType), "]");
467
-
468
- var newType = this._typeWrappersMap.get(cacheKey);
469
-
470
- if (newType) {
471
- return newType;
472
- }
473
-
474
- newType = new List(innerType);
475
-
476
- this._typeWrappersMap.set(cacheKey, newType);
477
-
478
- return newType;
479
- };
480
-
481
- _proto4.areEqualTypes = function areEqualTypes(typeA, typeB) {
482
- if (typeA === typeB) {
483
- return true;
484
- }
485
-
486
- if (typeA instanceof NonNull && typeB instanceof NonNull) {
487
- return this.areEqualTypes(typeA.ofType, typeB.ofType);
488
- }
489
-
490
- if (typeA instanceof List && typeB instanceof List) {
491
- return this.areEqualTypes(typeA.ofType, typeB.ofType);
492
- }
493
-
494
- if (isBaseType(typeA) && isBaseType(typeB)) {
495
- return typeA.name === typeB.name;
496
- }
497
-
498
- return false;
499
- }
500
- /**
501
- * Determine if the given type may implement the named type:
502
- * - it is the named type
503
- * - it implements the named interface
504
- * - it is an abstract type and *some* of its concrete types may
505
- * implement the named type
506
- */
507
- ;
508
-
509
- _proto4.mayImplement = function mayImplement(type, interfaceType) {
510
- return this.areEqualTypes(type, interfaceType) || this.implementsInterface(type, interfaceType) || this.isAbstractType(type) && hasConcreteTypeThatImplements(this, type, interfaceType);
511
- };
512
-
513
- _proto4.implementsInterface = function implementsInterface(type, interfaceType) {
514
- var _this3 = this;
515
-
516
- return this.getInterfaces(type).some(function (typeInterface) {
517
- return _this3.areEqualTypes(typeInterface, interfaceType);
518
- });
519
- };
520
-
521
- _proto4.canHaveSelections = function canHaveSelections(type) {
522
- return this.isObject(type) || this.isInterface(type);
523
- };
524
-
525
- _proto4.getTypeString = function getTypeString(type) {
526
- return type.toString();
527
- };
528
-
529
- _proto4.isTypeSubTypeOf = function isTypeSubTypeOf(maybeSubType, superType) {
530
- // Equivalent type is a valid subtype
531
- if (maybeSubType === superType) {
532
- return true;
533
- } // If superType is non-null, maybeSubType must also be non-null.
534
-
535
-
536
- if (superType instanceof NonNull) {
537
- if (maybeSubType instanceof NonNull) {
538
- return this.isTypeSubTypeOf(maybeSubType.ofType, superType.ofType);
539
- }
540
-
541
- return false;
542
- }
543
-
544
- if (maybeSubType instanceof NonNull) {
545
- // If superType is nullable, maybeSubType may be non-null or nullable.
546
- return this.isTypeSubTypeOf(maybeSubType.ofType, superType);
547
- } // If superType type is a list, maybeSubType type must also be a list.
548
-
549
-
550
- if (superType instanceof List) {
551
- if (maybeSubType instanceof List) {
552
- return this.isTypeSubTypeOf(maybeSubType.ofType, superType.ofType);
553
- }
554
-
555
- return false;
556
- }
557
-
558
- if (maybeSubType instanceof List) {
559
- // If superType is not a list, maybeSubType must also be not a list.
560
- return false;
561
- } // If superType type is an abstract type, maybeSubType type may be a currently
562
- // possible object type.
563
-
564
-
565
- if (this.isAbstractType(superType) && this.isObject(maybeSubType) && this.isPossibleType(this.assertAbstractType(superType), this.assertObjectType(maybeSubType))) {
566
- return true;
567
- } // Otherwise, maybeSubType is not a valid subtype of the superType.
568
-
569
-
570
- return false;
571
- }
572
- /**
573
- * Provided two composite types, determine if they "overlap". Two composite
574
- * types overlap when the Sets of possible concrete types for each intersect.
575
- *
576
- * This is often used to determine if a fragment of a given type could possibly
577
- * be visited in a context of another type.
578
- *
579
- * This function is commutative.
580
- */
581
- ;
582
-
583
- _proto4.doTypesOverlap = function doTypesOverlap(typeA, typeB) {
584
- var _this4 = this;
585
-
586
- // Equivalent types overlap
587
- if (typeA === typeB) {
588
- return true;
589
- }
590
-
591
- if (_isAbstractType(typeA)) {
592
- if (_isAbstractType(typeB)) {
593
- // If both types are abstract, then determine if there is any intersection
594
- // between possible concrete types of each.
595
- return Array.from(this.getPossibleTypes(typeA)).some(function (type) {
596
- if (_isObject(type)) {
597
- return _this4.isPossibleType(typeB, type);
598
- }
599
- });
600
- } // Determine if the latter type is a possible concrete type of the former.
601
-
602
-
603
- return this.isPossibleType(typeA, typeB);
604
- }
605
-
606
- if (_isAbstractType(typeB)) {
607
- // Determine if the former type is a possible concrete type of the latter.
608
- return this.isPossibleType(typeB, typeA);
609
- } // Otherwise the types do not overlap.
610
-
611
-
612
- return false;
613
- };
614
-
615
- _proto4.isPossibleType = function isPossibleType(superType, maybeSubType) {
616
- return this._typeMap.getPossibleTypeSet(superType).has(maybeSubType);
617
- };
618
-
619
- _proto4.assertScalarFieldType = function assertScalarFieldType(type) {
620
- // Scalar type fields can be wrappers / or can be scalars/enums
621
- if (_isWrapper(type) && !_isScalar(unwrap(type)) && !_isEnum(unwrap(type)) || !_isWrapper(type) && !_isScalar(type) && !_isEnum(type)) {
622
- throw createCompilerError("Expected ".concat(String(type), " to be a Scalar or Enum type."));
623
- }
624
-
625
- return type;
626
- };
627
-
628
- _proto4.assertLinkedFieldType = function assertLinkedFieldType(type) {
629
- // Linked Field types can be wrappers / or can be composite types
630
- if (_isWrapper(type) && !_isCompositeType(unwrap(type)) || !_isWrapper(type) && !_isCompositeType(type)) {
631
- throw createCompilerError("Expected ".concat(String(type), " to be a Object, Interface or a Union Type."));
632
- }
633
-
634
- return type;
635
- };
636
-
637
- _proto4.assertInputType = function assertInputType(type) {
638
- // Input type fields can be wrappers / or can be scalars/enums
639
- if (_isWrapper(type) && !_isInputType(unwrap(type)) || !_isWrapper(type) && !_isInputType(type)) {
640
- throw createCompilerError("Expected ".concat(String(type), " to be a Input, Scalar or Enum type."));
641
- }
642
-
643
- return type;
644
- };
645
-
646
- _proto4.asCompositeType = function asCompositeType(type) {
647
- if (_isCompositeType(type)) {
648
- return type;
649
- }
650
- };
651
-
652
- _proto4.asInputType = function asInputType(type) {
653
- if (_isWrapper(type) && _isInputType(unwrap(type)) || !_isWrapper(type) && _isInputType(type)) {
654
- return type;
655
- }
656
- };
657
-
658
- _proto4.asScalarFieldType = function asScalarFieldType(type) {
659
- if (_isScalar(type) || _isEnum(type)) {
660
- return type;
661
- }
662
- };
663
-
664
- _proto4.assertScalarType = function assertScalarType(type) {
665
- if (!_isScalar(type)) {
666
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be a scalar type, got ").concat(this.getTypeString(type), "."));
667
- }
668
-
669
- return type;
670
- };
671
-
672
- _proto4.assertObjectType = function assertObjectType(type) {
673
- if (!_isObject(type)) {
674
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be an object type."));
675
- }
676
-
677
- return type;
678
- };
679
-
680
- _proto4.assertInputObjectType = function assertInputObjectType(type) {
681
- if (!_isInputObject(type)) {
682
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be an input type."));
683
- }
684
-
685
- return type;
686
- };
687
-
688
- _proto4.asInputObjectType = function asInputObjectType(type) {
689
- if (!_isInputObject(type)) {
690
- return null;
691
- }
692
-
693
- return type;
694
- };
695
-
696
- _proto4.assertInterfaceType = function assertInterfaceType(type) {
697
- if (!_isInterface(type)) {
698
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be an interface type."));
699
- }
700
-
701
- return type;
702
- };
703
-
704
- _proto4.assertCompositeType = function assertCompositeType(type) {
705
- if (!_isCompositeType(type)) {
706
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be a composite type."));
707
- }
708
-
709
- return type;
710
- };
711
-
712
- _proto4.assertAbstractType = function assertAbstractType(type) {
713
- if (!_isAbstractType(type)) {
714
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be an abstract type."));
715
- }
716
-
717
- return type;
718
- };
719
-
720
- _proto4.assertLeafType = function assertLeafType(type) {
721
- if (!this.isLeafType(type)) {
722
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be a leaf type."));
723
- }
724
-
725
- return type;
726
- };
727
-
728
- _proto4.assertUnionType = function assertUnionType(type) {
729
- if (!_isUnion(type)) {
730
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be a union type."));
731
- }
732
-
733
- return type;
734
- };
735
-
736
- _proto4.assertEnumType = function assertEnumType(type) {
737
- if (!_isEnum(type)) {
738
- throw createCompilerError("Expected ".concat(String(type), " to be an enum type."));
739
- }
740
-
741
- return type;
742
- };
743
-
744
- _proto4.assertIntType = function assertIntType(type) {
745
- if (!_isScalar(type) || !this.isInt(type)) {
746
- throw createCompilerError("Expected ".concat(String(type), " to be an 'Int' type."));
747
- }
748
-
749
- return type;
750
- };
751
-
752
- _proto4.assertFloatType = function assertFloatType(type) {
753
- if (!_isScalar(type) || !this.isFloat(type)) {
754
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be a 'Float' type."));
755
- }
756
-
757
- return type;
758
- };
759
-
760
- _proto4.assertBooleanType = function assertBooleanType(type) {
761
- if (!_isScalar(type) || !this.isBoolean(type)) {
762
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be a 'Boolean' type."));
763
- }
764
-
765
- return type;
766
- };
767
-
768
- _proto4.assertStringType = function assertStringType(type) {
769
- if (!_isScalar(type) || !this.isString(type)) {
770
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be a 'String' type."));
771
- }
772
-
773
- return type;
774
- };
775
-
776
- _proto4.assertIdType = function assertIdType(type) {
777
- if (!_isScalar(type) || !this.isId(type)) {
778
- throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be an ID type."));
779
- }
780
-
781
- return type;
782
- };
783
-
784
- _proto4.expectBooleanType = function expectBooleanType() {
785
- return this.assertScalarType(this.expectTypeFromString('Boolean'));
786
- };
787
-
788
- _proto4.expectIntType = function expectIntType() {
789
- return this.assertScalarType(this.expectTypeFromString('Int'));
790
- };
791
-
792
- _proto4.expectFloatType = function expectFloatType() {
793
- return this.assertScalarType(this.expectTypeFromString('Float'));
794
- };
795
-
796
- _proto4.expectStringType = function expectStringType() {
797
- return this.assertScalarType(this.expectTypeFromString('String'));
798
- };
799
-
800
- _proto4.expectIdType = function expectIdType() {
801
- return this.assertScalarType(this.expectTypeFromString('ID'));
802
- };
803
-
804
- _proto4.getQueryType = function getQueryType() {
805
- var queryType = this._getRawType(QUERY_TYPE_KEY);
806
-
807
- if (queryType && _isObject(queryType)) {
808
- return queryType;
809
- }
810
- };
811
-
812
- _proto4.getMutationType = function getMutationType() {
813
- var mutationType = this._getRawType(MUTATION_TYPE_KEY);
814
-
815
- if (mutationType && _isObject(mutationType)) {
816
- return mutationType;
817
- }
818
- };
819
-
820
- _proto4.getSubscriptionType = function getSubscriptionType() {
821
- var subscriptionType = this._getRawType(SUBSCRIPTION_TYPE_KEY);
822
-
823
- if (subscriptionType && _isObject(subscriptionType)) {
824
- return subscriptionType;
825
- }
826
- };
827
-
828
- _proto4.expectQueryType = function expectQueryType() {
829
- var queryType = this.getQueryType();
830
-
831
- if (queryType == null) {
832
- throw createCompilerError('Query type is not defined on the Schema');
833
- }
834
-
835
- return queryType;
836
- };
837
-
838
- _proto4.expectMutationType = function expectMutationType() {
839
- var mutationType = this.getMutationType();
840
-
841
- if (mutationType == null) {
842
- throw createCompilerError('Mutation type is not defined the Schema');
843
- }
844
-
845
- return mutationType;
846
- };
847
-
848
- _proto4.expectSubscriptionType = function expectSubscriptionType() {
849
- var subscriptionType = this.getSubscriptionType();
850
-
851
- if (subscriptionType == null) {
852
- throw createCompilerError('Subscription type is not defined the Schema');
853
- }
854
-
855
- return subscriptionType;
856
- };
857
-
858
- _proto4.isNonNull = function isNonNull(type) {
859
- return type instanceof NonNull;
860
- };
861
-
862
- _proto4.isList = function isList(type) {
863
- return type instanceof List;
864
- };
865
-
866
- _proto4.isWrapper = function isWrapper(type) {
867
- return _isWrapper(type);
868
- };
869
-
870
- _proto4.isScalar = function isScalar(type) {
871
- return _isScalar(type);
872
- };
873
-
874
- _proto4.isObject = function isObject(type) {
875
- return _isObject(type);
876
- };
877
-
878
- _proto4.isEnum = function isEnum(type) {
879
- return _isEnum(type);
880
- };
881
-
882
- _proto4.isUnion = function isUnion(type) {
883
- return _isUnion(type);
884
- };
885
-
886
- _proto4.isInputObject = function isInputObject(type) {
887
- return _isInputObject(type);
888
- };
889
-
890
- _proto4.isInterface = function isInterface(type) {
891
- return _isInterface(type);
892
- };
893
-
894
- _proto4.isInputType = function isInputType(type) {
895
- // Wrappers can be input types (so it's save to check unwrapped type here)
896
- return _isInputType(type) || _isWrapper(type) && _isInputType(unwrap(type));
897
- };
898
-
899
- _proto4.isCompositeType = function isCompositeType(type) {
900
- return _isCompositeType(type);
901
- };
902
-
903
- _proto4.isAbstractType = function isAbstractType(type) {
904
- return _isAbstractType(type);
905
- };
906
-
907
- _proto4.isLeafType = function isLeafType(type) {
908
- return this.isScalar(type) || this.isEnum(type);
909
- };
910
-
911
- _proto4.isId = function isId(type) {
912
- if (type instanceof ScalarType) {
913
- return type.name === 'ID';
914
- }
915
-
916
- return false;
917
- };
918
-
919
- _proto4.isInt = function isInt(type) {
920
- if (type instanceof ScalarType) {
921
- return type.name === 'Int';
922
- }
923
-
924
- return false;
925
- };
926
-
927
- _proto4.isFloat = function isFloat(type) {
928
- if (type instanceof ScalarType) {
929
- return type.name === 'Float';
930
- }
931
-
932
- return false;
933
- };
934
-
935
- _proto4.isBoolean = function isBoolean(type) {
936
- if (type instanceof ScalarType) {
937
- return type.name === 'Boolean';
938
- }
939
-
940
- return false;
941
- };
942
-
943
- _proto4.isString = function isString(type) {
944
- if (type instanceof ScalarType) {
945
- return type.name === 'String';
946
- }
947
-
948
- return false;
949
- };
950
-
951
- _proto4.hasField = function hasField(type, fieldName) {
952
- var canHaveTypename = this.isObject(type) || this.isAbstractType(type); // Special case for __typename field
953
-
954
- if (canHaveTypename && (fieldName === TYPENAME_FIELD || fieldName === CLIENT_ID_FIELD)) {
955
- return true;
956
- }
957
-
958
- if (type instanceof ObjectType || type instanceof InterfaceType) {
959
- return this._typeMap.getField(type, fieldName) != null;
960
- } else if (type instanceof InputObjectType) {
961
- return this._typeMap.getInputField(type, fieldName) != null;
962
- }
963
-
964
- return false;
965
- };
966
-
967
- _proto4.hasId = function hasId(type) {
968
- if (!this.hasField(type, 'id')) {
969
- return false;
970
- }
971
-
972
- var idField = this.expectField(type, 'id');
973
- return this.areEqualTypes(this.getNullableType(this.getFieldType(idField)), this.expectIdType());
974
- };
975
-
976
- _proto4.getFields = function getFields(type) {
977
- var fieldsMap = this._getFieldsMap(type);
978
-
979
- return Array.from(fieldsMap.values());
980
- };
981
-
982
- _proto4._getFieldsMap = function _getFieldsMap(type) {
983
- var cachedMap = this._fieldsMap.get(type);
984
-
985
- if (cachedMap != null) {
986
- return cachedMap;
987
- }
988
-
989
- var fieldsMap = new Map();
990
-
991
- if (type instanceof ObjectType || type instanceof InterfaceType) {
992
- var fields = this._typeMap.getFieldMap(type);
993
-
994
- if (fields) {
995
- var _iterator = (0, _createForOfIteratorHelper2["default"])(fields),
996
- _step;
997
-
998
- try {
999
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
1000
- var _step$value = _step.value,
1001
- fieldName = _step$value[0],
1002
- fieldDefinition = _step$value[1];
1003
- var fieldType = this.expectTypeFromAST(fieldDefinition.type);
1004
- fieldsMap.set(fieldName, new Field(this, fieldName, fieldType, this.assertCompositeType(type), fieldDefinition.arguments, fieldDefinition.directives, fieldDefinition.isClient));
1005
- }
1006
- } catch (err) {
1007
- _iterator.e(err);
1008
- } finally {
1009
- _iterator.f();
1010
- }
1011
- }
1012
- } else if (type instanceof InputObjectType) {
1013
- var _fields = this._typeMap.getInputFieldMap(type);
1014
-
1015
- if (_fields) {
1016
- var _iterator2 = (0, _createForOfIteratorHelper2["default"])(_fields),
1017
- _step2;
1018
-
1019
- try {
1020
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1021
- var _step2$value = _step2.value,
1022
- _fieldName = _step2$value[0],
1023
- typeNode = _step2$value[1];
1024
-
1025
- var _fieldType = this.expectTypeFromAST(typeNode);
1026
-
1027
- fieldsMap.set(_fieldName, new Field(this, _fieldName, _fieldType, type, [], null, false));
1028
- }
1029
- } catch (err) {
1030
- _iterator2.e(err);
1031
- } finally {
1032
- _iterator2.f();
1033
- }
1034
- }
1035
- }
1036
-
1037
- if (fieldsMap.size === 0) {
1038
- throw createCompilerError("_getFieldsMap: Type '".concat(type.name, "' should have fields."));
1039
- }
1040
-
1041
- this._fieldsMap.set(type, fieldsMap);
1042
-
1043
- return fieldsMap;
1044
- };
1045
-
1046
- _proto4.getFieldByName = function getFieldByName(type, fieldName) {
1047
- if (!this.hasField(type, fieldName)) {
1048
- return;
1049
- } // A "special" case for __typename and __id fields - which should
1050
- // not be in the list of type fields, but should be fine to select
1051
-
1052
-
1053
- if (fieldName === TYPENAME_FIELD) {
1054
- var typename = this._typeNameMap.get(type);
1055
-
1056
- if (!typename) {
1057
- typename = new Field(this, TYPENAME_FIELD, this.getNonNullType(this.expectStringType()), type, [], null, false);
1058
-
1059
- this._typeNameMap.set(type, typename);
1060
- }
1061
-
1062
- return typename;
1063
- }
1064
-
1065
- if (fieldName === CLIENT_ID_FIELD) {
1066
- var clientId = this._clientIdMap.get(type);
1067
-
1068
- if (!clientId) {
1069
- clientId = new Field(this, CLIENT_ID_FIELD, this.getNonNullType(this.expectIdType()), type, [], null, true);
1070
-
1071
- this._clientIdMap.set(type, clientId);
1072
- }
1073
-
1074
- return clientId;
1075
- }
1076
-
1077
- if (_isUnion(type)) {
1078
- throw createCompilerError("Unexpected union type '".concat(this.getTypeString(type), "' in the 'getFieldByName(...)'. Expected type with fields"));
1079
- }
1080
-
1081
- var fieldsMap = this._getFieldsMap(type);
1082
-
1083
- return fieldsMap.get(fieldName);
1084
- };
1085
-
1086
- _proto4.expectField = function expectField(type, fieldName) {
1087
- var field = this.getFieldByName(type, fieldName);
1088
-
1089
- if (!field) {
1090
- throw createCompilerError("Unknown field '".concat(fieldName, "' on type '").concat(this.getTypeString(type), "'."));
1091
- }
1092
-
1093
- return field;
1094
- };
1095
-
1096
- _proto4.getFieldConfig = function getFieldConfig(field) {
1097
- return {
1098
- type: field.type,
1099
- args: Array.from(field.args.values())
1100
- };
1101
- };
1102
-
1103
- _proto4.getFieldName = function getFieldName(field) {
1104
- return field.name;
1105
- };
1106
-
1107
- _proto4.getFieldType = function getFieldType(field) {
1108
- return field.type;
1109
- };
1110
-
1111
- _proto4.getFieldParentType = function getFieldParentType(field) {
1112
- return field.belongsTo;
1113
- };
1114
-
1115
- _proto4.getFieldArgs = function getFieldArgs(field) {
1116
- return Array.from(field.args.values());
1117
- };
1118
-
1119
- _proto4.getFieldArgByName = function getFieldArgByName(field, argName) {
1120
- return field.args.get(argName);
1121
- };
1122
-
1123
- _proto4.getEnumValues = function getEnumValues(type) {
1124
- return type.values;
1125
- };
1126
-
1127
- _proto4.getUnionTypes = function getUnionTypes(type) {
1128
- return Array.from(this._typeMap.getPossibleTypeSet(type));
1129
- };
1130
-
1131
- _proto4.getInterfaces = function getInterfaces(type) {
1132
- if (type instanceof ObjectType) {
1133
- return this._typeMap.getInterfaces(type);
1134
- }
1135
-
1136
- return [];
1137
- };
1138
-
1139
- _proto4.getPossibleTypes = function getPossibleTypes(type) {
1140
- return this._typeMap.getPossibleTypeSet(type);
1141
- };
1142
-
1143
- _proto4.getFetchableFieldName = function getFetchableFieldName(type) {
1144
- return this._typeMap.getFetchableFieldName(type);
1145
- };
1146
-
1147
- _proto4.parseLiteral = function parseLiteral(type, valueNode) {
1148
- if (type instanceof EnumType && valueNode.kind === 'EnumValue') {
1149
- return this.parseValue(type, valueNode.value);
1150
- } else if (type instanceof ScalarType) {
1151
- if (valueNode.kind === 'BooleanValue' && type.name === 'Boolean') {
1152
- return GraphQLBoolean.parseLiteral(valueNode);
1153
- } else if (valueNode.kind === 'FloatValue' && type.name === 'Float') {
1154
- return GraphQLFloat.parseLiteral(valueNode);
1155
- } else if (valueNode.kind === 'IntValue' && (type.name === 'Int' || type.name === 'ID' || type.name === 'Float')) {
1156
- return GraphQLInt.parseLiteral(valueNode);
1157
- } else if (valueNode.kind === 'StringValue' && (type.name === 'String' || type.name === 'ID')) {
1158
- return GraphQLString.parseLiteral(valueNode);
1159
- } else if (!isDefaultScalar(type.name)) {
1160
- return valueFromASTUntyped(valueNode);
1161
- }
1162
- }
1163
- };
1164
-
1165
- _proto4.parseValue = function parseValue(type, value) {
1166
- if (type instanceof EnumType) {
1167
- return type.values.includes(value) ? value : undefined;
1168
- } else if (type instanceof ScalarType) {
1169
- switch (type.name) {
1170
- case 'Boolean':
1171
- return GraphQLBoolean.parseValue(value);
1172
-
1173
- case 'Float':
1174
- return GraphQLFloat.parseValue(value);
1175
-
1176
- case 'Int':
1177
- return GraphQLInt.parseValue(value);
1178
-
1179
- case 'String':
1180
- return GraphQLString.parseValue(value);
1181
-
1182
- case 'ID':
1183
- return GraphQLID.parseValue(value);
1184
-
1185
- default:
1186
- return value;
1187
- }
1188
- }
1189
- };
1190
-
1191
- _proto4.serialize = function serialize(type, value) {
1192
- if (type instanceof EnumType) {
1193
- return type.values.includes(value) ? value : undefined;
1194
- } else if (type instanceof ScalarType) {
1195
- switch (type.name) {
1196
- case 'Boolean':
1197
- return GraphQLBoolean.serialize(value);
1198
-
1199
- case 'Float':
1200
- return GraphQLFloat.serialize(value);
1201
-
1202
- case 'Int':
1203
- return GraphQLInt.serialize(value);
1204
-
1205
- case 'String':
1206
- return GraphQLString.serialize(value);
1207
-
1208
- case 'ID':
1209
- return GraphQLID.serialize(value);
1210
-
1211
- default:
1212
- return value;
1213
- }
1214
- }
1215
- };
1216
-
1217
- _proto4.getDirectives = function getDirectives() {
1218
- return Array.from(this._directiveMap.values());
1219
- };
1220
-
1221
- _proto4.getDirective = function getDirective(directiveName) {
1222
- return this._directiveMap.get(directiveName);
1223
- };
1224
-
1225
- _proto4.isServerType = function isServerType(type) {
1226
- var unwrapped = unwrap(type);
1227
- return unwrapped.isClient === false;
1228
- };
1229
-
1230
- _proto4.isServerField = function isServerField(field) {
1231
- return field.isClient === false;
1232
- };
1233
-
1234
- _proto4.isServerDirective = function isServerDirective(directiveName) {
1235
- var directive = this._directiveMap.get(directiveName);
1236
-
1237
- return (directive === null || directive === void 0 ? void 0 : directive.isClient) === false;
1238
- };
1239
-
1240
- _proto4.isServerDefinedField = function isServerDefinedField(type, field) {
1241
- return this.isAbstractType(type) && field.directives.some(function (_ref) {
1242
- var name = _ref.name;
1243
- return name === 'fixme_fat_interface';
1244
- }) || this.hasField(type, field.name) && this.isServerField(this.expectField(type, field.name));
1245
- };
1246
-
1247
- _proto4.isClientDefinedField = function isClientDefinedField(type, field) {
1248
- return !this.isServerDefinedField(type, field);
1249
- };
1250
-
1251
- _proto4.extend = function extend(extensions) {
1252
- var doc = Array.isArray(extensions) ? parse(extensions.join('\n')) : extensions;
1253
- var schemaExtensions = [];
1254
- doc.definitions.forEach(function (definition) {
1255
- if (isSchemaDefinitionAST(definition)) {
1256
- schemaExtensions.push(definition);
1257
- }
1258
- });
1259
-
1260
- if (schemaExtensions.length > 0) {
1261
- return new Schema(this._typeMap.extend(schemaExtensions));
1262
- }
1263
-
1264
- return this;
1265
- };
1266
-
1267
- return Schema;
1268
- }();
1269
-
1270
- var TypeMap = /*#__PURE__*/function () {
1271
- function TypeMap(source, extensions) {
1272
- this._types = new Map([['ID', new ScalarType('ID', false)], ['String', new ScalarType('String', false)], ['Boolean', new ScalarType('Boolean', false)], ['Float', new ScalarType('Float', false)], ['Int', new ScalarType('Int', false)]]);
1273
- this._typeInterfaces = new Map();
1274
- this._unionTypes = new Map();
1275
- this._interfaceImplementations = new Map();
1276
- this._fields = new Map();
1277
- this._inputFields = new Map();
1278
- this._directives = new Map([['include', {
1279
- name: 'include',
1280
- isClient: false,
1281
- locations: ['FIELD', 'FRAGMENT_SPREAD', 'INLINE_FRAGMENT'],
1282
- args: [{
1283
- name: 'if',
1284
- typeNode: parseType('Boolean!'),
1285
- defaultValue: undefined
1286
- }]
1287
- }], ['skip', {
1288
- name: 'skip',
1289
- isClient: false,
1290
- locations: ['FIELD', 'FRAGMENT_SPREAD', 'INLINE_FRAGMENT'],
1291
- args: [{
1292
- name: 'if',
1293
- typeNode: parseType('Boolean!'),
1294
- defaultValue: undefined
1295
- }]
1296
- }], ['deprecated', {
1297
- name: 'deprecated',
1298
- isClient: false,
1299
- locations: ['FIELD_DEFINITION', 'ENUM_VALUE'],
1300
- args: [{
1301
- name: 'reason',
1302
- typeNode: parseType('String'),
1303
- defaultValue: {
1304
- kind: 'StringValue',
1305
- value: 'No longer supported'
1306
- }
1307
- }]
1308
- }]]);
1309
- this._queryTypeName = 'Query';
1310
- this._mutationTypeName = 'Mutation';
1311
- this._subscriptionTypeName = 'Subscription';
1312
- this._source = source;
1313
- this._extensions = extensions;
1314
- this._fetchable = new Map();
1315
-
1316
- this._parse(source);
1317
-
1318
- this._extend(extensions);
1319
- }
1320
-
1321
- var _proto5 = TypeMap.prototype;
1322
-
1323
- _proto5._parse = function _parse(source) {
1324
- var _this5 = this;
1325
-
1326
- var document = parse(source, {
1327
- noLocation: true
1328
- });
1329
- document.definitions.forEach(function (definition) {
1330
- switch (definition.kind) {
1331
- case 'SchemaDefinition':
1332
- {
1333
- _this5._parseSchemaDefinition(definition);
1334
-
1335
- break;
1336
- }
1337
-
1338
- case 'ScalarTypeDefinition':
1339
- {
1340
- _this5._parseScalarNode(definition, false);
1341
-
1342
- break;
1343
- }
1344
-
1345
- case 'EnumTypeDefinition':
1346
- {
1347
- _this5._parseEnumNode(definition, false);
1348
-
1349
- break;
1350
- }
1351
-
1352
- case 'ObjectTypeDefinition':
1353
- {
1354
- _this5._parseObjectTypeNode(definition, false);
1355
-
1356
- break;
1357
- }
1358
-
1359
- case 'InputObjectTypeDefinition':
1360
- {
1361
- _this5._parseInputObjectTypeNode(definition, false);
1362
-
1363
- break;
1364
- }
1365
-
1366
- case 'UnionTypeDefinition':
1367
- {
1368
- _this5._parseUnionNode(definition, false);
1369
-
1370
- break;
1371
- }
1372
-
1373
- case 'InterfaceTypeDefinition':
1374
- {
1375
- _this5._parseInterfaceNode(definition, false);
1376
-
1377
- break;
1378
- }
1379
-
1380
- case 'DirectiveDefinition':
1381
- {
1382
- _this5._parseDirective(definition, false);
1383
-
1384
- break;
1385
- }
1386
- }
1387
- });
1388
- };
1389
-
1390
- _proto5._parseSchemaDefinition = function _parseSchemaDefinition(node) {
1391
- var _this6 = this;
1392
-
1393
- node.operationTypes.forEach(function (operationType) {
1394
- switch (operationType.operation) {
1395
- case 'query':
1396
- _this6._queryTypeName = operationType.type.name.value;
1397
- break;
1398
-
1399
- case 'mutation':
1400
- _this6._mutationTypeName = operationType.type.name.value;
1401
- break;
1402
-
1403
- case 'subscription':
1404
- _this6._subscriptionTypeName = operationType.type.name.value;
1405
- break;
1406
- }
1407
- });
1408
- };
1409
-
1410
- _proto5._parseScalarNode = function _parseScalarNode(node, isClient) {
1411
- var name = node.name.value;
1412
-
1413
- if (!isDefaultScalar(name) && this._types.has(name)) {
1414
- throw createCompilerError("_parseScalarNode: Duplicate definition for type ".concat(name, "."), null, [node]);
1415
- }
1416
-
1417
- this._types.set(name, new ScalarType(name, isClient));
1418
- };
1419
-
1420
- _proto5._parseEnumNode = function _parseEnumNode(node, isClient) {
1421
- var name = node.name.value;
1422
-
1423
- if (this._types.has(name)) {
1424
- throw createCompilerError("_parseEnumNode: Duplicate definition for type ".concat(name, "."), null, [node]);
1425
- } // SDL doesn't have information about the actual ENUM values
1426
-
1427
-
1428
- var values = node.values ? node.values.map(function (value) {
1429
- return value.name.value;
1430
- }) : [];
1431
-
1432
- this._types.set(name, new EnumType(name, values, isClient));
1433
- };
1434
-
1435
- _proto5._parseObjectTypeNode = function _parseObjectTypeNode(node, isClient) {
1436
- var _this7 = this;
1437
-
1438
- var _this$_types$get;
1439
-
1440
- var name = node.name.value; // Objects may be created by _parseUnionNode
1441
-
1442
- var type = (_this$_types$get = this._types.get(name)) !== null && _this$_types$get !== void 0 ? _this$_types$get : new ObjectType(name, isClient);
1443
-
1444
- if (!(type instanceof ObjectType)) {
1445
- throw createCompilerError("_parseObjectTypeNode: Expected object type, got ".concat(String(type)), null, [node]);
1446
- }
1447
-
1448
- if (type.isClient !== isClient) {
1449
- throw createCompilerError("_parseObjectTypeNode: Cannot create object type '".concat(name, "' defined as a client type."), null, [node]);
1450
- }
1451
-
1452
- var typeInterfaces = [];
1453
- node.interfaces && node.interfaces.forEach(function (interfaceTypeNode) {
1454
- var _this$_interfaceImple;
1455
-
1456
- var interfaceName = interfaceTypeNode.name.value;
1457
-
1458
- var interfaceType = _this7._types.get(interfaceName);
1459
-
1460
- if (!interfaceType) {
1461
- interfaceType = new InterfaceType(interfaceName, isClient);
1462
-
1463
- _this7._types.set(interfaceName, interfaceType);
1464
- }
1465
-
1466
- if (!(interfaceType instanceof InterfaceType)) {
1467
- throw createCompilerError('_parseObjectTypeNode: Expected interface type', null, [interfaceTypeNode]);
1468
- }
1469
-
1470
- var implementations = (_this$_interfaceImple = _this7._interfaceImplementations.get(interfaceType)) !== null && _this$_interfaceImple !== void 0 ? _this$_interfaceImple : new Set();
1471
- implementations.add(type);
1472
-
1473
- _this7._interfaceImplementations.set(interfaceType, implementations);
1474
-
1475
- typeInterfaces.push(interfaceType);
1476
- });
1477
- var fetchable = null;
1478
- node.directives && node.directives.forEach(function (directiveNode) {
1479
- if (directiveNode.name.value === 'fetchable') {
1480
- var field_name_arg = directiveNode.arguments && directiveNode.arguments.find(function (arg) {
1481
- return arg.name.value === 'field_name';
1482
- });
1483
-
1484
- if (field_name_arg != null && field_name_arg.value.kind === 'StringValue') {
1485
- fetchable = {
1486
- field_name: field_name_arg.value.value
1487
- };
1488
- }
1489
- }
1490
- });
1491
-
1492
- this._typeInterfaces.set(type, typeInterfaces);
1493
-
1494
- this._types.set(name, type);
1495
-
1496
- if (fetchable != null) {
1497
- this._fetchable.set(type, fetchable);
1498
- }
1499
-
1500
- node.fields && this._handleTypeFieldsStrict(type, node.fields, isClient);
1501
- };
1502
-
1503
- _proto5._parseInputObjectTypeNode = function _parseInputObjectTypeNode(node, isClient) {
1504
- var name = node.name.value;
1505
-
1506
- if (this._types.has(name)) {
1507
- throw createCompilerError('_parseInputObjectTypeNode: Unable to parse schema file. Duplicate definition for object type', null, [node]);
1508
- }
1509
-
1510
- var type = new InputObjectType(name, isClient);
1511
-
1512
- this._types.set(name, type);
1513
-
1514
- this._parseInputObjectFields(type, node);
1515
- };
1516
-
1517
- _proto5._parseUnionNode = function _parseUnionNode(node, isClient) {
1518
- var _this8 = this;
1519
-
1520
- var name = node.name.value;
1521
-
1522
- if (this._types.has(name)) {
1523
- throw createCompilerError('_parseUnionNode: Unable to parse schema file. Duplicate definition for object type', null, [node]);
1524
- }
1525
-
1526
- var union = new UnionType(name, isClient);
1527
-
1528
- this._types.set(name, union);
1529
-
1530
- this._unionTypes.set(union, new Set(node.types ? node.types.map(function (typeInUnion) {
1531
- var _this$_types$get2;
1532
-
1533
- var typeInUnionName = typeInUnion.name.value;
1534
- var object = (_this$_types$get2 = _this8._types.get(typeInUnionName)) !== null && _this$_types$get2 !== void 0 ? _this$_types$get2 : new ObjectType(typeInUnionName, false);
1535
-
1536
- if (!(object instanceof ObjectType)) {
1537
- throw createCompilerError('_parseUnionNode: Expected object type', null, [typeInUnion]);
1538
- }
1539
-
1540
- _this8._types.set(typeInUnionName, object);
1541
-
1542
- return object;
1543
- }) : []));
1544
- };
1545
-
1546
- _proto5._parseInterfaceNode = function _parseInterfaceNode(node, isClient) {
1547
- var name = node.name.value;
1548
-
1549
- var type = this._types.get(name);
1550
-
1551
- if (!type) {
1552
- type = new InterfaceType(name, isClient);
1553
-
1554
- this._types.set(name, type);
1555
- }
1556
-
1557
- if (!(type instanceof InterfaceType)) {
1558
- throw createCompilerError("_parseInterfaceNode: Expected interface type. Got ".concat(String(type)), null, [node]);
1559
- }
1560
-
1561
- if (type.isClient !== isClient) {
1562
- throw createCompilerError("_parseInterfaceNode: Cannot create interface '".concat(name, "' defined as a client interface"), null, [node]);
1563
- }
1564
-
1565
- node.fields && this._handleTypeFieldsStrict(type, node.fields, isClient);
1566
- };
1567
-
1568
- _proto5._handleTypeFieldsStrict = function _handleTypeFieldsStrict(type, fields, isClient) {
1569
- if (this._fields.has(type)) {
1570
- throw createCompilerError('_handleTypeFieldsStrict: Unable to parse schema file. Duplicate definition for object type');
1571
- }
1572
-
1573
- this._handleTypeFields(type, fields, isClient);
1574
- };
1575
-
1576
- _proto5._handleTypeFields = function _handleTypeFields(type, fields, isClient) {
1577
- var _this$_fields$get;
1578
-
1579
- var fieldsMap = (_this$_fields$get = this._fields.get(type)) !== null && _this$_fields$get !== void 0 ? _this$_fields$get : new Map();
1580
- fields.forEach(function (fieldNode) {
1581
- var fieldName = fieldNode.name.value;
1582
-
1583
- if (fieldsMap.has(fieldName)) {
1584
- throw createCompilerError("_handleTypeFields: Duplicate definition for field '".concat(fieldName, "'."));
1585
- }
1586
-
1587
- fieldsMap.set(fieldName, {
1588
- arguments: fieldNode.arguments ? fieldNode.arguments.map(function (arg) {
1589
- return {
1590
- name: arg.name.value,
1591
- typeNode: arg.type,
1592
- defaultValue: arg.defaultValue
1593
- };
1594
- }) : [],
1595
- directives: fieldNode.directives ? fieldNode.directives.map(function (directive) {
1596
- return {
1597
- name: directive.name.value,
1598
- args: directive.arguments ? directive.arguments.map(function (arg) {
1599
- return {
1600
- name: arg.name.value,
1601
- value: arg.value
1602
- };
1603
- }) : []
1604
- };
1605
- }) : null,
1606
- type: fieldNode.type,
1607
- isClient: isClient
1608
- });
1609
- });
1610
-
1611
- this._fields.set(type, fieldsMap);
1612
- };
1613
-
1614
- _proto5._parseInputObjectFields = function _parseInputObjectFields(type, node) {
1615
- if (this._inputFields.has(type)) {
1616
- throw createCompilerError('_parseInputObjectFields: Unable to parse schema file. Duplicate definition for type', null, [node]);
1617
- }
1618
-
1619
- var fields = new Map();
1620
-
1621
- if (node.fields) {
1622
- node.fields.forEach(function (fieldNode) {
1623
- fields.set(fieldNode.name.value, fieldNode.type);
1624
- });
1625
- }
1626
-
1627
- this._inputFields.set(type, fields);
1628
- };
1629
-
1630
- _proto5._parseDirective = function _parseDirective(node, isClient) {
1631
- var name = node.name.value;
1632
-
1633
- this._directives.set(name, {
1634
- name: name,
1635
- args: node.arguments ? node.arguments.map(function (arg) {
1636
- return {
1637
- name: arg.name.value,
1638
- typeNode: arg.type,
1639
- defaultValue: arg.defaultValue
1640
- };
1641
- }) : [],
1642
- locations: node.locations.map(function (location) {
1643
- switch (location.value) {
1644
- case 'QUERY':
1645
- case 'MUTATION':
1646
- case 'SUBSCRIPTION':
1647
- case 'FIELD':
1648
- case 'FRAGMENT_DEFINITION':
1649
- case 'FRAGMENT_SPREAD':
1650
- case 'INLINE_FRAGMENT':
1651
- case 'VARIABLE_DEFINITION':
1652
- case 'SCHEMA':
1653
- case 'SCALAR':
1654
- case 'OBJECT':
1655
- case 'FIELD_DEFINITION':
1656
- case 'ARGUMENT_DEFINITION':
1657
- case 'INTERFACE':
1658
- case 'UNION':
1659
- case 'ENUM':
1660
- case 'ENUM_VALUE':
1661
- case 'INPUT_OBJECT':
1662
- case 'INPUT_FIELD_DEFINITION':
1663
- return location.value;
1664
-
1665
- default:
1666
- throw createCompilerError('Invalid directive location');
1667
- }
1668
- }),
1669
- isClient: isClient
1670
- });
1671
- };
1672
-
1673
- _proto5._parseObjectTypeExtension = function _parseObjectTypeExtension(node) {
1674
- var type = this._types.get(node.name.value);
1675
-
1676
- if (!(type instanceof ObjectType)) {
1677
- throw createCompilerError("_parseObjectTypeExtension: Expected to find type with the name '".concat(node.name.value, "'"), null, [node]);
1678
- }
1679
-
1680
- node.fields && this._handleTypeFields(type, node.fields, true
1681
- /** client fields */
1682
- );
1683
- };
1684
-
1685
- _proto5._parseInterfaceTypeExtension = function _parseInterfaceTypeExtension(node) {
1686
- var type = this._types.get(node.name.value);
1687
-
1688
- if (!(type instanceof InterfaceType)) {
1689
- throw createCompilerError('_parseInterfaceTypeExtension: Expected to have an interface type');
1690
- }
1691
-
1692
- node.fields && this._handleTypeFields(type, node.fields, true);
1693
- };
1694
-
1695
- _proto5._extend = function _extend(extensions) {
1696
- var _this9 = this;
1697
-
1698
- extensions.forEach(function (definition) {
1699
- if (definition.kind === 'ObjectTypeDefinition') {
1700
- _this9._parseObjectTypeNode(definition, true);
1701
- } else if (definition.kind === 'InterfaceTypeDefinition') {
1702
- _this9._parseInterfaceNode(definition, true);
1703
- } else if (definition.kind === 'ScalarTypeDefinition') {
1704
- _this9._parseScalarNode(definition, true);
1705
- } else if (definition.kind === 'EnumTypeDefinition') {
1706
- _this9._parseEnumNode(definition, true);
1707
- } else if (definition.kind === 'InterfaceTypeExtension') {
1708
- _this9._parseInterfaceTypeExtension(definition);
1709
- } else if (definition.kind === 'ObjectTypeExtension') {
1710
- _this9._parseObjectTypeExtension(definition);
1711
- } else if (definition.kind === 'DirectiveDefinition') {
1712
- _this9._parseDirective(definition, true
1713
- /* client directive */
1714
- );
1715
- } else {
1716
- throw createCompilerError("Unexpected extension kind: '".concat(definition.kind, "'"), null, [definition]);
1717
- }
1718
- });
1719
- };
1720
-
1721
- _proto5.getTypes = function getTypes() {
1722
- return Array.from(this._types.values());
1723
- };
1724
-
1725
- _proto5.getTypeByName = function getTypeByName(typename) {
1726
- return this._types.get(typename);
1727
- };
1728
-
1729
- _proto5.getInterfaces = function getInterfaces(type) {
1730
- var _this$_typeInterfaces;
1731
-
1732
- return (_this$_typeInterfaces = this._typeInterfaces.get(type)) !== null && _this$_typeInterfaces !== void 0 ? _this$_typeInterfaces : [];
1733
- };
1734
-
1735
- _proto5.getPossibleTypeSet = function getPossibleTypeSet(type) {
1736
- var set;
1737
-
1738
- if (type instanceof InterfaceType) {
1739
- var _this$_interfaceImple2;
1740
-
1741
- set = (_this$_interfaceImple2 = this._interfaceImplementations.get(type)) !== null && _this$_interfaceImple2 !== void 0 ? _this$_interfaceImple2 : new Set();
1742
- } else if (type instanceof UnionType) {
1743
- var _this$_unionTypes$get;
1744
-
1745
- set = (_this$_unionTypes$get = this._unionTypes.get(type)) !== null && _this$_unionTypes$get !== void 0 ? _this$_unionTypes$get : new Set();
1746
- } else {
1747
- throw createCompilerError('Invalid type supplied to "getPossibleTypeSet"');
1748
- }
1749
-
1750
- if (!set) {
1751
- throw createCompilerError("Unable to find possible types for ".concat(type.name));
1752
- }
1753
-
1754
- return set;
1755
- };
1756
-
1757
- _proto5.getFetchableFieldName = function getFetchableFieldName(type) {
1758
- var _this$_fetchable$get$, _this$_fetchable$get;
1759
-
1760
- return (_this$_fetchable$get$ = (_this$_fetchable$get = this._fetchable.get(type)) === null || _this$_fetchable$get === void 0 ? void 0 : _this$_fetchable$get.field_name) !== null && _this$_fetchable$get$ !== void 0 ? _this$_fetchable$get$ : null;
1761
- };
1762
-
1763
- _proto5.getQueryType = function getQueryType() {
1764
- return this._types.get(this._queryTypeName);
1765
- };
1766
-
1767
- _proto5.getMutationType = function getMutationType() {
1768
- return this._types.get(this._mutationTypeName);
1769
- };
1770
-
1771
- _proto5.getSubscriptionType = function getSubscriptionType() {
1772
- return this._types.get(this._subscriptionTypeName);
1773
- };
1774
-
1775
- _proto5.getField = function getField(type, fieldName) {
1776
- var fields = this._fields.get(type);
1777
-
1778
- if (fields) {
1779
- return fields.get(fieldName);
1780
- }
1781
- };
1782
-
1783
- _proto5.getFieldMap = function getFieldMap(type) {
1784
- return this._fields.get(type);
1785
- };
1786
-
1787
- _proto5.getInputField = function getInputField(type, fieldName) {
1788
- var inputFields = this._inputFields.get(type);
1789
-
1790
- if (inputFields) {
1791
- return inputFields.get(fieldName);
1792
- }
1793
- };
1794
-
1795
- _proto5.getInputFieldMap = function getInputFieldMap(type) {
1796
- return this._inputFields.get(type);
1797
- };
1798
-
1799
- _proto5.getDirectives = function getDirectives() {
1800
- return Array.from(this._directives.values());
1801
- };
1802
-
1803
- _proto5.extend = function extend(extensions) {
1804
- return new TypeMap(this._source, this._extensions.concat(extensions));
1805
- };
1806
-
1807
- return TypeMap;
1808
- }();
1809
-
1810
- function create(baseSchema, schemaExtensionDocuments, schemaExtensions) {
1811
- var extensions = [];
1812
- schemaExtensions && schemaExtensions.forEach(function (source) {
1813
- var doc = parse(source, {
1814
- noLocation: true
1815
- });
1816
- doc.definitions.forEach(function (definition) {
1817
- if (isSchemaDefinitionAST(definition)) {
1818
- extensions.push(definition);
1819
- }
1820
- });
1821
- });
1822
- schemaExtensionDocuments && schemaExtensionDocuments.forEach(function (doc) {
1823
- doc.definitions.forEach(function (definition) {
1824
- if (isSchemaDefinitionAST(definition)) {
1825
- extensions.push(definition);
1826
- }
1827
- });
1828
- });
1829
- return new Schema(new TypeMap(baseSchema, extensions));
1830
- }
1831
-
1832
- function parseInputArgumentDefinitions(schema, args) {
1833
- return args.map(function (arg) {
1834
- var argType = schema.assertInputType(schema.expectTypeFromAST(arg.typeNode));
1835
- var defaultValue;
1836
- var defaultValueNode = arg.defaultValue;
1837
-
1838
- if (defaultValueNode != null) {
1839
- var nullableType = schema.getNullableType(argType);
1840
- var isNullable = schema.isNonNull(argType) === false;
1841
-
1842
- if (isNullable && defaultValueNode.kind === 'NullValue') {
1843
- defaultValue = null;
1844
- } else {
1845
- if (nullableType instanceof ScalarType || nullableType instanceof EnumType) {
1846
- defaultValue = schema.parseLiteral(nullableType, defaultValueNode);
1847
- } else if (nullableType instanceof List && defaultValueNode.kind === 'ListValue' || nullableType instanceof InputObjectType && defaultValueNode.kind === 'ObjectValue') {
1848
- defaultValue = valueFromASTUntyped(defaultValueNode);
1849
- }
1850
- }
1851
-
1852
- if (defaultValue === undefined) {
1853
- throw createCompilerError("parseInputArgumentDefinitions: Unexpected default value: ".concat(String(defaultValueNode), ". Expected to have a value of type ").concat(String(nullableType), "."));
1854
- }
1855
- }
1856
-
1857
- return {
1858
- name: arg.name,
1859
- type: argType,
1860
- defaultValue: defaultValue
1861
- };
1862
- });
1863
- }
1864
-
1865
- function parseInputArgumentDefinitionsMap(schema, args) {
1866
- return new Map(parseInputArgumentDefinitions(schema, args).map(function (arg) {
1867
- return [arg.name, arg];
1868
- }));
1869
- }
1870
-
1871
- function isDefaultScalar(name) {
1872
- return new Set(['ID', 'String', 'Boolean', 'Int', 'Float']).has(name);
1873
- }
1874
-
1875
- module.exports = {
1876
- create: create
1877
- };