@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
TypeScript
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>;
};