UNPKG

@altostra/core

Version:

Core library for shared types and logic

51 lines (50 loc) 2.15 kB
import type { TemplateDescriptor } from "./Common"; import { EmptyTemplate } from "./Template"; import type { Template } from "./Template"; import type { TemplatesProvider } from "./TemplatesProvider"; /** * A class to manage list and retrieval of project-templates */ export declare class TemplatesManager { readonly emptyProjectTemplate: EmptyTemplate; static readonly emptyProjectTemplate: EmptyTemplate; /** * Initialize new instance of template manager */ constructor(); /** * Gets an array of registered templates provider types */ get providerTypes(): string[]; /** * Gets a templates provider by its `type` * @param type The providers type * @returns The */ getProvider<TType extends string>(type: TType): TemplatesProvider<TType, Template<TType>>; /** * Lists all provided templates * @param all [Optional] If `true`, lists all templates including empty template; otherwise, * lists only providers' templates * @returns A promise which resolves to an array of template descriptors, describing the available templates */ list(all?: boolean): Promise<TemplateDescriptor[]>; /** * Registers a templates provider with the current instance of templates manager * @param provider The provider to register */ registerProvider<TType extends string>(provider: TemplatesProvider<TType, Template<TType>>): void; /** * Gets a template for the specified *template descriptor* * @param template A *template descriptor* that describe the template to get * @returns The described template */ get<TTemplatesProviderType extends string>(template: TemplateDescriptor<TTemplatesProviderType>): Promise<Template<TTemplatesProviderType>>; /** * Gets a template by the specified *provider type* and name * @param type The *provider type* of the template to get * @param name The name of the template to get * @returns The specified template */ get<TTemplatesProviderType extends string>(type: TTemplatesProviderType, name: string): Promise<Template<TTemplatesProviderType>>; }