UNPKG

@odata2ts/odata2ts

Version:

Flexible generator to produce various TypeScript artefacts (from simple model interfaces to complete odata clients) from OData metadata files

70 lines 2.7 kB
import { __awaiter } from "tslib"; import { writeFile } from "fs/promises"; import { EmitModes } from "../OptionModel.js"; export class FileHandler { constructor(path, fileName, file, importContainer, formatter, allowTypeChecking) { this.path = path; this.fileName = fileName; this.file = file; this.importContainer = importContainer; this.formatter = formatter; this.allowTypeChecking = allowTypeChecking; } getFullFilePath() { return this.path ? `${this.path}/${this.fileName}` : this.fileName; } getFile() { return this.file; } getImports() { return this.importContainer; } write(emitMode, noOutput = false) { return __awaiter(this, void 0, void 0, function* () { this.file.addImportDeclarations(this.importContainer.getImportDeclarations()); // add ts-nocheck to beginning of each file if (!this.allowTypeChecking) { const stmts = this.file.addStatements((writer) => { writer.writeLine("// @ts-nocheck"); }); stmts[0].setOrder(0); } if (noOutput) { return; } switch (emitMode) { case EmitModes.js: case EmitModes.js_dts: return this.file.emit(); case EmitModes.dts: return this.file.emit({ emitOnlyDtsFiles: true }); case EmitModes.ts: return this.formatAndWriteFile(); default: throw new Error(`Emit mode "${emitMode}" is invalid!`); } }); } formatAndWriteFile() { return __awaiter(this, void 0, void 0, function* () { const fileName = this.file.getFilePath(); const content = this.file.getFullText(); try { const formatted = this.formatter ? yield this.formatter.format(content) : content; try { return writeFile(fileName, formatted); } catch (writeError) { console.error(`Failed to write file [/${fileName}]`, writeError); process.exit(3); } } catch (formattingError) { console.error("Formatting failed", formattingError); yield writeFile("error.log", (formattingError === null || formattingError === void 0 ? void 0 : formattingError.toString()) || "no error message!"); process.exit(99); } }); } } //# sourceMappingURL=FileHandler.js.map