Nonlinear Performance Magnification
    Wondering what’s next for npm?Check out our public roadmap! »

    @kentico/kontent-model-generator

    3.2.0 • Public • Published

    npm version Build Status CircleCI npm GitHub license

    Kontent Model Generator

    The purpose of this project is to help you generate strongly typed models out of Kentico Kontent item types. These models can then be used along with the Kontent Delivery

    Installation

    Install package globally:

    npm i @kentico/kontent-model-generator -g

    Generating models with NPM script

    To generate models with e.g. ES2015 and TypeScript navigate to folder where you want to generate models and run:

    kontent-generate --projectId=xxx --moduleResolution=ES2015 --codeType=TypeScript

    Configuration

    • codeType - available options are TypeScript and JavaScript
    • moduleResolution - available options are CommonJs and ES2015
    • projectId - represents the Kentico Kontent Project Id from which models will be generated
    • secureAccessKey- Secure access key required to authenticate requests with enabled secure access in Kentico Kontent project.
    • strictPropertyInitalization- Marks typescript properties with !. This is useful if you know all your properties are required. strictPropertyInitalization in Typesript

    Strongly typed linked item elements

    There is no direct link between a element and a linked item that can be used inside that element. For this reason, you need to manually swap ContentItem types with the types that represents that element.

    Examples

    ES2015 + Typescript

    import { ContentItem, Elements } from '@kentico/kontent-delivery';
     
    /**
     * This class was generated by '@kentico/kontent-model-generator' at Mon May 07 2018 11:10:02 GMT+0200 (Central Europe Daylight Time).
     *
     * Note: You can substitute 'ContentItem' type with another generated class. Generator doesn't have this information available
     * and so its up to you to define relationship between models.
     */
    export class Actor extends ContentItem {
        public url: Elements.UrlSlugElement;
        public firstName: Elements.TextElement;
        public lastName: Elements.TextElement;
        public photo: Elements.AssetsElement;
        constructor() {
            super({
                propertyResolver: ((elementName: string) => {
                    if (elementName === 'first_name') {
                        return 'firstName';
                    }
                    if (elementName === 'last_name') {
                        return 'lastName';
                    }
                    return elementName;
                })
            });
        }
    }
     

    ES2015 + JavaScript

     
    import { ContentItem, Elements } from '@kentico/kontent-delivery';
     
    /**
    * This class was generated by '@kentico/kontent-model-generator' at Wed May 09 2018 11:14:55 GMT+0200 (Central Europe Daylight Time).
    */
    export class Actor extends ContentItem {
            constructor() {
            super({
                propertyResolver: ((elementName) => {
                    if (elementName === 'first_name') {
                        return 'firstName';
                    }
                    if (elementName === 'last_name') {
                        return 'lastName';
                    }
                    return elementName;
                })
            });
        }
    }
     

    CommonJs + JavaScript

    var KontentDelivery = require('@kentico/kontent-delivery');
     
    /**
    * This class was generated by '@kentico/kontent-model-generator' at Wed May 09 2018 11:17:05 GMT+0200 (Central Europe Daylight Time).
    */
    export class Actor extends KontentDelivery.ContentItem {
            constructor() {
            super({
                propertyResolver: ((elementName) => {
                    if (elementName === 'first_name') {
                        return 'firstName';
                    }
                    if (elementName === 'last_name') {
                        return 'lastName';
                    }
                    return elementName;
                })
            });
        }
    }
     

    Contribution & Feedback

    Contributions are welcomed. Simply make a pull request.

    Analytics

    Install

    npm i @kentico/kontent-model-generator

    DownloadsWeekly Downloads

    125

    Version

    3.2.0

    License

    MIT

    Unpacked Size

    59.7 kB

    Total Files

    32

    Last publish

    Collaborators

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