Numerous Problems Multiplied
    Wondering what’s next for npm?Check out our public roadmap! »

    This package has been deprecated

    Author message:

    Package moved to @kentico/kontent-schema-generator-graphql

    kentico-cloud-graphql-schema-generator
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.2 • Public • Published

    Kentico GraphQL schema generator

    Build Status npm version npm Maintainability Test Coverage

    GraphQL schema generator used to generate schema based on specified project.

    This schema could be used when creating GraphQL endpoint from Kentico Cloud Delivery API REST endpoint.

    This schema is primarily meant to be used in combination with the Official JavaScript SDK on the top of the Kentico Cloud REST API. If you are using REST API directly, you won't get all elements' properties set, because some of them are set by the JS SDK.

    Showcase could be see on apollo express boilerplate.

    Get started

    Prerequisites

    Installation

    npm i kentico-cloud-graphql-schema-generator -g

    Generating schema with NPM script

    Provide a project ID of your project.

    Write type definition to the standard output

    • kc-generate-gql-schema --projectId xxx

    Generate file with definition exported as a constant fo file config.js

    • kc-generate-gql-schema --projectId xxx --createModule --outputFile "config.js"

    Configuration

    • projectId - represents the Kentico Cloud Project Id from which schema will be generated
    • secureAccessKey - Secure access key required to authenticate requests with enabled secure access in Kentico Cloud project
    • outputFile - specifies output file name (possible with the path), if not specified - output is written to standard output
    • createModule - output is defined as a constant and exported as a module (see Example Output)

    Development

    1. Clone the repository
    2. Run npm install to install all required dependencies
    3. Run npm run build to build the solution

    Run

    Run node ./_commonjs/index.js --projectId xxx

    Test

    • Run npm test to run all tests

    Run watch mode

    • Run npm run watch to run the watch mode

    Example output

    Without module encapsulation (w/o `createModule`)
    type SystemInfo {
      id: String!
      name: String!
      codename: String!
      language: String!
      type: String!
      lastModified: String!
    }
    interface ContentItem {
      system: SystemInfo!
    }
    type MultipleChoiceElementOption {
      name: String!
      codename: String
    }
    type TaxonomyTerm {
      name: String!
      codename: String
    }
    type Asset {
      name: String
      type: String
      size: Int
      description: String
      url: String,
    }
    type Link {
      codename: String
      itemID: String
      urlSlug: String
      type: String
    }
    type TextElement {
      type: String!
      name: String!
      value: String
    }
    type NumberElement {
      type: String!
      name: String!
      value: String
      number: Int
    }
    type DateTimeElement {
      type: String!
      name: String!
      value: String
      datetime: String
    }
    type MultipleChoiceElement {
      type: String!
      name: String!
      value: String
      options: [MultipleChoiceElementOption]
    }
    type UrlSlugElement {
      type: String!
      name: String!
      value: String
      data: String
    }
    type TaxonomyElement {
      type: String!
      name: String!
      value: String
      taxonomyGroup: String
      taxonomyTerms: [TaxonomyTerm]
    }
    type AssetElement {
      type: String!
      name: String!
      value: String
      assets: [Asset]
    }
    type RichTextElement {
      type: String!
      name: String!
      value: String
      linkedItemCodenames: [String]
      links: [Link]
    }
    
    type AboutUsContentType implements ContentItem {
      system: SystemInfo!
      metadata__og_description: TextElement
      metadata__meta_title: TextElement
      metadata__og_title: TextElement
      metadata__meta_description: TextElement
      metadata__twitter_site: TextElement
      url_pattern: UrlSlugElement
      metadata__twitter_image: AssetElement
      metadata__twitter_creator: TextElement
      metadata__twitter_title: TextElement
      metadata__twitter_description: TextElement
      metadata__og_image: AssetElement
      facts: [ContentItem]
    }
    
    
    With module encapsulation
    const TYPE_DEFINITION = `type SystemInfo {
      id: String!
      name: String!
      codename: String!
      language: String!
      type: String!
      lastModified: String!
    }
    interface ContentItem {
      system: SystemInfo!
    }
    type MultipleChoiceElementOption {
      name: String!
      codename: String
    }
    type TaxonomyTerm {
      name: String!
      codename: String
    }
    type Asset {
      name: String
      type: String
      size: Int
      description: String
      url: String,
    }
    type Link {
      codename: String
      itemID: String
      urlSlug: String
      type: String
    }
    type TextElement {
      type: String!
      name: String!
      value: String
    }
    type NumberElement {
      type: String!
      name: String!
      value: String
      number: Int
    }
    type DateTimeElement {
      type: String!
      name: String!
      value: String
      datetime: String
    }
    type MultipleChoiceElement {
      type: String!
      name: String!
      value: String
      options: [MultipleChoiceElementOption]
    }
    type UrlSlugElement {
      type: String!
      name: String!
      value: String
      data: String
    }
    type TaxonomyElement {
      type: String!
      name: String!
      value: String
      taxonomyGroup: String
      taxonomyTerms: [TaxonomyTerm]
    }
    type AssetElement {
      type: String!
      name: String!
      value: String
      assets: [Asset]
    }
    type RichTextElement {
      type: String!
      name: String!
      value: String
      linkedItemCodenames: [String]
      links: [Link]
    }
    
    type AboutUsContentType implements ContentItem {
      system: SystemInfo!
      metadata__og_description: TextElement
      metadata__meta_title: TextElement
      metadata__og_title: TextElement
      metadata__meta_description: TextElement
      metadata__twitter_site: TextElement
      url_pattern: UrlSlugElement
      metadata__twitter_image: AssetElement
      metadata__twitter_creator: TextElement
      metadata__twitter_title: TextElement
      metadata__twitter_description: TextElement
      metadata__og_image: AssetElement
      facts: [ContentItem]
    }`;
    
    module.exports = {
      TYPE_DEFINITION
    }
    

    Analytics

    Install

    npm i kentico-cloud-graphql-schema-generator

    DownloadsWeekly Downloads

    3

    Version

    1.0.2

    License

    MIT

    Unpacked Size

    30.7 kB

    Total Files

    13

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar