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 | var typesMap = {
|
7 | query: 'Query',
|
8 | subscription: 'Subscription',
|
9 | mutation: 'Mutation'
|
10 | };
|
11 | exports.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 | };
|
22 | exports.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 |
|
\ | No newline at end of file |