UNPKG

jok

Version:

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

48 lines (47 loc) 2.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var capitalizeFirstLetter_1 = require("../utils/capitalizeFirstLetter"); var rootType_1 = require("../utils/rootType"); var generateMutationMethod_1 = require("./generate/generateMutationMethod"); var generateQueryMethod_1 = require("./generate/generateQueryMethod"); var generateRefetchQueryMethod_1 = require("./generate/generateRefetchQueryMethod"); var generateSubscriptionMethod_1 = require("./generate/generateSubscriptionMethod"); var generateUpdateCacheQueryMethod_1 = require("./generate/generateUpdateCacheQueryMethod"); var generateWatchQueryMethod_1 = require("./generate/generateWatchQueryMethod"); var renderRootTypeClass_1 = require("./render/renderRootTypeClass"); exports.default = (function (typeName, otherTypes, generateDefaultFragments, onlyDocument) { if (onlyDocument === void 0) { onlyDocument = false; } return function (queryType) { var _a; if (!queryType || queryType.kind !== 'OBJECT' || !queryType.fields || !queryType.fields.length) { return null; } var generateOptions = (_a = {}, _a[rootType_1.RootType.Query.toString()] = generateQueryMethod_1.default, _a['watchQuery'] = generateWatchQueryMethod_1.default, _a['refetchQuery'] = generateRefetchQueryMethod_1.default, _a['cacheWriteQuery'] = generateUpdateCacheQueryMethod_1.default, _a[rootType_1.RootType.Mutation.toString()] = generateMutationMethod_1.default, _a[rootType_1.RootType.Subscription.toString()] = generateSubscriptionMethod_1.default, _a); var generateMethod = generateOptions[typeName]; var methodsAndProps = queryType.fields.map(function (x) { return generateMethod(x, otherTypes, generateDefaultFragments, onlyDocument); }); var methodProps = onlyDocument ? [] : methodsAndProps.map(function (x) { return x.props; }).filter(function (x) { return !!x; }); var methods = methodsAndProps.map(function (x) { return x.method; }); var className = (0, capitalizeFirstLetter_1.default)(typeName); return (0, renderRootTypeClass_1.default)({ className: className, renderPropTypes: function () { return methodProps.join('\n'); }, renderMethods: function () { return methods.join('\n'); }, isWatchQuery: typeName === 'watchQuery', onlyDocument: onlyDocument, }); }; });