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.

44 lines (43 loc) 2.38 kB
import type { ContentTypeModels, TaxonomyModels, WorkflowModels } from "@kontent-ai/management-sdk"; import type { DeliveryEntity, DeliveryEntityType } from "./delivery-entity.generator.js"; import type { DeliveryGeneratorConfig } from "./delivery.generator.js"; export type DeliveryEntityNames<T extends DeliveryEntityType> = { readonly codenamesValuePropertyName: string; readonly codenamesTypeName: string; readonly codenamesTypeguardFunctionName: string; readonly overviewFilename: string; readonly folderName: string; readonly getEntityName: (entity: Readonly<DeliveryEntity>) => string; readonly getEntityFilename: (entity: Readonly<DeliveryEntity>, addExtension: boolean) => string; readonly getCodenameTypeName: (entity: Readonly<DeliveryEntity>) => string; readonly getTypeguardFunctionName: (entity: Readonly<DeliveryEntity>) => string; } & AdditionalEntityNames<T>; export type AdditionalEntityNames<T> = T extends "Taxonomy" ? { readonly termsNames: { readonly valuesPropertyName: (taxonomy: Readonly<TaxonomyModels.Taxonomy>) => string; readonly codenamesTypeName: (taxonomy: Readonly<TaxonomyModels.Taxonomy>) => string; readonly typeguardFunctionName: (taxonomy: Readonly<TaxonomyModels.Taxonomy>) => string; }; } : T extends "Workflow" ? { readonly allStepsNames: { readonly valuesPropertyName: string; readonly codenamesTypeName: string; readonly typeguardFunctionName: string; }; readonly stepsNames: { readonly valuesPropertyName: (workflow: Readonly<WorkflowModels.Workflow>) => string; readonly codenamesTypeName: (workflow: Readonly<WorkflowModels.Workflow>) => string; readonly typeguardFunctionName: (workflow: Readonly<WorkflowModels.Workflow>) => string; }; } : T extends "Type" ? { readonly typeNames: { readonly contentItemTypeguardFunctionName: (type: Readonly<ContentTypeModels.ContentType>) => string; }; } : NonNullable<unknown>; export declare function getDeliveryEntityNamesGenerator<T extends DeliveryEntityType>(config: { readonly nameResolvers: Pick<DeliveryGeneratorConfig, "nameResolvers">["nameResolvers"]; readonly fileResolvers: Pick<DeliveryGeneratorConfig, "fileResolvers">["fileResolvers"]; readonly entityType: T; }): { getEntityNames: () => DeliveryEntityNames<T>; };