diff --git a/app/page/router.mts b/app/page/router.mts index bd072740..09843f51 100644 --- a/app/page/router.mts +++ b/app/page/router.mts @@ -200,9 +200,10 @@ export default function () { renderSingle: false, unlisted: [ ".DS_Store", - ".git", + ".git*", "Thumbs.db", - "README*", + "README.*", + "README", ], }); }); @@ -217,9 +218,10 @@ export default function () { renderSingle: false, unlisted: [ ".DS_Store", - ".git", + ".git*", "Thumbs.db", - "README*", + "README.*", + "README", ], }); }); @@ -234,9 +236,10 @@ export default function () { renderSingle: false, unlisted: [ ".DS_Store", - ".git", + ".git*", "Thumbs.db", - "README*", + "README.*", + "README", ], }); }); @@ -252,7 +255,11 @@ export default function () { renderSingle: false, unlisted: [ ".*", //dot files/folders - "Thumbs.db" + ".DS_Store", + ".git*", + "Thumbs.db", + "README.*", + "README", ], redirects: [ { diff --git a/app/page/vercel-serve.mts b/app/page/vercel-serve.mts index 98524f1c..456e9009 100644 --- a/app/page/vercel-serve.mts +++ b/app/page/vercel-serve.mts @@ -168,6 +168,28 @@ export interface ServeErrorTemplateParameters { err?: any; } +export const removeFilesForWhichAFolderDescribesThem = (files: PathDetails[]) => { + let outFiles = []; + for (const file of files) { + if (file.type == "directory") { + outFiles.push(file); + } else { + const searchFolder = path.basename(file.relative!, path.extname(file.relative!)); + let found = false; + for (const searching of files) { + if (searching.name == searchFolder && searching.type == "directory") { + found = true; + break; + } + } + if (!found) { + outFiles.push(file); + } + } + } + return outFiles; +} + export const directoryTemplate = (vals: ServeDirectoryTemplateParameters) => { let breadcrumbs: Breadcrumb[] = []; if (vals.paths.length == 1 && helpers.getDirectoryName(vals.paths[0].name)) { @@ -184,7 +206,7 @@ export const directoryTemplate = (vals: ServeDirectoryTemplateParameters) => { }); } return new Promise((resolve, reject) => { - ejs.renderFile(path.join(config.viewsPath, 'directory.ejs'), { h: helpers, path, config, breadcrumbs, ...vals }, (err, str) => { + ejs.renderFile(path.join(config.viewsPath, 'directory.ejs'), { h: helpers, path, config, breadcrumbs, directory: vals.directory, paths: vals.paths, files: removeFilesForWhichAFolderDescribesThem(vals.files) }, (err, str) => { if (err) { console.error(err); reject(err); diff --git a/app/views/directory.ejs b/app/views/directory.ejs index 3c911eae..bdc26a2a 100644 --- a/app/views/directory.ejs +++ b/app/views/directory.ejs @@ -131,15 +131,17 @@ <% } %> - + <% if (files && files.length && !(files.length == 1 && files[0].title == '..')) { %> + + <% } %> <%- include('./includes/bottom-navbar.ejs') %> <%- include('./includes/bottom-scripts.ejs') %>