/** * Parameters provided to template during generation */ export interface TemplateParams { /** The module's name (e.g. "test-module") */ readonly module: string /** The associated class name (e.g. "TestModule") */ readonly className: string /** The associated camel name (e.g. "testModule") */ readonly camelName: string } /** * Output generated by a template */ export interface TemplateOutput { /** Name of the file to create in the output module's directory */ readonly fileName: string /** Should this file be considered as a script and be formatted? */ readonly script: boolean /** The file's content */ readonly content: string } /** * Template generator * Takes a parameters object and return a generated file object */ export type Template = (params: TemplateParams) => TemplateOutput