@compas/code-gen
Version:
Generate various boring parts of your server
52 lines (51 loc) • 1.7 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.js").ExperimentalGenerateOptions} options
* @property {import("./generated/common/types.js").ExperimentalStructure} structure
* @property {import("./file/context").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").Generator} generator
* @param {import("./generated/common/types").ExperimentalGenerateOptions} options
* @returns {OutputFile[]}
*/
export function generateExecute(
generator: import("./generator").Generator,
options: import("./generated/common/types").ExperimentalGenerateOptions,
): OutputFile[];
/**
* Write output files if an output directory is provided
*
* @param {GenerateContext} generateContext
* @param {OutputFile[]} outputFiles
*/
export function generateWriteOutputFiles(
generateContext: GenerateContext,
outputFiles: OutputFile[],
): void;
export type OutputFile = {
contents: string;
relativePath: string;
};
export type GenerateContext = {
log: import("@compas/stdlib").Logger;
options: import("./generated/common/types.js").ExperimentalGenerateOptions;
structure: import("./generated/common/types.js").ExperimentalStructure;
files: import("./file/context").GenerateFileMap;
};
//# sourceMappingURL=generate.d.ts.map