1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.extendSchema = extendSchema;
|
7 | exports.extendSchemaImpl = extendSchemaImpl;
|
8 | exports.getDescription = getDescription;
|
9 |
|
10 | var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
|
11 |
|
12 | var _keyMap = _interopRequireDefault(require("../jsutils/keyMap.js"));
|
13 |
|
14 | var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
|
15 |
|
16 | var _mapValue = _interopRequireDefault(require("../jsutils/mapValue.js"));
|
17 |
|
18 | var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
|
19 |
|
20 | var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
|
21 |
|
22 | var _kinds = require("../language/kinds.js");
|
23 |
|
24 | var _tokenKind = require("../language/tokenKind.js");
|
25 |
|
26 | var _blockString = require("../language/blockString.js");
|
27 |
|
28 | var _predicates = require("../language/predicates.js");
|
29 |
|
30 | var _validate = require("../validation/validate.js");
|
31 |
|
32 | var _values = require("../execution/values.js");
|
33 |
|
34 | var _schema = require("../type/schema.js");
|
35 |
|
36 | var _scalars = require("../type/scalars.js");
|
37 |
|
38 | var _introspection = require("../type/introspection.js");
|
39 |
|
40 | var _directives = require("../type/directives.js");
|
41 |
|
42 | var _definition = require("../type/definition.js");
|
43 |
|
44 | var _valueFromAST = require("./valueFromAST.js");
|
45 |
|
46 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
47 |
|
48 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
49 |
|
50 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
51 |
|
52 | 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; }
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 | function extendSchema(schema, documentAST, options) {
|
73 | (0, _schema.assertSchema)(schema);
|
74 | documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT || (0, _devAssert.default)(0, 'Must provide valid Document AST.');
|
75 |
|
76 | if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {
|
77 | (0, _validate.assertValidSDLExtension)(documentAST, schema);
|
78 | }
|
79 |
|
80 | var schemaConfig = schema.toConfig();
|
81 | var extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);
|
82 | return schemaConfig === extendedConfig ? schema : new _schema.GraphQLSchema(extendedConfig);
|
83 | }
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 | function extendSchemaImpl(schemaConfig, documentAST, options) {
|
90 | var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;
|
91 |
|
92 |
|
93 | var typeDefs = [];
|
94 | var typeExtensionsMap = Object.create(null);
|
95 |
|
96 |
|
97 | var directiveDefs = [];
|
98 | var schemaDef;
|
99 |
|
100 | var schemaExtensions = [];
|
101 |
|
102 | for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
|
103 | var def = _documentAST$definiti2[_i2];
|
104 |
|
105 | if (def.kind === _kinds.Kind.SCHEMA_DEFINITION) {
|
106 | schemaDef = def;
|
107 | } else if (def.kind === _kinds.Kind.SCHEMA_EXTENSION) {
|
108 | schemaExtensions.push(def);
|
109 | } else if ((0, _predicates.isTypeDefinitionNode)(def)) {
|
110 | typeDefs.push(def);
|
111 | } else if ((0, _predicates.isTypeExtensionNode)(def)) {
|
112 | var extendedTypeName = def.name.value;
|
113 | var existingTypeExtensions = typeExtensionsMap[extendedTypeName];
|
114 | typeExtensionsMap[extendedTypeName] = existingTypeExtensions ? existingTypeExtensions.concat([def]) : [def];
|
115 | } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {
|
116 | directiveDefs.push(def);
|
117 | }
|
118 | }
|
119 |
|
120 |
|
121 |
|
122 | if (Object.keys(typeExtensionsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExtensions.length === 0 && schemaDef == null) {
|
123 | return schemaConfig;
|
124 | }
|
125 |
|
126 | var typeMap = Object.create(null);
|
127 |
|
128 | for (var _i4 = 0, _schemaConfig$types2 = schemaConfig.types; _i4 < _schemaConfig$types2.length; _i4++) {
|
129 | var existingType = _schemaConfig$types2[_i4];
|
130 | typeMap[existingType.name] = extendNamedType(existingType);
|
131 | }
|
132 |
|
133 | for (var _i6 = 0; _i6 < typeDefs.length; _i6++) {
|
134 | var _stdTypeMap$name;
|
135 |
|
136 | var typeNode = typeDefs[_i6];
|
137 | var name = typeNode.name.value;
|
138 | typeMap[name] = (_stdTypeMap$name = stdTypeMap[name]) !== null && _stdTypeMap$name !== void 0 ? _stdTypeMap$name : buildType(typeNode);
|
139 | }
|
140 |
|
141 | var operationTypes = _objectSpread(_objectSpread({
|
142 |
|
143 | query: schemaConfig.query && replaceNamedType(schemaConfig.query),
|
144 | mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),
|
145 | subscription: schemaConfig.subscription && replaceNamedType(schemaConfig.subscription)
|
146 | }, schemaDef && getOperationTypes([schemaDef])), getOperationTypes(schemaExtensions));
|
147 |
|
148 |
|
149 | return _objectSpread(_objectSpread({
|
150 | description: (_schemaDef = schemaDef) === null || _schemaDef === void 0 ? void 0 : (_schemaDef$descriptio = _schemaDef.description) === null || _schemaDef$descriptio === void 0 ? void 0 : _schemaDef$descriptio.value
|
151 | }, operationTypes), {}, {
|
152 | types: (0, _objectValues.default)(typeMap),
|
153 | directives: [].concat(schemaConfig.directives.map(replaceDirective), directiveDefs.map(buildDirective)),
|
154 | extensions: undefined,
|
155 | astNode: (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0 ? _schemaDef2 : schemaConfig.astNode,
|
156 | extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),
|
157 | assumeValid: (_options$assumeValid = options === null || options === void 0 ? void 0 : options.assumeValid) !== null && _options$assumeValid !== void 0 ? _options$assumeValid : false
|
158 | });
|
159 |
|
160 |
|
161 | function replaceType(type) {
|
162 | if ((0, _definition.isListType)(type)) {
|
163 |
|
164 | return new _definition.GraphQLList(replaceType(type.ofType));
|
165 | }
|
166 |
|
167 | if ((0, _definition.isNonNullType)(type)) {
|
168 |
|
169 | return new _definition.GraphQLNonNull(replaceType(type.ofType));
|
170 | }
|
171 |
|
172 | return replaceNamedType(type);
|
173 | }
|
174 |
|
175 | function replaceNamedType(type) {
|
176 |
|
177 |
|
178 |
|
179 | return typeMap[type.name];
|
180 | }
|
181 |
|
182 | function replaceDirective(directive) {
|
183 | var config = directive.toConfig();
|
184 | return new _directives.GraphQLDirective(_objectSpread(_objectSpread({}, config), {}, {
|
185 | args: (0, _mapValue.default)(config.args, extendArg)
|
186 | }));
|
187 | }
|
188 |
|
189 | function extendNamedType(type) {
|
190 | if ((0, _introspection.isIntrospectionType)(type) || (0, _scalars.isSpecifiedScalarType)(type)) {
|
191 |
|
192 | return type;
|
193 | }
|
194 |
|
195 | if ((0, _definition.isScalarType)(type)) {
|
196 | return extendScalarType(type);
|
197 | }
|
198 |
|
199 | if ((0, _definition.isObjectType)(type)) {
|
200 | return extendObjectType(type);
|
201 | }
|
202 |
|
203 | if ((0, _definition.isInterfaceType)(type)) {
|
204 | return extendInterfaceType(type);
|
205 | }
|
206 |
|
207 | if ((0, _definition.isUnionType)(type)) {
|
208 | return extendUnionType(type);
|
209 | }
|
210 |
|
211 | if ((0, _definition.isEnumType)(type)) {
|
212 | return extendEnumType(type);
|
213 | }
|
214 |
|
215 |
|
216 | if ((0, _definition.isInputObjectType)(type)) {
|
217 | return extendInputObjectType(type);
|
218 | }
|
219 |
|
220 |
|
221 | false || (0, _invariant.default)(0, 'Unexpected type: ' + (0, _inspect.default)(type));
|
222 | }
|
223 |
|
224 | function extendInputObjectType(type) {
|
225 | var _typeExtensionsMap$co;
|
226 |
|
227 | var config = type.toConfig();
|
228 | var extensions = (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co !== void 0 ? _typeExtensionsMap$co : [];
|
229 | return new _definition.GraphQLInputObjectType(_objectSpread(_objectSpread({}, config), {}, {
|
230 | fields: function fields() {
|
231 | return _objectSpread(_objectSpread({}, (0, _mapValue.default)(config.fields, function (field) {
|
232 | return _objectSpread(_objectSpread({}, field), {}, {
|
233 | type: replaceType(field.type)
|
234 | });
|
235 | })), buildInputFieldMap(extensions));
|
236 | },
|
237 | extensionASTNodes: config.extensionASTNodes.concat(extensions)
|
238 | }));
|
239 | }
|
240 |
|
241 | function extendEnumType(type) {
|
242 | var _typeExtensionsMap$ty;
|
243 |
|
244 | var config = type.toConfig();
|
245 | var extensions = (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null && _typeExtensionsMap$ty !== void 0 ? _typeExtensionsMap$ty : [];
|
246 | return new _definition.GraphQLEnumType(_objectSpread(_objectSpread({}, config), {}, {
|
247 | values: _objectSpread(_objectSpread({}, config.values), buildEnumValueMap(extensions)),
|
248 | extensionASTNodes: config.extensionASTNodes.concat(extensions)
|
249 | }));
|
250 | }
|
251 |
|
252 | function extendScalarType(type) {
|
253 | var _typeExtensionsMap$co2;
|
254 |
|
255 | var config = type.toConfig();
|
256 | var extensions = (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co2 !== void 0 ? _typeExtensionsMap$co2 : [];
|
257 | var specifiedByUrl = config.specifiedByUrl;
|
258 |
|
259 | for (var _i8 = 0; _i8 < extensions.length; _i8++) {
|
260 | var _getSpecifiedByUrl;
|
261 |
|
262 | var extensionNode = extensions[_i8];
|
263 | specifiedByUrl = (_getSpecifiedByUrl = getSpecifiedByUrl(extensionNode)) !== null && _getSpecifiedByUrl !== void 0 ? _getSpecifiedByUrl : specifiedByUrl;
|
264 | }
|
265 |
|
266 | return new _definition.GraphQLScalarType(_objectSpread(_objectSpread({}, config), {}, {
|
267 | specifiedByUrl: specifiedByUrl,
|
268 | extensionASTNodes: config.extensionASTNodes.concat(extensions)
|
269 | }));
|
270 | }
|
271 |
|
272 | function extendObjectType(type) {
|
273 | var _typeExtensionsMap$co3;
|
274 |
|
275 | var config = type.toConfig();
|
276 | var extensions = (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co3 !== void 0 ? _typeExtensionsMap$co3 : [];
|
277 | return new _definition.GraphQLObjectType(_objectSpread(_objectSpread({}, config), {}, {
|
278 | interfaces: function interfaces() {
|
279 | return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));
|
280 | },
|
281 | fields: function fields() {
|
282 | return _objectSpread(_objectSpread({}, (0, _mapValue.default)(config.fields, extendField)), buildFieldMap(extensions));
|
283 | },
|
284 | extensionASTNodes: config.extensionASTNodes.concat(extensions)
|
285 | }));
|
286 | }
|
287 |
|
288 | function extendInterfaceType(type) {
|
289 | var _typeExtensionsMap$co4;
|
290 |
|
291 | var config = type.toConfig();
|
292 | var extensions = (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co4 !== void 0 ? _typeExtensionsMap$co4 : [];
|
293 | return new _definition.GraphQLInterfaceType(_objectSpread(_objectSpread({}, config), {}, {
|
294 | interfaces: function interfaces() {
|
295 | return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));
|
296 | },
|
297 | fields: function fields() {
|
298 | return _objectSpread(_objectSpread({}, (0, _mapValue.default)(config.fields, extendField)), buildFieldMap(extensions));
|
299 | },
|
300 | extensionASTNodes: config.extensionASTNodes.concat(extensions)
|
301 | }));
|
302 | }
|
303 |
|
304 | function extendUnionType(type) {
|
305 | var _typeExtensionsMap$co5;
|
306 |
|
307 | var config = type.toConfig();
|
308 | var extensions = (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co5 !== void 0 ? _typeExtensionsMap$co5 : [];
|
309 | return new _definition.GraphQLUnionType(_objectSpread(_objectSpread({}, config), {}, {
|
310 | types: function types() {
|
311 | return [].concat(type.getTypes().map(replaceNamedType), buildUnionTypes(extensions));
|
312 | },
|
313 | extensionASTNodes: config.extensionASTNodes.concat(extensions)
|
314 | }));
|
315 | }
|
316 |
|
317 | function extendField(field) {
|
318 | return _objectSpread(_objectSpread({}, field), {}, {
|
319 | type: replaceType(field.type),
|
320 |
|
321 | args: (0, _mapValue.default)(field.args, extendArg)
|
322 | });
|
323 | }
|
324 |
|
325 | function extendArg(arg) {
|
326 | return _objectSpread(_objectSpread({}, arg), {}, {
|
327 | type: replaceType(arg.type)
|
328 | });
|
329 | }
|
330 |
|
331 | function getOperationTypes(nodes) {
|
332 | var opTypes = {};
|
333 |
|
334 | for (var _i10 = 0; _i10 < nodes.length; _i10++) {
|
335 | var _node$operationTypes;
|
336 |
|
337 | var node = nodes[_i10];
|
338 |
|
339 | var operationTypesNodes = (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];
|
340 |
|
341 | for (var _i12 = 0; _i12 < operationTypesNodes.length; _i12++) {
|
342 | var operationType = operationTypesNodes[_i12];
|
343 | opTypes[operationType.operation] = getNamedType(operationType.type);
|
344 | }
|
345 | }
|
346 |
|
347 |
|
348 |
|
349 |
|
350 | return opTypes;
|
351 | }
|
352 |
|
353 | function getNamedType(node) {
|
354 | var _stdTypeMap$name2;
|
355 |
|
356 | var name = node.name.value;
|
357 | var type = (_stdTypeMap$name2 = stdTypeMap[name]) !== null && _stdTypeMap$name2 !== void 0 ? _stdTypeMap$name2 : typeMap[name];
|
358 |
|
359 | if (type === undefined) {
|
360 | throw new Error("Unknown type: \"".concat(name, "\"."));
|
361 | }
|
362 |
|
363 | return type;
|
364 | }
|
365 |
|
366 | function getWrappedType(node) {
|
367 | if (node.kind === _kinds.Kind.LIST_TYPE) {
|
368 | return new _definition.GraphQLList(getWrappedType(node.type));
|
369 | }
|
370 |
|
371 | if (node.kind === _kinds.Kind.NON_NULL_TYPE) {
|
372 | return new _definition.GraphQLNonNull(getWrappedType(node.type));
|
373 | }
|
374 |
|
375 | return getNamedType(node);
|
376 | }
|
377 |
|
378 | function buildDirective(node) {
|
379 | var locations = node.locations.map(function (_ref) {
|
380 | var value = _ref.value;
|
381 | return value;
|
382 | });
|
383 | return new _directives.GraphQLDirective({
|
384 | name: node.name.value,
|
385 | description: getDescription(node, options),
|
386 | locations: locations,
|
387 | isRepeatable: node.repeatable,
|
388 | args: buildArgumentMap(node.arguments),
|
389 | astNode: node
|
390 | });
|
391 | }
|
392 |
|
393 | function buildFieldMap(nodes) {
|
394 | var fieldConfigMap = Object.create(null);
|
395 |
|
396 | for (var _i14 = 0; _i14 < nodes.length; _i14++) {
|
397 | var _node$fields;
|
398 |
|
399 | var node = nodes[_i14];
|
400 |
|
401 | var nodeFields = (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];
|
402 |
|
403 | for (var _i16 = 0; _i16 < nodeFields.length; _i16++) {
|
404 | var field = nodeFields[_i16];
|
405 | fieldConfigMap[field.name.value] = {
|
406 |
|
407 |
|
408 |
|
409 | type: getWrappedType(field.type),
|
410 | description: getDescription(field, options),
|
411 | args: buildArgumentMap(field.arguments),
|
412 | deprecationReason: getDeprecationReason(field),
|
413 | astNode: field
|
414 | };
|
415 | }
|
416 | }
|
417 |
|
418 | return fieldConfigMap;
|
419 | }
|
420 |
|
421 | function buildArgumentMap(args) {
|
422 |
|
423 | var argsNodes = args !== null && args !== void 0 ? args : [];
|
424 | var argConfigMap = Object.create(null);
|
425 |
|
426 | for (var _i18 = 0; _i18 < argsNodes.length; _i18++) {
|
427 | var arg = argsNodes[_i18];
|
428 |
|
429 |
|
430 |
|
431 | var type = getWrappedType(arg.type);
|
432 | argConfigMap[arg.name.value] = {
|
433 | type: type,
|
434 | description: getDescription(arg, options),
|
435 | defaultValue: (0, _valueFromAST.valueFromAST)(arg.defaultValue, type),
|
436 | deprecationReason: getDeprecationReason(arg),
|
437 | astNode: arg
|
438 | };
|
439 | }
|
440 |
|
441 | return argConfigMap;
|
442 | }
|
443 |
|
444 | function buildInputFieldMap(nodes) {
|
445 | var inputFieldMap = Object.create(null);
|
446 |
|
447 | for (var _i20 = 0; _i20 < nodes.length; _i20++) {
|
448 | var _node$fields2;
|
449 |
|
450 | var node = nodes[_i20];
|
451 |
|
452 | var fieldsNodes = (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 ? _node$fields2 : [];
|
453 |
|
454 | for (var _i22 = 0; _i22 < fieldsNodes.length; _i22++) {
|
455 | var field = fieldsNodes[_i22];
|
456 |
|
457 |
|
458 |
|
459 | var type = getWrappedType(field.type);
|
460 | inputFieldMap[field.name.value] = {
|
461 | type: type,
|
462 | description: getDescription(field, options),
|
463 | defaultValue: (0, _valueFromAST.valueFromAST)(field.defaultValue, type),
|
464 | deprecationReason: getDeprecationReason(field),
|
465 | astNode: field
|
466 | };
|
467 | }
|
468 | }
|
469 |
|
470 | return inputFieldMap;
|
471 | }
|
472 |
|
473 | function buildEnumValueMap(nodes) {
|
474 | var enumValueMap = Object.create(null);
|
475 |
|
476 | for (var _i24 = 0; _i24 < nodes.length; _i24++) {
|
477 | var _node$values;
|
478 |
|
479 | var node = nodes[_i24];
|
480 |
|
481 | var valuesNodes = (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];
|
482 |
|
483 | for (var _i26 = 0; _i26 < valuesNodes.length; _i26++) {
|
484 | var value = valuesNodes[_i26];
|
485 | enumValueMap[value.name.value] = {
|
486 | description: getDescription(value, options),
|
487 | deprecationReason: getDeprecationReason(value),
|
488 | astNode: value
|
489 | };
|
490 | }
|
491 | }
|
492 |
|
493 | return enumValueMap;
|
494 | }
|
495 |
|
496 | function buildInterfaces(nodes) {
|
497 | var interfaces = [];
|
498 |
|
499 | for (var _i28 = 0; _i28 < nodes.length; _i28++) {
|
500 | var _node$interfaces;
|
501 |
|
502 | var node = nodes[_i28];
|
503 |
|
504 | var interfacesNodes = (_node$interfaces = node.interfaces) !== null && _node$interfaces !== void 0 ? _node$interfaces : [];
|
505 |
|
506 | for (var _i30 = 0; _i30 < interfacesNodes.length; _i30++) {
|
507 | var type = interfacesNodes[_i30];
|
508 |
|
509 |
|
510 |
|
511 |
|
512 | interfaces.push(getNamedType(type));
|
513 | }
|
514 | }
|
515 |
|
516 | return interfaces;
|
517 | }
|
518 |
|
519 | function buildUnionTypes(nodes) {
|
520 | var types = [];
|
521 |
|
522 | for (var _i32 = 0; _i32 < nodes.length; _i32++) {
|
523 | var _node$types;
|
524 |
|
525 | var node = nodes[_i32];
|
526 |
|
527 | var typeNodes = (_node$types = node.types) !== null && _node$types !== void 0 ? _node$types : [];
|
528 |
|
529 | for (var _i34 = 0; _i34 < typeNodes.length; _i34++) {
|
530 | var type = typeNodes[_i34];
|
531 |
|
532 |
|
533 |
|
534 |
|
535 | types.push(getNamedType(type));
|
536 | }
|
537 | }
|
538 |
|
539 | return types;
|
540 | }
|
541 |
|
542 | function buildType(astNode) {
|
543 | var _typeExtensionsMap$na;
|
544 |
|
545 | var name = astNode.name.value;
|
546 | var description = getDescription(astNode, options);
|
547 | var extensionNodes = (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null && _typeExtensionsMap$na !== void 0 ? _typeExtensionsMap$na : [];
|
548 |
|
549 | switch (astNode.kind) {
|
550 | case _kinds.Kind.OBJECT_TYPE_DEFINITION:
|
551 | {
|
552 | var extensionASTNodes = extensionNodes;
|
553 | var allNodes = [astNode].concat(extensionASTNodes);
|
554 | return new _definition.GraphQLObjectType({
|
555 | name: name,
|
556 | description: description,
|
557 | interfaces: function interfaces() {
|
558 | return buildInterfaces(allNodes);
|
559 | },
|
560 | fields: function fields() {
|
561 | return buildFieldMap(allNodes);
|
562 | },
|
563 | astNode: astNode,
|
564 | extensionASTNodes: extensionASTNodes
|
565 | });
|
566 | }
|
567 |
|
568 | case _kinds.Kind.INTERFACE_TYPE_DEFINITION:
|
569 | {
|
570 | var _extensionASTNodes = extensionNodes;
|
571 |
|
572 | var _allNodes = [astNode].concat(_extensionASTNodes);
|
573 |
|
574 | return new _definition.GraphQLInterfaceType({
|
575 | name: name,
|
576 | description: description,
|
577 | interfaces: function interfaces() {
|
578 | return buildInterfaces(_allNodes);
|
579 | },
|
580 | fields: function fields() {
|
581 | return buildFieldMap(_allNodes);
|
582 | },
|
583 | astNode: astNode,
|
584 | extensionASTNodes: _extensionASTNodes
|
585 | });
|
586 | }
|
587 |
|
588 | case _kinds.Kind.ENUM_TYPE_DEFINITION:
|
589 | {
|
590 | var _extensionASTNodes2 = extensionNodes;
|
591 |
|
592 | var _allNodes2 = [astNode].concat(_extensionASTNodes2);
|
593 |
|
594 | return new _definition.GraphQLEnumType({
|
595 | name: name,
|
596 | description: description,
|
597 | values: buildEnumValueMap(_allNodes2),
|
598 | astNode: astNode,
|
599 | extensionASTNodes: _extensionASTNodes2
|
600 | });
|
601 | }
|
602 |
|
603 | case _kinds.Kind.UNION_TYPE_DEFINITION:
|
604 | {
|
605 | var _extensionASTNodes3 = extensionNodes;
|
606 |
|
607 | var _allNodes3 = [astNode].concat(_extensionASTNodes3);
|
608 |
|
609 | return new _definition.GraphQLUnionType({
|
610 | name: name,
|
611 | description: description,
|
612 | types: function types() {
|
613 | return buildUnionTypes(_allNodes3);
|
614 | },
|
615 | astNode: astNode,
|
616 | extensionASTNodes: _extensionASTNodes3
|
617 | });
|
618 | }
|
619 |
|
620 | case _kinds.Kind.SCALAR_TYPE_DEFINITION:
|
621 | {
|
622 | var _extensionASTNodes4 = extensionNodes;
|
623 | return new _definition.GraphQLScalarType({
|
624 | name: name,
|
625 | description: description,
|
626 | specifiedByUrl: getSpecifiedByUrl(astNode),
|
627 | astNode: astNode,
|
628 | extensionASTNodes: _extensionASTNodes4
|
629 | });
|
630 | }
|
631 |
|
632 | case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION:
|
633 | {
|
634 | var _extensionASTNodes5 = extensionNodes;
|
635 |
|
636 | var _allNodes4 = [astNode].concat(_extensionASTNodes5);
|
637 |
|
638 | return new _definition.GraphQLInputObjectType({
|
639 | name: name,
|
640 | description: description,
|
641 | fields: function fields() {
|
642 | return buildInputFieldMap(_allNodes4);
|
643 | },
|
644 | astNode: astNode,
|
645 | extensionASTNodes: _extensionASTNodes5
|
646 | });
|
647 | }
|
648 | }
|
649 |
|
650 |
|
651 | false || (0, _invariant.default)(0, 'Unexpected type definition node: ' + (0, _inspect.default)(astNode));
|
652 | }
|
653 | }
|
654 |
|
655 | var stdTypeMap = (0, _keyMap.default)(_scalars.specifiedScalarTypes.concat(_introspection.introspectionTypes), function (type) {
|
656 | return type.name;
|
657 | });
|
658 |
|
659 |
|
660 |
|
661 |
|
662 |
|
663 | function getDeprecationReason(node) {
|
664 | var deprecated = (0, _values.getDirectiveValues)(_directives.GraphQLDeprecatedDirective, node);
|
665 | return deprecated === null || deprecated === void 0 ? void 0 : deprecated.reason;
|
666 | }
|
667 |
|
668 |
|
669 |
|
670 |
|
671 |
|
672 | function getSpecifiedByUrl(node) {
|
673 | var specifiedBy = (0, _values.getDirectiveValues)(_directives.GraphQLSpecifiedByDirective, node);
|
674 | return specifiedBy === null || specifiedBy === void 0 ? void 0 : specifiedBy.url;
|
675 | }
|
676 |
|
677 |
|
678 |
|
679 |
|
680 |
|
681 |
|
682 |
|
683 |
|
684 |
|
685 |
|
686 |
|
687 |
|
688 | function getDescription(node, options) {
|
689 | if (node.description) {
|
690 | return node.description.value;
|
691 | }
|
692 |
|
693 | if ((options === null || options === void 0 ? void 0 : options.commentDescriptions) === true) {
|
694 | var rawValue = getLeadingCommentBlock(node);
|
695 |
|
696 | if (rawValue !== undefined) {
|
697 | return (0, _blockString.dedentBlockStringValue)('\n' + rawValue);
|
698 | }
|
699 | }
|
700 | }
|
701 |
|
702 | function getLeadingCommentBlock(node) {
|
703 | var loc = node.loc;
|
704 |
|
705 | if (!loc) {
|
706 | return;
|
707 | }
|
708 |
|
709 | var comments = [];
|
710 | var token = loc.startToken.prev;
|
711 |
|
712 | while (token != null && token.kind === _tokenKind.TokenKind.COMMENT && token.next && token.prev && token.line + 1 === token.next.line && token.line !== token.prev.line) {
|
713 | var value = String(token.value);
|
714 | comments.push(value);
|
715 | token = token.prev;
|
716 | }
|
717 |
|
718 | return comments.length > 0 ? comments.reverse().join('\n') : undefined;
|
719 | }
|