1 | "use strict";
|
2 | var typeFromAST_1 = require("graphql/utilities/typeFromAST");
|
3 | var utils_1 = require("./utils");
|
4 | var printer_1 = require("graphql/language/printer");
|
5 | var inner_models_builer_1 = require("./inner-models-builer");
|
6 | exports.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 | };
|
17 | exports.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 |
|
\ | No newline at end of file |