UNPKG

jok

Version:

Bundle of utility functions for code generation related to nodejs and graphql

74 lines (73 loc) 3.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var buildVariablesDeclarationString_1 = require("../../domain/buildVariablesDeclarationString"); var buildVariablesPassString_1 = require("../../domain/buildVariablesPassString"); var getGraphqlTypeString_1 = require("../../domain/getGraphqlTypeString"); var getTypescriptPropsTypeName_1 = require("../../domain/getTypescriptPropsTypeName"); var getTypescriptTypeString_1 = require("../../domain/getTypescriptTypeString"); var rootType_1 = require("../../utils/rootType"); var uncapitalizeFirstLetter_1 = require("../../utils/uncapitalizeFirstLetter"); var generateResultTypeFields_1 = require("../helper/generateResultTypeFields"); var renderApolloCall_1 = require("../render/renderApolloCall"); var renderFragment_1 = require("../render/renderFragment"); var renderMethod_1 = require("../render/renderMethod"); var renderOptions_1 = require("../render/renderOptions"); var renderQuery_1 = require("../render/renderQuery"); function default_1(field, types, generateDefaultFragments) { var queryName = field.name; var propsType = (0, getTypescriptPropsTypeName_1.default)('Query', queryName); var inputs = field.args || []; var methodName = (0, uncapitalizeFirstLetter_1.default)(queryName); var hasInputs = !!inputs.length; var returnClassFullname = (0, getTypescriptTypeString_1.default)({ type: field.type, }); var returnClassName = (0, getGraphqlTypeString_1.default)({ type: field.type, capitalizeName: true, onlyName: true, }); var returnGraphqlTypeName = returnClassName; var fragmentName = returnClassName + 'Data'; var resultTypeFields = (0, generateResultTypeFields_1.default)(field.type, types); var hasResultType = !!resultTypeFields; var variablesDeclarationString = (0, buildVariablesDeclarationString_1.default)(inputs); var variablesString = (0, buildVariablesPassString_1.default)(inputs); var type = (types.find(function (x) { return x.name === returnGraphqlTypeName; })); var method = (0, renderMethod_1.default)({ rootType: 'watchQuery', methodName: methodName, generateDefaultFragments: generateDefaultFragments, hasProps: hasInputs, propsType: propsType, hasResultType: hasResultType, returnClassFullname: returnClassFullname, renderContent: function () { // Render Query return (0, renderOptions_1.default)(fragmentName, hasResultType) + (hasResultType ? (0, renderFragment_1.default)(type, generateDefaultFragments, returnGraphqlTypeName) : '') + (0, renderQuery_1.default)({ hasFragment: hasResultType, queryName: queryName, variablesDeclarationString: variablesDeclarationString, variablesString: variablesString, }) + (0, renderApolloCall_1.default)({ rootType: rootType_1.RootType.Query, hasVariables: hasInputs, queryName: queryName, returnType: returnClassFullname, isWatchQuery: true, }); }, }); return { method: method, // props will be generated for Query // so there is no need to do anything props: '', }; } exports.default = default_1;