UNPKG

@protocolnebula/ts-openapi-generator

Version:

Build API and models from Swagger/OpenAPI to use in any project type

126 lines 5.21 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseYAML = exports.parseJSON = exports.fileIsYAML = exports.fileIsJSON = exports.fileExtension = exports.generateFileSync = exports.getTemplate = exports.downloadFile = exports.copyDir = exports.makeDir = exports.getAllFoldersFrom = exports.resolvePluggablePath = void 0; const fs_extra_1 = require("fs-extra"); const http = require("http"); const https = require("https"); const yaml = require("js-yaml"); const mkdir_recursive_1 = require("mkdir-recursive"); const path_1 = require("path"); const config_model_1 = require("../models/config.model"); const getExtensionRegex = /(\.[a-z0-9]+).*/i; const isHttpsRegex = /^https/i; /** * Find a resource for a pluggable element (like templates) * @param elementPath Element to find (template name, ...) * @param internalPath Path starting root (src/ parent folder) in case elementPath path not exists * This will be concated elementPath: `${internalPath}/${elementPath}` * @example resolvePluggablePath('angular2', 'templates'); * @returns The resolved path to the resource * @throws Exception if path not exist or not found */ function resolvePluggablePath(elementPath, internalPath) { // Generate the template path if ((0, fs_extra_1.existsSync)(elementPath)) { return elementPath; } const resolvedPath = (0, path_1.resolve)(__dirname, '..', internalPath, elementPath); if ((0, fs_extra_1.existsSync)(resolvedPath)) { return resolvedPath; } throw `Pluggable path for ${elementPath} not found`; } exports.resolvePluggablePath = resolvePluggablePath; function getAllFoldersFrom(path) { return (0, fs_extra_1.readdirSync)(path, { withFileTypes: true }) .filter((el) => el.isDirectory()) .map((el) => el.name); } exports.getAllFoldersFrom = getAllFoldersFrom; function makeDir(dest) { (0, mkdir_recursive_1.mkdirSync)(dest); } exports.makeDir = makeDir; function copyDirFilter(src, dst) { return dst.indexOf('node_modules') === -1; } function copyDir(src, dest, overwrite = false) { console.debug('Copying', src, 'to', dest); (0, fs_extra_1.copySync)(src, dest, { overwrite: true, errorOnExist: true, filter: copyDirFilter, }); } exports.copyDir = copyDir; function downloadFile(url, dest) { return __awaiter(this, void 0, void 0, function* () { makeDir((0, path_1.dirname)(dest)); return new Promise((resolve, error) => { try { const file = (0, fs_extra_1.createWriteStream)(dest); const protocol = isHttpsRegex.test(url) ? https : http; protocol.get(url, function (response) { response.pipe(file); file.on('finish', () => { file.close(); resolve(dest); }); file.on('error', (err) => { error(err); }); }); } catch (err) { error(err); } }); }); } exports.downloadFile = downloadFile; function getTemplate(templateFile) { const fullPath = (0, path_1.resolve)(config_model_1.config.templatePath, templateFile); return (0, fs_extra_1.readFileSync)(fullPath, 'utf-8'); } exports.getTemplate = getTemplate; function generateFileSync(file, data) { (0, fs_extra_1.writeFileSync)(file, data); } exports.generateFileSync = generateFileSync; function fileExtension(filePath) { const fileBasename = (0, path_1.basename)(filePath); const firstDot = fileBasename.indexOf('.'); const lastDot = fileBasename.lastIndexOf('.'); const fileExtname = (0, path_1.extname)(fileBasename).replace(getExtensionRegex, '$1'); if (firstDot === lastDot) { return fileExtname.substr(1); } return fileBasename.slice(firstDot, lastDot) + fileExtname; } exports.fileExtension = fileExtension; function fileIsJSON(filePath) { return fileExtension(filePath) === 'json'; } exports.fileIsJSON = fileIsJSON; function fileIsYAML(filePath) { return fileExtension(filePath) === 'yaml'; } exports.fileIsYAML = fileIsYAML; function parseJSON(filePath) { return JSON.parse((0, fs_extra_1.readFileSync)(filePath, 'utf8')); } exports.parseJSON = parseJSON; function parseYAML(filePath) { return yaml.safeLoad((0, fs_extra_1.readFileSync)(filePath, 'utf8')); } exports.parseYAML = parseYAML; //# sourceMappingURL=files.util.js.map