UNPKG

jok

Version:

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

79 lines (78 loc) 3.89 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 generatePropsType_1 = require("../helper/generatePropsType"); 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 renderReturnDocument_1 = require("../render/renderReturnDocument"); var renderSubscription_1 = require("../render/renderSubscription"); function default_1(field, types, generateDefaultFragments, onlyDocument) { var queryName = field.name; var propsType = (0, getTypescriptPropsTypeName_1.default)('Subscription', 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 props = (0, generatePropsType_1.default)(propsType, inputs); 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: rootType_1.RootType.Subscription, 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, renderSubscription_1.default)({ hasFragment: hasResultType, queryName: queryName, variablesDeclarationString: variablesDeclarationString, variablesString: variablesString, }) + (onlyDocument ? (0, renderReturnDocument_1.default)({ rootType: rootType_1.RootType.Subscription, hasVariables: hasInputs, }) : (0, renderApolloCall_1.default)({ rootType: rootType_1.RootType.Subscription, hasVariables: hasInputs, queryName: queryName, returnType: returnClassFullname, })); }, }); return { method: method, props: props, }; } exports.default = default_1;