@altostra/core
Version:
Core library for shared types and logic
51 lines (50 loc) • 2.15 kB
TypeScript
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>>;
}