// @ts-nocheck const path = require("path") const fs = require("fs") export function removeIndex(ss:any) { const remove = (str:any) => { if (str.endsWith("/index")) { return str.slice(0, -6); } if (str.endsWith("index")) { return str.slice(0, -5); } return str ? str : "/"; }; let r = true; let rr = ss; while (r) { if (rr.endsWith("/index")) { rr = remove(rr); } else { r = false; } } return rr ? rr : "/"; } export function isIndexEnd(str:any) { return str.length == 1 && str.endsWith("/"); } export function walkDir( filePath:any, exclude = ["node_modules", "^_", ".git", ".idea", ".gitignore", "client","\.txt$","\.test\.js$","\.test\.ts$"] ) { let files:any[] = []; function Data(opts:any) { this.relativeDir = opts.relativeDir; this.relativeFile = opts.relativeFile; this.filename = opts.filename; this.file = opts.file; this.absoluteFile = opts.absoluteFile; this.relativeFileNoExt = opts.relativeFileNoExt; this.absoluteDir = opts.absoluteDir; } function readDir(filePath, dirname = ".") { let res = fs.readdirSync(filePath); res.forEach((filename) => { const filepath = path.resolve(filePath, filename); const stat = fs.statSync(filepath); const name = filepath.split(path.sep).slice(-1)[0]; if (typeof exclude === "string" && new RegExp(exclude).test(name)) { return; } if (Array.isArray(exclude)) { for (let i = 0; i < exclude.length; i++) { const excludeItem = exclude[i]; if (new RegExp(excludeItem).test(name)) { return; } } } if (!stat.isFile()) { readDir(filepath, dirname + path.sep + name); } else { const data = new Data({ relativeDir: dirname, relativeFile: dirname + path.sep + path.parse(filepath).base, relativeFileNoExt: dirname + path.sep + path.parse(filepath).name, file: path.parse(filepath).base, filename: path.parse(filepath).name, absoluteFile: filepath, absoluteDir: path.parse(filepath).dir, }); files.push(data); } }); } readDir(filePath); return files; }