Kentico Cloud Model Generator Utility
The purpose of this project is to help you generate strongly typed models out of Kentico Cloud item types. These models can then be used along with the Kentico Cloud Delivery SDK
Installation
Install package globally:
npm i kentico-cloud-model-generator-utility -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:
kc-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 Cloud Project Id from which models will be generatedsecureAccessKey
- Secure access key required to authenticate requests with enabled secure access in Kentico Cloud 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-cloud-delivery';
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-cloud-delivery';
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 KenticoCloud = require('kentico-cloud-delivery');
export class Actor extends KenticoCloud.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.