@compas/code-gen
Version:
Generate various boring parts of your server
45 lines (44 loc) • 1.68 kB
TypeScript
/**
* @typedef {object} OutputFile
* @property {string} contents
* @property {string} relativePath
*/
/**
* @typedef {object} GenerateContext
* @property {import("@compas/stdlib").Logger} log
* @property {import("./generated/common/types.d.ts").StructureGenerateOptions} options
* @property {import("./generated/common/types.d.ts").StructureStructure} structure
* @property {import("./file/context.js").GenerateFileMap} files
*/
/**
* Execute the generators based on de provided Generator instance and included options.
*
* TODO: expand docs
*
* - flat structure, no resolved references
* - Preprocess everything
* - talk about caching
* - targetLanguageSwitch & targetCustomSwitch
*
* @param {import("./generator.js").Generator} generator
* @param {import("./generated/common/types.js").StructureGenerateOptions} options
* @returns {Array<OutputFile>}
*/
export function generateExecute(generator: import("./generator.js").Generator, options: import("./generated/common/types.js").StructureGenerateOptions): Array<OutputFile>;
/**
* Write output files if an output directory is provided
*
* @param {GenerateContext} generateContext
* @param {Array<OutputFile>} outputFiles
*/
export function generateWriteOutputFiles(generateContext: GenerateContext, outputFiles: Array<OutputFile>): void;
export type OutputFile = {
contents: string;
relativePath: string;
};
export type GenerateContext = {
log: import("@compas/stdlib").Logger;
options: import("./generated/common/types.d.ts").StructureGenerateOptions;
structure: import("./generated/common/types.d.ts").StructureStructure;
files: import("./file/context.js").GenerateFileMap;
};