UNPKG

typescript-scaffolder

Version:

![npm version](https://img.shields.io/npm/v/typescript-scaffolder) ![coverage](https://img.shields.io/badge/coverage-97.48%25-green)

35 lines (34 loc) 1.71 kB
"use strict"; 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}`); }