swaxios
Version:
Swagger API client generator based on axios and TypeScript.
59 lines • 2.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFileIndex = exports.getUniqueFileName = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const fileNames = [];
function getUniqueFileName(fileName) {
if (!fileNames.includes(fileName)) {
fileNames.push(fileName);
return null;
}
let alternativeFilename = fileName;
while (fileNames.includes(alternativeFilename)) {
const indexNumberMatch = alternativeFilename.match(/(\d+)$/);
const indexNumber = indexNumberMatch ? parseInt(indexNumberMatch[0], 10) + 1 : 1;
alternativeFilename = `${fileName}${indexNumber}`;
}
fileNames.push(alternativeFilename);
return alternativeFilename;
}
exports.getUniqueFileName = getUniqueFileName;
async function generateFileIndex(directory) {
const resolvedDir = path_1.default.resolve(directory);
const fileIndex = {
directories: {},
files: {},
fullPath: resolvedDir,
name: path_1.default.basename(resolvedDir),
};
try {
const dirObjects = await fs_extra_1.default.readdir(resolvedDir);
const generateIndices = dirObjects.sort().map(async (fileName) => {
const resolvedFile = path_1.default.join(resolvedDir, fileName);
const lstat = await fs_extra_1.default.lstat(resolvedFile);
fileName = fileName.replace('.ts', '');
if (lstat.isFile()) {
fileIndex.files[fileName] = {
alternativeName: getUniqueFileName(fileName),
fullPath: resolvedFile.replace('.ts', ''),
name: fileName,
};
}
else if (lstat.isDirectory()) {
const deepIndex = await generateFileIndex(resolvedFile);
fileIndex.directories[fileName] = deepIndex;
}
});
await Promise.all(generateIndices);
}
catch (error) {
console.error(error);
}
return fileIndex;
}
exports.generateFileIndex = generateFileIndex;
//# sourceMappingURL=FileUtil.js.map