The purpose of this library is to help you write better code by using strongly typed objects or Typescript models. There are 4 types of models you can generate:
delivery-sdk
- Typescript models for JS Delivery SDK representing Content types / taxonomiesmigration-toolkit
- Typescript models Migration Toolkit helping you write migration scripts easierenvironment
- Strongly typed objects representing all structural objects within an environment (i.e. content types, workflows, taxonomies ...). These models help you write scripts because they provide you a straightforward access to objects properties.items
- GeneratesType
representing all available item codenames for each content type and object representingid
andcodenames
properties of all items. This makes it easy and convenient to reference items in your code.It is not recommended to use this if your environment contains high number of items.
Install as a dev dependency
to your project or use npx
# Install as dev dependency
npm i --save-dev @kontent-ai/model-generator
# Run with npx
npx @kontent-ai/model-generator@latest --help
Go to folder where you want to create models and run:
# Models for Delivery SDK
npx @kontent-ai/model-generator@latest delivery --environmentId=x --apiKey=y
# Models for Migration Toolkit
npx @kontent-ai/model-generator@latest migration-toolkit --environmentId=x --apiKey=y
# Environment models used for scripting and strongly typed access to environment objects
npx @kontent-ai/model-generator@latest environment --environmentId=x --apiKey=y
# Items overview with ids / codenames and Types representing available item codenames
# 'deliveryApiKey' option is required for 'preview' or 'secure' api modes
# 'contentTypes' option is CSV of content type codenames and can be used to narrow down generated items
npx @kontent-ai/model-generator@latest items --environmentId=x --apiKey=y --deliveryApiKey=y --apiMode=preview --contentTypes=a,b,c
Run with more options:
npx @kontent-ai/model-generator@latest delivery --environmentId=x --apiKey=y --moduleFileExtension=js --outputDir=kontent-models --addTimestamp=false
To learn what options are available use the help
command:
npx @kontent-ai/model-generator@latest --help
# or get help for specific command
npx @kontent-ai/model-generator@latest delivery-sdk --help
import { generateDeliveryModelsAsync, generateEnvironmentModelsAsync, generateMigrationModelsAsync, generateItemsAsync } from '@kontent-ai/model-generator';
// delivery-sdk models
await generateDeliveryModelsAsync({
...
});
// migration-toolkit models
await generateMigrationModelsAsync({
...
});
// environment overview
await generateEnvironmentModelsAsync({
...
});
// items
await generateItemsAsync({
...
});
To see how models are generated have a look at following sample generated models:
delivery-sdk
-> https://github.com/kontent-ai/model-generator-js/tree/master/sample/deliverymigration-toolkit
-> https://github.com/kontent-ai/model-generator-js/tree/master/sample/migrationenvironment
-> https://github.com/kontent-ai/model-generator-js/tree/master/sample/environmentitems
-> https://github.com/kontent-ai/model-generator-js/tree/master/sample/items
Contributions are welcomed. Simply make a pull request.