Skip to content
Javascript model generator for Delivery API
TypeScript JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
.github
.vscode
src
test
.gitattributes
.gitignore
.npmignore
.prettierrc
.travis.yml
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
LICENSE.md
README.md
package-lock.json
package.json
tsconfig.json
tslint.json

README.md

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

You can’t perform that action at this time.