UNPKG

@kontent-ai/model-generator

Version:

This utility generates strongly-typed models for Delivery JS SDK, Migration toolkit or just general scripting to improve the experience when referencing Kontent.ai related objects.

114 lines (95 loc) 3.28 kB
import type { IDeliveryClient } from "@kontent-ai/delivery-sdk"; import type { ContentTypeElements, ContentTypeModels, ContentTypeSnippetModels, ElementModels, IManagementClient, TaxonomyModels, } from "@kontent-ai/management-sdk"; export type CliAction = "delivery-sdk" | "migration-toolkit" | "environment" | "items" | "sync-sdk"; export type LibraryType = "@kontent-ai/migration-toolkit" | "@kontent-ai/delivery-sdk" | "@kontent-ai/sync-sdk"; export const moduleFileExtensions = ["js", "ts", "mjs", "mts", "none"] as const; export type ModuleFileExtension = (typeof moduleFileExtensions)[number]; export const environmentEntities = [ "languages", "taxonomies", "contentTypes", "snippets", "webhooks", "collections", "workflows", "assetFolders", "roles", "customApps", "previewUrls", "spaces", ] as const; export type EnvironmentEntity = (typeof environmentEntities)[number]; export type CaseType = "camelCase" | "pascalCase" | "kebabCase"; export type DeliveryApiMode = "preview" | "secure" | "default"; export type GeneratorManagementClient = Readonly<IManagementClient<unknown>>; export type GeneratorDeliveryClient = Readonly<IDeliveryClient>; export type LiteralUnion<T extends string | undefined> = T | (string & NonNullable<unknown>); export type CreateFilesConfig = { readonly createFiles: true; readonly outputDir?: string } | { readonly createFiles: false }; export type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]; }; export interface ErrorData { readonly message: string; readonly isMapiError: boolean; readonly error: unknown; readonly requestData?: string; readonly requestUrl?: string; readonly isUnknownError: boolean; } export interface OriginalManagementError { readonly response?: { readonly status?: number; readonly config?: { readonly url?: string; readonly data?: string; }; readonly data?: { readonly error_code?: number; }; }; } export interface MultipleChoiceOption { readonly name: string; readonly codename: string; } export interface FlattenedElement { readonly title: string; readonly id: string; readonly codename: string; readonly externalId?: string; readonly type: ElementModels.ElementType; readonly isRequired: boolean; readonly guidelines?: string; readonly allowedContentTypes?: readonly Readonly<ContentTypeModels.ContentType>[]; readonly originalElement: Readonly<ContentTypeElements.ContentTypeElementModel>; readonly assignedTaxonomy?: Readonly<TaxonomyModels.Taxonomy>; readonly fromSnippet?: Readonly<ContentTypeSnippetModels.ContentTypeSnippet>; readonly multipleChoiceOptions?: readonly Readonly<MultipleChoiceOption>[]; readonly isElementWithProperty: boolean; } export interface GeneratedFile { readonly filename: string; readonly text: string; } export interface GeneratedSet { readonly files: readonly GeneratedFile[]; readonly folderName: string | undefined; } export type ObjectWithCodename = { readonly codename: string; }; export type ObjectWithName = { readonly name: string; }; export type ValidateKeys<Keys, T extends keyof T extends Keys ? (Keys extends keyof T ? unknown : never) : never> = T; export type GeneratedTypeModel = { readonly imports: readonly string[]; readonly code: string; };