typescript-scaffolder
Version:
 
35 lines (34 loc) • 1.71 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateErrorHandlerForApiFile = generateErrorHandlerForApiFile;
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const fs_extra_1 = require("fs-extra");
const ts_morph_1 = require("ts-morph");
const error_handling_constructors_1 = require("../../utils/error-handling-constructors");
const logger_1 = require("../../utils/logger");
function generateErrorHandlerForApiFile(outputDir, fileBaseName, endpoints, overwrite = true) {
if (!endpoints.length)
return;
(0, fs_extra_1.ensureDir)(outputDir);
const project = new ts_morph_1.Project();
const outPath = path_1.default.join(outputDir, `${fileBaseName}.errorHandler.ts`);
if (!overwrite && fs_1.default.existsSync(outPath)) {
logger_1.Logger.debug(`Skipped error handler for ${fileBaseName} (already exists)`);
return;
}
const sourceFile = project.createSourceFile(outPath, "", { overwrite });
(0, error_handling_constructors_1.addErrorHandlerImportsToSourceFile)(sourceFile, endpoints);
sourceFile.addStatements([(0, error_handling_constructors_1.buildErrorHandlerImplSource)()]);
for (const meta of endpoints) {
sourceFile.addStatements([
(0, error_handling_constructors_1.buildEndpointErrorHandlerExport)(meta.functionName, meta.responseType, meta.endpoint),
]);
}
// 4) Save to disk
sourceFile.saveSync();
logger_1.Logger.info(`✔ Wrote error handler for ${fileBaseName}`);
}