jok
Version:
Bundle of utility functions for code generation related to nodejs and graphql
48 lines (47 loc) • 2.57 kB
JavaScript
;
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,
});
};
});