UNPKG

templates-mo

Version:

Templates is a scaffolding framework that makes code generation simple, dynamic, and reusable. Generate files, parts of your app, or whole project structures—without the repetitive copy-pasting

97 lines (96 loc) • 2.6 kB
import DirectoryNode, { DirNode } from "../fileSystemTree"; import type { SettingsFile } from "../types/settings"; import File, { type FileOptions } from "./File"; export declare class Template { /** * Name of template */ name: any; /** * The Directory were the template code lives */ location: any; /** * Settings file of the template */ settingsFile: SettingsFile; /** * Template's packages. By default all packages arent loaded into memory and only * packages that are requests are loaded */ packages: Record<string, DirNode>; /** * Packages used */ packagesUsed: string[]; /** * Compiled Files */ compiledFiles: File[]; /** * Def files */ defs: Record<string, string>; /** * Get a template */ static get(templateName: string): Promise<Template>; private static fetchSettingsFile; static fetchTemplateLocation(templateName: string): Promise<string | null>; /** * Extra Relative directories to create in instances * * TODO: This is not the best way to do this but at the moment */ extraDirectories: string[]; constructor( /** * Name of template */ name: any, /** * The Directory were the template code lives */ location: any, /** * Settings file of the template */ settingsFile: SettingsFile, /** * Template's packages. By default all packages arent loaded into memory and only * packages that are requests are loaded */ packages?: Record<string, DirNode>, /** * Packages used */ packagesUsed?: string[], /** * Compiled Files */ compiledFiles?: File[], /** * Def files */ defs?: Record<string, string>); /** * Fetch packages contents so they can be included in rendered instance. */ fetchPackages(newPackages: string | string[]): Promise<void>; /** * Fetch a package contents so they can be included in rendered instance. * * @param newPackage - package from the template you would like to use */ fetchPackage(newPackageName: string): Promise<void>; /** * packages that will be used in the render process */ usedPackages(): DirectoryNode[]; createFile(file: string, content: string, options?: Partial<FileOptions>): void; /** * Create a directory in the template. When instances are created these directories * will be created in the instance */ createDirectory(dir: string): void; }