jok
Version:
Bundle of utility functions for code generation related to nodejs and graphql
69 lines (68 loc) • 3.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var rootType_1 = require("../utils/rootType");
var generateRootType_1 = require("./generateRootType");
var generateType_1 = require("./helper/generateType");
var renderProxy_1 = require("./render/renderProxy");
var renderQueryTypesEnum_1 = require("./render/renderQueryTypesEnum");
function default_1(introspectionSchema, generateDefaultFragments, useApolloClientV3, includeTypeName, typeNamePrefix, typeNamePostfix) {
var queryTypeName = introspectionSchema.queryType.name, types = introspectionSchema.types;
var mutationTypeName = introspectionSchema.mutationType
? introspectionSchema.mutationType.name
: null;
var subscriptionTypeName = introspectionSchema.subscriptionType
? introspectionSchema.subscriptionType.name
: null;
var queryType = (types.find(function (x) { return x.name === queryTypeName; }));
var mutationType = (types.find(function (x) { return x.name === mutationTypeName; }));
var subscriptionType = (types.find(function (x) { return x.name === subscriptionTypeName; }));
var otherTypes = types.filter(function (x) {
return x !== queryType && x !== mutationType && x !== subscriptionType;
});
var objectTypes = otherTypes.filter(function (x) { return x.kind === 'OBJECT'; });
// start generation
var generatedQuery = (0, generateRootType_1.default)(rootType_1.RootType.Query, otherTypes, generateDefaultFragments)(queryType);
var generatedWatchQuery = (0, generateRootType_1.default)('watchQuery', otherTypes, generateDefaultFragments)(queryType);
var generatedRefetchQuery = (0, generateRootType_1.default)('refetchQuery', otherTypes, generateDefaultFragments)(queryType);
var generatedCacheWriteQuery = (0, generateRootType_1.default)('cacheWriteQuery', otherTypes, generateDefaultFragments)(queryType);
var generatedMutation = (0, generateRootType_1.default)(rootType_1.RootType.Mutation, otherTypes, generateDefaultFragments)(mutationType);
var generatedSubscription = (0, generateRootType_1.default)(rootType_1.RootType.Subscription, otherTypes, generateDefaultFragments)(subscriptionType);
var generatedSubscriptionDocument = (0, generateRootType_1.default)(rootType_1.RootType.Subscription, otherTypes, generateDefaultFragments, true)(subscriptionType);
var generatedOtherTypes = otherTypes
.sort(sortTypesByKind)
.map((0, generateType_1.default)(includeTypeName, typeNamePrefix, typeNamePostfix))
.filter(function (x) { return !!x; })
.join('\n');
var generatedQueryTypesEnum = (0, renderQueryTypesEnum_1.default)(objectTypes);
return (0, renderProxy_1.default)({
generatedQuery: generatedQuery,
generatedWatchQuery: generatedWatchQuery,
generatedRefetchQuery: generatedRefetchQuery,
generatedCacheWriteQuery: generatedCacheWriteQuery,
generatedMutation: generatedMutation,
generatedSubscription: generatedSubscription,
generatedSubscriptionDocument: generatedSubscriptionDocument,
generatedOtherTypes: generatedOtherTypes,
generatedQueryTypesEnum: generatedQueryTypesEnum,
}, useApolloClientV3);
}
exports.default = default_1;
function sortTypesByKind(a, b) {
return getSortValue(b) - getSortValue(a);
}
function getSortValue(x) {
switch (x.kind) {
case 'SCALAR':
return 10;
case 'UNION':
return 9;
case 'ENUM':
return 8;
case 'INPUT_OBJECT':
return 7;
case 'OBJECT':
return 6;
default:
return 0;
}
}