UNPKG

2.13 kBJavaScriptView Raw
1"use strict";
2var typeFromAST_1 = require("graphql/utilities/typeFromAST");
3var utils_1 = require("./utils");
4var printer_1 = require("graphql/language/printer");
5var inner_models_builer_1 = require("./inner-models-builer");
6var typesMap = {
7 query: 'Query',
8 subscription: 'Subscription',
9 mutation: 'Mutation'
10};
11exports.buildVariables = function (schema, definitionNode, primitivesMap) {
12 return definitionNode.variableDefinitions.map(function (variableDefinition) {
13 var typeFromSchema = typeFromAST_1.typeFromAST(schema, variableDefinition.type);
14 return {
15 name: variableDefinition.variable.name.value,
16 type: utils_1.getTypeName(primitivesMap, typeFromSchema),
17 isArray: utils_1.isArray(typeFromSchema),
18 isRequired: utils_1.isRequired(typeFromSchema)
19 };
20 });
21};
22exports.handleOperation = function (schema, definitionNode, primitivesMap) {
23 var name = definitionNode.name.value;
24 var type = definitionNode.operation;
25 var root = utils_1.getRoot(schema, definitionNode);
26 var builtName = utils_1.buildName(typesMap, name, type);
27 var document = {
28 name: builtName,
29 rawName: name,
30 isQuery: type === 'query',
31 isSubscription: type === 'subscription',
32 isMutation: type === 'mutation',
33 isFragment: false,
34 variables: [],
35 innerTypes: [],
36 hasVariables: false,
37 hasInnerTypes: false,
38 imports: [],
39 document: printer_1.print(definitionNode)
40 };
41 document.variables = exports.buildVariables(schema, definitionNode, primitivesMap);
42 document.innerTypes = inner_models_builer_1.buildInnerModelsArray(schema, root, definitionNode.selectionSet, primitivesMap);
43 document.hasVariables = document.variables.length > 0;
44 document.hasInnerTypes = document.innerTypes.length > 0;
45 document.variables.forEach(function (field) {
46 if (field.type && !utils_1.isPrimitive(primitivesMap, field.type)) {
47 document.imports.push(field.type);
48 }
49 });
50 return document;
51};
52//# sourceMappingURL=operation-handler.js.map
\No newline at end of file