@autobe/compiler
Version:
AI backend server code generator
43 lines (38 loc) • 1.24 kB
text/typescript
import {
IAutoBeRealizeCompiler,
IAutoBeRealizeCompilerListener,
IAutoBeRealizeControllerProps,
IAutoBeRealizeTestProps,
IAutoBeRealizeTestResult,
} from "@autobe/interface";
import { AutoBeCompilerRealizeTemplate } from "../raw/AutoBeCompilerRealizeTemplate";
import { FilePrinter } from "../utils/FilePrinter";
import { testRealizeProject } from "./testRealizeProject";
import { writeRealizeControllers } from "./writeRealizeControllers";
export class AutoBeRealizeCompiler implements IAutoBeRealizeCompiler {
public constructor(
private readonly listener: IAutoBeRealizeCompilerListener,
) {}
public async controller(
props: IAutoBeRealizeControllerProps,
): Promise<Record<string, string>> {
const result: Record<string, string> = await writeRealizeControllers(props);
for (const [key, value] of Object.entries(result))
result[key] = await FilePrinter.beautify(value);
return result;
}
public test(
props: IAutoBeRealizeTestProps,
): Promise<IAutoBeRealizeTestResult> {
return testRealizeProject(
{
...props,
files: {
...props.files,
...AutoBeCompilerRealizeTemplate,
},
},
this.listener.test,
);
}
}