jok
Version:
Bundle of utility functions for code generation related to nodejs and graphql
66 lines (65 loc) • 3.14 kB
JavaScript
"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 uncapitalizeFirstLetter_1 = require("../../utils/uncapitalizeFirstLetter");
var generatePropsType_1 = require("../helper/generatePropsType");
var generateResultTypeFields_1 = require("../helper/generateResultTypeFields");
var cacheWriteQuery_1 = require("../render/cacheWriteQuery");
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 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: 'cacheWriteQuery',
methodName: methodName,
generateDefaultFragments: generateDefaultFragments,
hasProps: hasInputs,
propsType: propsType,
hasResultType: hasResultType,
returnClassFullname: '',
renderContent: function () {
// Render Query
return (0, renderOptions_1.default)(fragmentName, hasResultType, true) +
(hasResultType
? (0, renderFragment_1.default)(type, generateDefaultFragments, returnGraphqlTypeName)
: '') +
(0, renderQuery_1.default)({
hasFragment: hasResultType,
queryName: queryName,
variablesDeclarationString: variablesDeclarationString,
variablesString: variablesString,
}) +
(0, cacheWriteQuery_1.default)({
hasProps: hasInputs,
queryName: queryName,
});
},
});
return {
method: method,
props: props,
};
}
exports.default = default_1;