@kentico/kontent-schema-generator-graphql
Version:
GraphQL schema generator used to generate schema based on specified project.
145 lines • 6.66 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var kontent_delivery_1 = require("@kentico/kontent-delivery");
var GraphQLSchemaModel = /** @class */ (function () {
function GraphQLSchemaModel() {
}
/**
* Create all field definition including depending types.
* @returns {string[]}
*/
GraphQLSchemaModel.prototype.getFieldDefinitions = function () {
return [GraphQLSchemaModel.systemType]
.concat(Array.from(GraphQLSchemaModel.interfaces.values()))
.concat(Array.from(GraphQLSchemaModel.helperTypes.values()))
.concat(Array.from(GraphQLSchemaModel.elementTypes.values()));
};
GraphQLSchemaModel.systemTypeName = 'SystemInfo';
GraphQLSchemaModel.contentItemInterfaceName = 'ContentItem';
GraphQLSchemaModel.textElementTypeName = 'TextElement';
GraphQLSchemaModel.numberElementTypeName = 'NumberElement';
GraphQLSchemaModel.dateTimeElementTypeName = 'DateTimeElement';
GraphQLSchemaModel.multipleChoiceElementTypeName = 'MultipleChoiceElement';
GraphQLSchemaModel.urlSlugElementTypeName = 'UrlSlugElement';
GraphQLSchemaModel.taxonomyElementTypeName = 'TaxonomyElement';
GraphQLSchemaModel.assetElementTypeName = 'AssetElement';
GraphQLSchemaModel.richTextElementTypeName = 'RichTextElement';
GraphQLSchemaModel.customElementTypeName = 'CustomElement';
GraphQLSchemaModel.linkedItemsElement = 'LinkedItemsElement';
GraphQLSchemaModel.elementTypeMapping = new Map([
[
kontent_delivery_1.ElementType.Text.toString(),
GraphQLSchemaModel.textElementTypeName,
],
[
kontent_delivery_1.ElementType.Number.toString(),
GraphQLSchemaModel.numberElementTypeName,
],
[
kontent_delivery_1.ElementType.DateTime.toString(),
GraphQLSchemaModel.dateTimeElementTypeName,
],
[
kontent_delivery_1.ElementType.MultipleChoice.toString(),
GraphQLSchemaModel.multipleChoiceElementTypeName,
],
[
kontent_delivery_1.ElementType.UrlSlug.toString(),
GraphQLSchemaModel.urlSlugElementTypeName,
],
[
kontent_delivery_1.ElementType.Taxonomy.toString(),
GraphQLSchemaModel.taxonomyElementTypeName,
],
[
kontent_delivery_1.ElementType.Asset.toString(),
GraphQLSchemaModel.assetElementTypeName,
],
[
kontent_delivery_1.ElementType.ModularContent.toString(),
GraphQLSchemaModel.linkedItemsElement,
],
[
kontent_delivery_1.ElementType.RichText.toString(),
GraphQLSchemaModel.richTextElementTypeName,
],
[
kontent_delivery_1.ElementType.Custom.toString(),
GraphQLSchemaModel.customElementTypeName,
],
]);
GraphQLSchemaModel.systemType = "type " + GraphQLSchemaModel.systemTypeName + " {\n id: String!\n name: String!\n codename: String!\n language: String!\n type: String!\n lastModified: String!\n}";
GraphQLSchemaModel.interfaces = new Map([
[
'',
"interface " + GraphQLSchemaModel.contentItemInterfaceName + " {\n system: SystemInfo!\n}",
],
]);
GraphQLSchemaModel.helperTypes = new Map([
[
'multiple_choice_option',
"type MultipleChoiceElementOption {\n name: String!\n codename: String\n}",
],
[
'taxonomy_term',
"type TaxonomyTerm {\n name: String!\n codename: String\n}",
],
[
'asset',
"type Asset {\n name: String\n type: String\n size: Int\n description: String\n url: String\n width: Int\n height: Int\n}",
],
[
'link',
"type Link {\n codename: String\n itemID: String\n urlSlug: String\n type: String\n}",
],
[
'richtext_image',
"type RichTextImage {\n imageId: String!\n url: String!\n description: String\n width: Int\n height: Int\n}",
],
]);
GraphQLSchemaModel.elementTypes = new Map([
[
kontent_delivery_1.ElementType.Text.toString(),
"type " + GraphQLSchemaModel.textElementTypeName + " {\n type: String!\n name: String!\n value: String\n}",
],
[
kontent_delivery_1.ElementType.Number.toString(),
"type " + GraphQLSchemaModel.numberElementTypeName + " {\n type: String!\n name: String!\n value: Int\n}",
],
[
kontent_delivery_1.ElementType.DateTime.toString(),
"type " + GraphQLSchemaModel.dateTimeElementTypeName + " {\n type: String!\n name: String!\n value: String\n}",
],
[
kontent_delivery_1.ElementType.MultipleChoice.toString(),
"type " + GraphQLSchemaModel.multipleChoiceElementTypeName + " {\n type: String!\n name: String!\n value: [MultipleChoiceElementOption]\n}",
],
[
kontent_delivery_1.ElementType.UrlSlug.toString(),
"type " + GraphQLSchemaModel.urlSlugElementTypeName + " {\n type: String!\n name: String!\n value: String\n}",
],
[
kontent_delivery_1.ElementType.Taxonomy.toString(),
"type " + GraphQLSchemaModel.taxonomyElementTypeName + " {\n type: String!\n name: String!\n value: [TaxonomyTerm]\n taxonomyGroup: String\n}",
],
[
kontent_delivery_1.ElementType.Asset.toString(),
"type " + GraphQLSchemaModel.assetElementTypeName + " {\n type: String!\n name: String!\n value: [Asset]\n}",
],
[
kontent_delivery_1.ElementType.RichText.toString(),
"type " + GraphQLSchemaModel.richTextElementTypeName + " {\n type: String!\n name: String!\n value: String\n linkedItemCodenames: [String]\n links: [Link]\n images: [RichTextImage]\n resolvedHtml: String\n}",
],
[
kontent_delivery_1.ElementType.ModularContent.toString(),
"type " + GraphQLSchemaModel.linkedItemsElement + " {\n type: String!\n name: String!\n value: [ContentItem]\n itemCodenames: [String]\n}",
],
[
kontent_delivery_1.ElementType.Custom.toString(),
"type " + GraphQLSchemaModel.customElementTypeName + " {\n type: String!\n name: String!\n value: String\n}",
],
]);
return GraphQLSchemaModel;
}());
exports.GraphQLSchemaModel = GraphQLSchemaModel;
//# sourceMappingURL=graphql-schema-model.js.map