UNPKG

@kazekyo/nau-graphql-codegen-preset

Version:

A GraphQL Code Generator preset for Nau

90 lines (89 loc) 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addConnectionId = void 0; var _nau = require("@kazekyo/nau"); var _graphql = require("graphql"); var _lodash = require("lodash"); var _graphqlSchema = require("../utils/graphqlSchema"); var _nonNullable = require("../utils/nonNullable"); var addConnectionId = function addConnectionId(schema, documentFiles) { var documents = documentFiles.map(function (file) { return file.document; }).filter(_nonNullable.nonNullable); var allAst = (0, _graphql.concatAST)(documents); var paginationTypes = []; var typeInfo = new _graphql.TypeInfo(schema); (0, _graphql.visit)(allAst, (0, _graphql.visitWithTypeInfo)(typeInfo, { Field: { leave: function leave(fieldNode) { if (!fieldNode.directives) return; var paginationDirective = fieldNode.directives.find(function (directive) { return directive.name.value === _nau.PAGINATION_DIRECTIVE_NAME; }); if (!paginationDirective) return; var connectionType = (0, _graphqlSchema.getConnectionType)({ type: typeInfo.getType() }); if (!connectionType) return; var edgeType = (0, _graphqlSchema.getEdgeType)({ connectionType: connectionType, schema: schema }); if (!edgeType) return; var nodeType = (0, _graphqlSchema.getNodeType)({ edgeType: edgeType, schema: schema }); if (!nodeType) return; paginationTypes.push(connectionType.name); } } })); var definitions = (0, _lodash.uniq)(paginationTypes).map(function (typename) { return generateExtendConnectionType(typename); }); var result = (0, _graphql.extendSchema)(schema, { kind: _graphql.Kind.DOCUMENT, definitions: definitions }); return { schema: result }; }; exports.addConnectionId = addConnectionId; var generateExtendConnectionType = function generateExtendConnectionType(connectionTypeName) { var name = { kind: _graphql.Kind.NAME, value: connectionTypeName }; var field = { kind: _graphql.Kind.FIELD_DEFINITION, name: { kind: _graphql.Kind.NAME, value: '_connectionId' }, description: { kind: _graphql.Kind.STRING, value: 'Information of the connection for a client' }, type: { kind: _graphql.Kind.NON_NULL_TYPE, type: { kind: _graphql.Kind.NAMED_TYPE, name: { kind: _graphql.Kind.NAME, value: 'String' } } } }; var extentions = { kind: _graphql.Kind.OBJECT_TYPE_EXTENSION, name: name, fields: [field] }; return extentions; }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhZGRDb25uZWN0aW9uSWQiLCJzY2hlbWEiLCJkb2N1bWVudEZpbGVzIiwiZG9jdW1lbnRzIiwibWFwIiwiZmlsZSIsImRvY3VtZW50IiwiZmlsdGVyIiwibm9uTnVsbGFibGUiLCJhbGxBc3QiLCJjb25jYXRBU1QiLCJwYWdpbmF0aW9uVHlwZXMiLCJ0eXBlSW5mbyIsIlR5cGVJbmZvIiwidmlzaXQiLCJ2aXNpdFdpdGhUeXBlSW5mbyIsIkZpZWxkIiwibGVhdmUiLCJmaWVsZE5vZGUiLCJkaXJlY3RpdmVzIiwicGFnaW5hdGlvbkRpcmVjdGl2ZSIsImZpbmQiLCJkaXJlY3RpdmUiLCJuYW1lIiwidmFsdWUiLCJQQUdJTkFUSU9OX0RJUkVDVElWRV9OQU1FIiwiY29ubmVjdGlvblR5cGUiLCJnZXRDb25uZWN0aW9uVHlwZSIsInR5cGUiLCJnZXRUeXBlIiwiZWRnZVR5cGUiLCJnZXRFZGdlVHlwZSIsIm5vZGVUeXBlIiwiZ2V0Tm9kZVR5cGUiLCJwdXNoIiwiZGVmaW5pdGlvbnMiLCJ1bmlxIiwidHlwZW5hbWUiLCJnZW5lcmF0ZUV4dGVuZENvbm5lY3Rpb25UeXBlIiwicmVzdWx0IiwiZXh0ZW5kU2NoZW1hIiwia2luZCIsIktpbmQiLCJET0NVTUVOVCIsImNvbm5lY3Rpb25UeXBlTmFtZSIsIk5BTUUiLCJmaWVsZCIsIkZJRUxEX0RFRklOSVRJT04iLCJkZXNjcmlwdGlvbiIsIlNUUklORyIsIk5PTl9OVUxMX1RZUEUiLCJOQU1FRF9UWVBFIiwiZXh0ZW50aW9ucyIsIk9CSkVDVF9UWVBFX0VYVEVOU0lPTiIsImZpZWxkcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFUcmFuc2Zvcm1zL2FkZENvbm5lY3Rpb25JZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlcyB9IGZyb20gJ0BncmFwaHFsLWNvZGVnZW4vcGx1Z2luLWhlbHBlcnMnO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVJFQ1RJVkVfTkFNRSB9IGZyb20gJ0BrYXpla3lvL25hdSc7XG5pbXBvcnQge1xuICBjb25jYXRBU1QsXG4gIGV4dGVuZFNjaGVtYSxcbiAgRmllbGREZWZpbml0aW9uTm9kZSxcbiAgR3JhcGhRTFNjaGVtYSxcbiAgS2luZCxcbiAgTmFtZU5vZGUsXG4gIE9iamVjdFR5cGVFeHRlbnNpb25Ob2RlLFxuICBUeXBlSW5mbyxcbiAgdmlzaXQsXG4gIHZpc2l0V2l0aFR5cGVJbmZvLFxufSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IHVuaXEgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0Q29ubmVjdGlvblR5cGUsIGdldEVkZ2VUeXBlLCBnZXROb2RlVHlwZSB9IGZyb20gJy4uL3V0aWxzL2dyYXBocWxTY2hlbWEnO1xuaW1wb3J0IHsgbm9uTnVsbGFibGUgfSBmcm9tICcuLi91dGlscy9ub25OdWxsYWJsZSc7XG5cbmV4cG9ydCBjb25zdCBhZGRDb25uZWN0aW9uSWQgPSAoXG4gIHNjaGVtYTogR3JhcGhRTFNjaGVtYSxcbiAgZG9jdW1lbnRGaWxlczogVHlwZXMuRG9jdW1lbnRGaWxlW10sXG4pOiB7IHNjaGVtYTogR3JhcGhRTFNjaGVtYSB9ID0+IHtcbiAgY29uc3QgZG9jdW1lbnRzID0gZG9jdW1lbnRGaWxlcy5tYXAoKGZpbGUpID0+IGZpbGUuZG9jdW1lbnQpLmZpbHRlcihub25OdWxsYWJsZSk7XG4gIGNvbnN0IGFsbEFzdCA9IGNvbmNhdEFTVChkb2N1bWVudHMpO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25UeXBlczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgdHlwZUluZm8gPSBuZXcgVHlwZUluZm8oc2NoZW1hKTtcbiAgdmlzaXQoXG4gICAgYWxsQXN0LFxuICAgIHZpc2l0V2l0aFR5cGVJbmZvKHR5cGVJbmZvLCB7XG4gICAgICBGaWVsZDoge1xuICAgICAgICBsZWF2ZShmaWVsZE5vZGUpIHtcbiAgICAgICAgICBpZiAoIWZpZWxkTm9kZS5kaXJlY3RpdmVzKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgcGFnaW5hdGlvbkRpcmVjdGl2ZSA9IGZpZWxkTm9kZS5kaXJlY3RpdmVzLmZpbmQoXG4gICAgICAgICAgICAoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubmFtZS52YWx1ZSA9PT0gUEFHSU5BVElPTl9ESVJFQ1RJVkVfTkFNRSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghcGFnaW5hdGlvbkRpcmVjdGl2ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgY29ubmVjdGlvblR5cGUgPSBnZXRDb25uZWN0aW9uVHlwZSh7IHR5cGU6IHR5cGVJbmZvLmdldFR5cGUoKSB9KTtcbiAgICAgICAgICBpZiAoIWNvbm5lY3Rpb25UeXBlKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgZWRnZVR5cGUgPSBnZXRFZGdlVHlwZSh7IGNvbm5lY3Rpb25UeXBlLCBzY2hlbWEgfSk7XG4gICAgICAgICAgaWYgKCFlZGdlVHlwZSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IG5vZGVUeXBlID0gZ2V0Tm9kZVR5cGUoeyBlZGdlVHlwZSwgc2NoZW1hIH0pO1xuICAgICAgICAgIGlmICghbm9kZVR5cGUpIHJldHVybjtcblxuICAgICAgICAgIHBhZ2luYXRpb25UeXBlcy5wdXNoKGNvbm5lY3Rpb25UeXBlLm5hbWUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBkZWZpbml0aW9ucyA9IHVuaXEocGFnaW5hdGlvblR5cGVzKS5tYXAoKHR5cGVuYW1lKSA9PiBnZW5lcmF0ZUV4dGVuZENvbm5lY3Rpb25UeXBlKHR5cGVuYW1lKSk7XG4gIGNvbnN0IHJlc3VsdCA9IGV4dGVuZFNjaGVtYShzY2hlbWEsIHsga2luZDogS2luZC5ET0NVTUVOVCwgZGVmaW5pdGlvbnMgfSk7XG5cbiAgcmV0dXJuIHsgc2NoZW1hOiByZXN1bHQgfTtcbn07XG5cbmNvbnN0IGdlbmVyYXRlRXh0ZW5kQ29ubmVjdGlvblR5cGUgPSAoY29ubmVjdGlvblR5cGVOYW1lOiBzdHJpbmcpOiBPYmplY3RUeXBlRXh0ZW5zaW9uTm9kZSA9PiB7XG4gIGNvbnN0IG5hbWU6IE5hbWVOb2RlID0ge1xuICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICB2YWx1ZTogY29ubmVjdGlvblR5cGVOYW1lLFxuICB9O1xuICBjb25zdCBmaWVsZDogRmllbGREZWZpbml0aW9uTm9kZSA9IHtcbiAgICBraW5kOiBLaW5kLkZJRUxEX0RFRklOSVRJT04sXG4gICAgbmFtZToge1xuICAgICAga2luZDogS2luZC5OQU1FLFxuICAgICAgdmFsdWU6ICdfY29ubmVjdGlvbklkJyxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBraW5kOiBLaW5kLlNUUklORyxcbiAgICAgIHZhbHVlOiAnSW5mb3JtYXRpb24gb2YgdGhlIGNvbm5lY3Rpb24gZm9yIGEgY2xpZW50JyxcbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIGtpbmQ6IEtpbmQuTk9OX05VTExfVFlQRSxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAga2luZDogS2luZC5OQU1FRF9UWVBFLFxuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAga2luZDogS2luZC5OQU1FLFxuICAgICAgICAgIHZhbHVlOiAnU3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbiAgY29uc3QgZXh0ZW50aW9uczogT2JqZWN0VHlwZUV4dGVuc2lvbk5vZGUgPSB7XG4gICAga2luZDogS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT04sXG4gICAgbmFtZTogbmFtZSxcbiAgICBmaWVsZHM6IFtmaWVsZF0sXG4gIH07XG4gIHJldHVybiBleHRlbnRpb25zO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUVPLElBQU1BLGVBQWUsR0FBRyxTQUFsQkEsZUFBZSxDQUMxQkMsTUFBcUIsRUFDckJDLGFBQW1DLEVBQ0w7RUFDOUIsSUFBTUMsU0FBUyxHQUFHRCxhQUFhLENBQUNFLEdBQUcsQ0FBQyxVQUFDQyxJQUFJO0lBQUEs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