@odata2ts/odata2ts
Version:
Flexible generator to produce various TypeScript artefacts (from simple model interfaces to complete odata clients) from OData metadata files
53 lines (52 loc) • 2.46 kB
TypeScript
import { CompilerOptions, SourceFile } from "ts-morph";
import { DataModel } from "../data-model/DataModel.js";
import { NamingHelper } from "../data-model/NamingHelper.js";
import { EmitModes } from "../OptionModel.js";
import { FileHandler } from "./FileHandler.js";
import { FileFormatter } from "./formatter/FileFormatter.js";
export interface ProjectManagerOptions {
usePrettier?: boolean;
tsConfigPath?: string;
bundledFileGeneration?: boolean;
/**
* for testing purposes, turn this on and retrieve all generated files via getCachedFiles
*/
noOutput?: boolean;
allowTypeChecking?: boolean;
}
export declare function createProjectManager(outputDir: string, emitMode: EmitModes, namingHelper: NamingHelper, dataModel: DataModel, options: ProjectManagerOptions): Promise<ProjectManager>;
export declare class ProjectManager {
protected outputDir: string;
protected emitMode: EmitModes;
protected namingHelper: NamingHelper;
protected dataModel: DataModel;
protected formatter: FileFormatter | undefined;
protected options: ProjectManagerOptions;
private project;
private mainServiceFile;
private mainModelFile;
private mainQFile;
private readonly cachedFiles;
constructor(outputDir: string, emitMode: EmitModes, namingHelper: NamingHelper, dataModel: DataModel, formatter: FileFormatter | undefined, compilerOptions: CompilerOptions | undefined, options: ProjectManagerOptions);
getDataModel(): DataModel;
/**
* Only filled when noOutput=true
*/
getCachedFiles(): Map<string, SourceFile>;
private writeFile;
private createFile;
init(): Promise<void>;
initModels(): void;
finalizeModels(): Promise<void>;
initQObjects(): void;
finalizeQObjects(): Promise<void>;
initServices(): void;
finalizeServices(): Promise<void>;
getMainServiceFile(): FileHandler;
createOrGetMainModelFile(reservedNames?: Array<string>): FileHandler;
createOrGetMainQObjectFile(reservedNames?: Array<string>): FileHandler;
createOrGetModelFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined): FileHandler;
createOrGetQObjectFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined): FileHandler;
createOrGetServiceFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined): FileHandler;
finalizeFile(file: FileHandler): Promise<void>;
}