1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.extendSchema = extendSchema;
|
7 |
|
8 | var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
|
9 |
|
10 | var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
|
11 |
|
12 | var _mapValue = _interopRequireDefault(require("../jsutils/mapValue"));
|
13 |
|
14 | var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap"));
|
15 |
|
16 | var _buildASTSchema = require("./buildASTSchema");
|
17 |
|
18 | var _validate = require("../validation/validate");
|
19 |
|
20 | var _schema = require("../type/schema");
|
21 |
|
22 | var _introspection = require("../type/introspection");
|
23 |
|
24 | var _scalars = require("../type/scalars");
|
25 |
|
26 | var _definition = require("../type/definition");
|
27 |
|
28 | var _directives = require("../type/directives");
|
29 |
|
30 | var _kinds = require("../language/kinds");
|
31 |
|
32 | var _predicates = require("../language/predicates");
|
33 |
|
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
35 |
|
36 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
|
37 |
|
38 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | function extendSchema(schema, documentAST, options) {
|
59 | (0, _schema.assertSchema)(schema);
|
60 | !(documentAST && documentAST.kind === _kinds.Kind.DOCUMENT) ? (0, _invariant.default)(0, 'Must provide valid Document AST') : void 0;
|
61 |
|
62 | if (!options || !(options.assumeValid || options.assumeValidSDL)) {
|
63 | (0, _validate.assertValidSDLExtension)(documentAST, schema);
|
64 | }
|
65 |
|
66 |
|
67 | var typeDefinitionMap = Object.create(null);
|
68 | var typeExtensionsMap = Object.create(null);
|
69 |
|
70 |
|
71 | var directiveDefinitions = [];
|
72 | var schemaDef;
|
73 |
|
74 | var schemaExtensions = [];
|
75 | var _iteratorNormalCompletion = true;
|
76 | var _didIteratorError = false;
|
77 | var _iteratorError = undefined;
|
78 |
|
79 | try {
|
80 | for (var _iterator = documentAST.definitions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
81 | var def = _step.value;
|
82 |
|
83 | if (def.kind === _kinds.Kind.SCHEMA_DEFINITION) {
|
84 | schemaDef = def;
|
85 | } else if (def.kind === _kinds.Kind.SCHEMA_EXTENSION) {
|
86 | schemaExtensions.push(def);
|
87 | } else if ((0, _predicates.isTypeDefinitionNode)(def)) {
|
88 | var typeName = def.name.value;
|
89 | typeDefinitionMap[typeName] = def;
|
90 | } else if ((0, _predicates.isTypeExtensionNode)(def)) {
|
91 | var extendedTypeName = def.name.value;
|
92 | var existingTypeExtensions = typeExtensionsMap[extendedTypeName];
|
93 | typeExtensionsMap[extendedTypeName] = existingTypeExtensions ? existingTypeExtensions.concat([def]) : [def];
|
94 | } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {
|
95 | directiveDefinitions.push(def);
|
96 | }
|
97 | }
|
98 |
|
99 |
|
100 | } catch (err) {
|
101 | _didIteratorError = true;
|
102 | _iteratorError = err;
|
103 | } finally {
|
104 | try {
|
105 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
106 | _iterator.return();
|
107 | }
|
108 | } finally {
|
109 | if (_didIteratorError) {
|
110 | throw _iteratorError;
|
111 | }
|
112 | }
|
113 | }
|
114 |
|
115 | if (Object.keys(typeExtensionsMap).length === 0 && Object.keys(typeDefinitionMap).length === 0 && directiveDefinitions.length === 0 && schemaExtensions.length === 0 && !schemaDef) {
|
116 | return schema;
|
117 | }
|
118 |
|
119 | var astBuilder = new _buildASTSchema.ASTDefinitionBuilder(typeDefinitionMap, options, function (typeName) {
|
120 | var existingType = schema.getType(typeName);
|
121 | !existingType ? (0, _invariant.default)(0, "Unknown type: \"".concat(typeName, "\".")) : void 0;
|
122 | return extendNamedType(existingType);
|
123 | });
|
124 | var extendTypeCache = Object.create(null);
|
125 |
|
126 | var operationTypes = {
|
127 | query: extendMaybeNamedType(schema.getQueryType()),
|
128 | mutation: extendMaybeNamedType(schema.getMutationType()),
|
129 | subscription: extendMaybeNamedType(schema.getSubscriptionType())
|
130 | };
|
131 |
|
132 | if (schemaDef) {
|
133 | var _iteratorNormalCompletion2 = true;
|
134 | var _didIteratorError2 = false;
|
135 | var _iteratorError2 = undefined;
|
136 |
|
137 | try {
|
138 | for (var _iterator2 = schemaDef.operationTypes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
139 | var _ref2 = _step2.value;
|
140 | var operation = _ref2.operation;
|
141 | var type = _ref2.type;
|
142 |
|
143 |
|
144 |
|
145 | operationTypes[operation] = astBuilder.buildType(type);
|
146 | }
|
147 | } catch (err) {
|
148 | _didIteratorError2 = true;
|
149 | _iteratorError2 = err;
|
150 | } finally {
|
151 | try {
|
152 | if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
153 | _iterator2.return();
|
154 | }
|
155 | } finally {
|
156 | if (_didIteratorError2) {
|
157 | throw _iteratorError2;
|
158 | }
|
159 | }
|
160 | }
|
161 | }
|
162 |
|
163 |
|
164 | for (var _i = 0; _i < schemaExtensions.length; _i++) {
|
165 | var schemaExtension = schemaExtensions[_i];
|
166 |
|
167 | if (schemaExtension.operationTypes) {
|
168 | var _iteratorNormalCompletion14 = true;
|
169 | var _didIteratorError14 = false;
|
170 | var _iteratorError14 = undefined;
|
171 |
|
172 | try {
|
173 | for (var _iterator14 = schemaExtension.operationTypes[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
|
174 | var _ref4 = _step14.value;
|
175 | var _operation = _ref4.operation;
|
176 | var _type = _ref4.type;
|
177 |
|
178 |
|
179 |
|
180 | operationTypes[_operation] = astBuilder.buildType(_type);
|
181 | }
|
182 | } catch (err) {
|
183 | _didIteratorError14 = true;
|
184 | _iteratorError14 = err;
|
185 | } finally {
|
186 | try {
|
187 | if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
|
188 | _iterator14.return();
|
189 | }
|
190 | } finally {
|
191 | if (_didIteratorError14) {
|
192 | throw _iteratorError14;
|
193 | }
|
194 | }
|
195 | }
|
196 | }
|
197 | }
|
198 |
|
199 | var schemaExtensionASTNodes = schemaExtensions ? schema.extensionASTNodes ? schema.extensionASTNodes.concat(schemaExtensions) : schemaExtensions : schema.extensionASTNodes;
|
200 | var types = [].concat((0, _objectValues.default)(schema.getTypeMap()).map(function (type) {
|
201 | return extendNamedType(type);
|
202 | }), (0, _objectValues.default)(typeDefinitionMap).map(function (type) {
|
203 | return astBuilder.buildType(type);
|
204 | }));
|
205 |
|
206 | var allowedLegacyNames = schema.__allowedLegacyNames.concat(options && options.allowedLegacyNames || []);
|
207 |
|
208 |
|
209 | return new _schema.GraphQLSchema(_objectSpread({}, operationTypes, {
|
210 | types: types,
|
211 | directives: getMergedDirectives(),
|
212 | astNode: schema.astNode,
|
213 | extensionASTNodes: schemaExtensionASTNodes,
|
214 | allowedLegacyNames: allowedLegacyNames
|
215 | }));
|
216 |
|
217 |
|
218 | function getMergedDirectives() {
|
219 | var existingDirectives = schema.getDirectives().map(extendDirective);
|
220 | !existingDirectives ? (0, _invariant.default)(0, 'schema must have default directives') : void 0;
|
221 | return existingDirectives.concat(directiveDefinitions.map(function (node) {
|
222 | return astBuilder.buildDirective(node);
|
223 | }));
|
224 | }
|
225 |
|
226 | function extendMaybeNamedType(type) {
|
227 | return type ? extendNamedType(type) : null;
|
228 | }
|
229 |
|
230 | function extendNamedType(type) {
|
231 | if ((0, _introspection.isIntrospectionType)(type) || (0, _scalars.isSpecifiedScalarType)(type)) {
|
232 |
|
233 | return type;
|
234 | }
|
235 |
|
236 | var name = type.name;
|
237 |
|
238 | if (!extendTypeCache[name]) {
|
239 | if ((0, _definition.isScalarType)(type)) {
|
240 | extendTypeCache[name] = extendScalarType(type);
|
241 | } else if ((0, _definition.isObjectType)(type)) {
|
242 | extendTypeCache[name] = extendObjectType(type);
|
243 | } else if ((0, _definition.isInterfaceType)(type)) {
|
244 | extendTypeCache[name] = extendInterfaceType(type);
|
245 | } else if ((0, _definition.isUnionType)(type)) {
|
246 | extendTypeCache[name] = extendUnionType(type);
|
247 | } else if ((0, _definition.isEnumType)(type)) {
|
248 | extendTypeCache[name] = extendEnumType(type);
|
249 | } else if ((0, _definition.isInputObjectType)(type)) {
|
250 | extendTypeCache[name] = extendInputObjectType(type);
|
251 | }
|
252 | }
|
253 |
|
254 | return extendTypeCache[name];
|
255 | }
|
256 |
|
257 | function extendDirective(directive) {
|
258 | return new _directives.GraphQLDirective({
|
259 | name: directive.name,
|
260 | description: directive.description,
|
261 | locations: directive.locations,
|
262 | args: extendArgs(directive.args),
|
263 | astNode: directive.astNode
|
264 | });
|
265 | }
|
266 |
|
267 | function extendInputObjectType(type) {
|
268 | var name = type.name;
|
269 | var extensionASTNodes = typeExtensionsMap[name] ? type.extensionASTNodes ? type.extensionASTNodes.concat(typeExtensionsMap[name]) : typeExtensionsMap[name] : type.extensionASTNodes;
|
270 | return new _definition.GraphQLInputObjectType({
|
271 | name: name,
|
272 | description: type.description,
|
273 | fields: function fields() {
|
274 | return extendInputFieldMap(type);
|
275 | },
|
276 | astNode: type.astNode,
|
277 | extensionASTNodes: extensionASTNodes
|
278 | });
|
279 | }
|
280 |
|
281 | function extendInputFieldMap(type) {
|
282 | var newFieldMap = (0, _mapValue.default)(type.getFields(), function (field) {
|
283 | return {
|
284 | description: field.description,
|
285 | type: extendType(field.type),
|
286 | defaultValue: field.defaultValue,
|
287 | astNode: field.astNode
|
288 | };
|
289 | });
|
290 |
|
291 | var extensions = typeExtensionsMap[type.name];
|
292 |
|
293 | if (extensions) {
|
294 | var _iteratorNormalCompletion3 = true;
|
295 | var _didIteratorError3 = false;
|
296 | var _iteratorError3 = undefined;
|
297 |
|
298 | try {
|
299 | for (var _iterator3 = extensions[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
300 | var extension = _step3.value;
|
301 | var _iteratorNormalCompletion4 = true;
|
302 | var _didIteratorError4 = false;
|
303 | var _iteratorError4 = undefined;
|
304 |
|
305 | try {
|
306 | for (var _iterator4 = extension.fields[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
307 | var field = _step4.value;
|
308 | newFieldMap[field.name.value] = astBuilder.buildInputField(field);
|
309 | }
|
310 | } catch (err) {
|
311 | _didIteratorError4 = true;
|
312 | _iteratorError4 = err;
|
313 | } finally {
|
314 | try {
|
315 | if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
|
316 | _iterator4.return();
|
317 | }
|
318 | } finally {
|
319 | if (_didIteratorError4) {
|
320 | throw _iteratorError4;
|
321 | }
|
322 | }
|
323 | }
|
324 | }
|
325 | } catch (err) {
|
326 | _didIteratorError3 = true;
|
327 | _iteratorError3 = err;
|
328 | } finally {
|
329 | try {
|
330 | if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
331 | _iterator3.return();
|
332 | }
|
333 | } finally {
|
334 | if (_didIteratorError3) {
|
335 | throw _iteratorError3;
|
336 | }
|
337 | }
|
338 | }
|
339 | }
|
340 |
|
341 | return newFieldMap;
|
342 | }
|
343 |
|
344 | function extendEnumType(type) {
|
345 | var name = type.name;
|
346 | var extensionASTNodes = typeExtensionsMap[name] ? type.extensionASTNodes ? type.extensionASTNodes.concat(typeExtensionsMap[name]) : typeExtensionsMap[name] : type.extensionASTNodes;
|
347 | return new _definition.GraphQLEnumType({
|
348 | name: name,
|
349 | description: type.description,
|
350 | values: extendValueMap(type),
|
351 | astNode: type.astNode,
|
352 | extensionASTNodes: extensionASTNodes
|
353 | });
|
354 | }
|
355 |
|
356 | function extendValueMap(type) {
|
357 | var newValueMap = Object.create(null);
|
358 | var _iteratorNormalCompletion5 = true;
|
359 | var _didIteratorError5 = false;
|
360 | var _iteratorError5 = undefined;
|
361 |
|
362 | try {
|
363 | for (var _iterator5 = type.getValues()[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
364 | var _value = _step5.value;
|
365 | newValueMap[_value.name] = {
|
366 | description: _value.description,
|
367 | value: _value.value,
|
368 | deprecationReason: _value.deprecationReason,
|
369 | astNode: _value.astNode
|
370 | };
|
371 | }
|
372 |
|
373 | } catch (err) {
|
374 | _didIteratorError5 = true;
|
375 | _iteratorError5 = err;
|
376 | } finally {
|
377 | try {
|
378 | if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
|
379 | _iterator5.return();
|
380 | }
|
381 | } finally {
|
382 | if (_didIteratorError5) {
|
383 | throw _iteratorError5;
|
384 | }
|
385 | }
|
386 | }
|
387 |
|
388 | var extensions = typeExtensionsMap[type.name];
|
389 |
|
390 | if (extensions) {
|
391 | var _iteratorNormalCompletion6 = true;
|
392 | var _didIteratorError6 = false;
|
393 | var _iteratorError6 = undefined;
|
394 |
|
395 | try {
|
396 | for (var _iterator6 = extensions[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
|
397 | var extension = _step6.value;
|
398 | var _iteratorNormalCompletion7 = true;
|
399 | var _didIteratorError7 = false;
|
400 | var _iteratorError7 = undefined;
|
401 |
|
402 | try {
|
403 | for (var _iterator7 = extension.values[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
|
404 | var value = _step7.value;
|
405 | newValueMap[value.name.value] = astBuilder.buildEnumValue(value);
|
406 | }
|
407 | } catch (err) {
|
408 | _didIteratorError7 = true;
|
409 | _iteratorError7 = err;
|
410 | } finally {
|
411 | try {
|
412 | if (!_iteratorNormalCompletion7 && _iterator7.return != null) {
|
413 | _iterator7.return();
|
414 | }
|
415 | } finally {
|
416 | if (_didIteratorError7) {
|
417 | throw _iteratorError7;
|
418 | }
|
419 | }
|
420 | }
|
421 | }
|
422 | } catch (err) {
|
423 | _didIteratorError6 = true;
|
424 | _iteratorError6 = err;
|
425 | } finally {
|
426 | try {
|
427 | if (!_iteratorNormalCompletion6 && _iterator6.return != null) {
|
428 | _iterator6.return();
|
429 | }
|
430 | } finally {
|
431 | if (_didIteratorError6) {
|
432 | throw _iteratorError6;
|
433 | }
|
434 | }
|
435 | }
|
436 | }
|
437 |
|
438 | return newValueMap;
|
439 | }
|
440 |
|
441 | function extendScalarType(type) {
|
442 | var name = type.name;
|
443 | var extensionASTNodes = typeExtensionsMap[name] ? type.extensionASTNodes ? type.extensionASTNodes.concat(typeExtensionsMap[name]) : typeExtensionsMap[name] : type.extensionASTNodes;
|
444 | return new _definition.GraphQLScalarType({
|
445 | name: name,
|
446 | description: type.description,
|
447 | astNode: type.astNode,
|
448 | extensionASTNodes: extensionASTNodes,
|
449 | serialize: type.serialize,
|
450 | parseValue: type.parseValue,
|
451 | parseLiteral: type.parseLiteral
|
452 | });
|
453 | }
|
454 |
|
455 | function extendObjectType(type) {
|
456 | var name = type.name;
|
457 | var extensionASTNodes = typeExtensionsMap[name] ? type.extensionASTNodes ? type.extensionASTNodes.concat(typeExtensionsMap[name]) : typeExtensionsMap[name] : type.extensionASTNodes;
|
458 | return new _definition.GraphQLObjectType({
|
459 | name: name,
|
460 | description: type.description,
|
461 | interfaces: function interfaces() {
|
462 | return extendImplementedInterfaces(type);
|
463 | },
|
464 | fields: function fields() {
|
465 | return extendFieldMap(type);
|
466 | },
|
467 | astNode: type.astNode,
|
468 | extensionASTNodes: extensionASTNodes,
|
469 | isTypeOf: type.isTypeOf
|
470 | });
|
471 | }
|
472 |
|
473 | function extendArgs(args) {
|
474 | return (0, _keyValMap.default)(args, function (arg) {
|
475 | return arg.name;
|
476 | }, function (arg) {
|
477 | return {
|
478 | type: extendType(arg.type),
|
479 | defaultValue: arg.defaultValue,
|
480 | description: arg.description,
|
481 | astNode: arg.astNode
|
482 | };
|
483 | });
|
484 | }
|
485 |
|
486 | function extendInterfaceType(type) {
|
487 | var name = type.name;
|
488 | var extensionASTNodes = typeExtensionsMap[name] ? type.extensionASTNodes ? type.extensionASTNodes.concat(typeExtensionsMap[name]) : typeExtensionsMap[name] : type.extensionASTNodes;
|
489 | return new _definition.GraphQLInterfaceType({
|
490 | name: type.name,
|
491 | description: type.description,
|
492 | fields: function fields() {
|
493 | return extendFieldMap(type);
|
494 | },
|
495 | astNode: type.astNode,
|
496 | extensionASTNodes: extensionASTNodes,
|
497 | resolveType: type.resolveType
|
498 | });
|
499 | }
|
500 |
|
501 | function extendUnionType(type) {
|
502 | var name = type.name;
|
503 | var extensionASTNodes = typeExtensionsMap[name] ? type.extensionASTNodes ? type.extensionASTNodes.concat(typeExtensionsMap[name]) : typeExtensionsMap[name] : type.extensionASTNodes;
|
504 | return new _definition.GraphQLUnionType({
|
505 | name: name,
|
506 | description: type.description,
|
507 | types: function types() {
|
508 | return extendPossibleTypes(type);
|
509 | },
|
510 | astNode: type.astNode,
|
511 | resolveType: type.resolveType,
|
512 | extensionASTNodes: extensionASTNodes
|
513 | });
|
514 | }
|
515 |
|
516 | function extendPossibleTypes(type) {
|
517 | var possibleTypes = type.getTypes().map(extendNamedType);
|
518 |
|
519 | var extensions = typeExtensionsMap[type.name];
|
520 |
|
521 | if (extensions) {
|
522 | var _iteratorNormalCompletion8 = true;
|
523 | var _didIteratorError8 = false;
|
524 | var _iteratorError8 = undefined;
|
525 |
|
526 | try {
|
527 | for (var _iterator8 = extensions[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
|
528 | var extension = _step8.value;
|
529 | var _iteratorNormalCompletion9 = true;
|
530 | var _didIteratorError9 = false;
|
531 | var _iteratorError9 = undefined;
|
532 |
|
533 | try {
|
534 | for (var _iterator9 = extension.types[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
|
535 | var namedType = _step9.value;
|
536 |
|
537 |
|
538 |
|
539 | possibleTypes.push(astBuilder.buildType(namedType));
|
540 | }
|
541 | } catch (err) {
|
542 | _didIteratorError9 = true;
|
543 | _iteratorError9 = err;
|
544 | } finally {
|
545 | try {
|
546 | if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
|
547 | _iterator9.return();
|
548 | }
|
549 | } finally {
|
550 | if (_didIteratorError9) {
|
551 | throw _iteratorError9;
|
552 | }
|
553 | }
|
554 | }
|
555 | }
|
556 | } catch (err) {
|
557 | _didIteratorError8 = true;
|
558 | _iteratorError8 = err;
|
559 | } finally {
|
560 | try {
|
561 | if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
|
562 | _iterator8.return();
|
563 | }
|
564 | } finally {
|
565 | if (_didIteratorError8) {
|
566 | throw _iteratorError8;
|
567 | }
|
568 | }
|
569 | }
|
570 | }
|
571 |
|
572 | return possibleTypes;
|
573 | }
|
574 |
|
575 | function extendImplementedInterfaces(type) {
|
576 | var interfaces = type.getInterfaces().map(extendNamedType);
|
577 |
|
578 | var extensions = typeExtensionsMap[type.name];
|
579 |
|
580 | if (extensions) {
|
581 | var _iteratorNormalCompletion10 = true;
|
582 | var _didIteratorError10 = false;
|
583 | var _iteratorError10 = undefined;
|
584 |
|
585 | try {
|
586 | for (var _iterator10 = extensions[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
|
587 | var extension = _step10.value;
|
588 | var _iteratorNormalCompletion11 = true;
|
589 | var _didIteratorError11 = false;
|
590 | var _iteratorError11 = undefined;
|
591 |
|
592 | try {
|
593 | for (var _iterator11 = extension.interfaces[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
|
594 | var namedType = _step11.value;
|
595 |
|
596 |
|
597 |
|
598 | interfaces.push(astBuilder.buildType(namedType));
|
599 | }
|
600 | } catch (err) {
|
601 | _didIteratorError11 = true;
|
602 | _iteratorError11 = err;
|
603 | } finally {
|
604 | try {
|
605 | if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
|
606 | _iterator11.return();
|
607 | }
|
608 | } finally {
|
609 | if (_didIteratorError11) {
|
610 | throw _iteratorError11;
|
611 | }
|
612 | }
|
613 | }
|
614 | }
|
615 | } catch (err) {
|
616 | _didIteratorError10 = true;
|
617 | _iteratorError10 = err;
|
618 | } finally {
|
619 | try {
|
620 | if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
|
621 | _iterator10.return();
|
622 | }
|
623 | } finally {
|
624 | if (_didIteratorError10) {
|
625 | throw _iteratorError10;
|
626 | }
|
627 | }
|
628 | }
|
629 | }
|
630 |
|
631 | return interfaces;
|
632 | }
|
633 |
|
634 | function extendFieldMap(type) {
|
635 | var newFieldMap = (0, _mapValue.default)(type.getFields(), function (field) {
|
636 | return {
|
637 | description: field.description,
|
638 | deprecationReason: field.deprecationReason,
|
639 | type: extendType(field.type),
|
640 | args: extendArgs(field.args),
|
641 | astNode: field.astNode,
|
642 | resolve: field.resolve
|
643 | };
|
644 | });
|
645 |
|
646 | var extensions = typeExtensionsMap[type.name];
|
647 |
|
648 | if (extensions) {
|
649 | var _iteratorNormalCompletion12 = true;
|
650 | var _didIteratorError12 = false;
|
651 | var _iteratorError12 = undefined;
|
652 |
|
653 | try {
|
654 | for (var _iterator12 = extensions[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
|
655 | var extension = _step12.value;
|
656 | var _iteratorNormalCompletion13 = true;
|
657 | var _didIteratorError13 = false;
|
658 | var _iteratorError13 = undefined;
|
659 |
|
660 | try {
|
661 | for (var _iterator13 = extension.fields[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
|
662 | var field = _step13.value;
|
663 | newFieldMap[field.name.value] = astBuilder.buildField(field);
|
664 | }
|
665 | } catch (err) {
|
666 | _didIteratorError13 = true;
|
667 | _iteratorError13 = err;
|
668 | } finally {
|
669 | try {
|
670 | if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
|
671 | _iterator13.return();
|
672 | }
|
673 | } finally {
|
674 | if (_didIteratorError13) {
|
675 | throw _iteratorError13;
|
676 | }
|
677 | }
|
678 | }
|
679 | }
|
680 | } catch (err) {
|
681 | _didIteratorError12 = true;
|
682 | _iteratorError12 = err;
|
683 | } finally {
|
684 | try {
|
685 | if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
|
686 | _iterator12.return();
|
687 | }
|
688 | } finally {
|
689 | if (_didIteratorError12) {
|
690 | throw _iteratorError12;
|
691 | }
|
692 | }
|
693 | }
|
694 | }
|
695 |
|
696 | return newFieldMap;
|
697 | }
|
698 |
|
699 | function extendType(typeDef) {
|
700 | if ((0, _definition.isListType)(typeDef)) {
|
701 | return (0, _definition.GraphQLList)(extendType(typeDef.ofType));
|
702 | }
|
703 |
|
704 | if ((0, _definition.isNonNullType)(typeDef)) {
|
705 | return (0, _definition.GraphQLNonNull)(extendType(typeDef.ofType));
|
706 | }
|
707 |
|
708 | return extendNamedType(typeDef);
|
709 | }
|
710 | } |
\ | No newline at end of file |