UNPKG

2.36 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");
6exports.buildVariables = function (schema, definitionNode, primitivesMap) {
7 return definitionNode.variableDefinitions.map(function (variableDefinition) {
8 var typeFromSchema = typeFromAST_1.typeFromAST(schema, variableDefinition.type);
9 return {
10 name: variableDefinition.variable.name.value,
11 type: utils_1.getTypeName(primitivesMap, typeFromSchema),
12 isArray: utils_1.isArray(typeFromSchema),
13 isRequired: utils_1.isRequired(typeFromSchema)
14 };
15 });
16};
17exports.handleOperation = function (schema, definitionNode, primitivesMap, flattenInnerTypes) {
18 var name = definitionNode.name.value;
19 var type = definitionNode.operation;
20 var root = utils_1.getRoot(schema, definitionNode);
21 var typesMap = {
22 query: schema.getQueryType().name,
23 subscription: schema.getSubscriptionType().name,
24 mutation: schema.getMutationType().name,
25 };
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 rootType: [],
39 imports: [],
40 document: printer_1.print(definitionNode)
41 };
42 document.variables = exports.buildVariables(schema, definitionNode, primitivesMap);
43 document.innerTypes = inner_models_builer_1.buildInnerModelsArray(schema, root, flattenInnerTypes, definitionNode.selectionSet, primitivesMap);
44 document.rootType = [document.innerTypes.find(function (i) { return i.isRoot; })];
45 document.hasVariables = document.variables.length > 0;
46 document.hasInnerTypes = document.innerTypes.length > 0;
47 document.variables.forEach(function (field) {
48 if (field.type && !utils_1.isPrimitive(primitivesMap, field.type)) {
49 document.imports.push(field.type);
50 }
51 });
52 return document;
53};
54//# sourceMappingURL=operation-handler.js.map
\No newline at end of file