From 77ac53d6962b2f949bdf7cfbe170e86271e440ce Mon Sep 17 00:00:00 2001 From: sahachide Date: Mon, 19 Oct 2020 14:14:39 +0200 Subject: [PATCH] feat: change fs.fs.readDirContentRecursive to fs.readDir and allow non recursive search --- src/controller/ControllerLoader.ts | 2 +- src/database/EntityLoader.ts | 2 +- src/filesystem/FS.ts | 21 +++++++++++++++++---- src/service/ServiceLoader.ts | 4 +--- src/template/TemplateEngineLoader.ts | 8 ++++---- test/filesystem/fs.test.ts | 4 ++-- 6 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/controller/ControllerLoader.ts b/src/controller/ControllerLoader.ts index cd72823..18d77dd 100644 --- a/src/controller/ControllerLoader.ts +++ b/src/controller/ControllerLoader.ts @@ -10,7 +10,7 @@ export class ControllerLoader extends AbstractZenFileLoader { public async load(): Promise { const controllers = new Map() as Controllers const filePaths = ( - await fs.readDirContentRecursive(fs.resolveZenPath('controller')) + await fs.readDir(fs.resolveZenPath('controller')) ).filter((filePath: string) => filePath.toLowerCase().endsWith(fs.resolveZenFileExtension('controller')), ) diff --git a/src/database/EntityLoader.ts b/src/database/EntityLoader.ts index e73bc4f..cc4856c 100644 --- a/src/database/EntityLoader.ts +++ b/src/database/EntityLoader.ts @@ -6,7 +6,7 @@ import { log } from '../log/logger' export class EntityLoader extends AbstractZenFileLoader { public async load(): Promise { const entities = new Map() as Entities - const filePaths = await fs.readDirContentRecursive(fs.resolveZenPath('entity')) + const filePaths = await fs.readDir(fs.resolveZenPath('entity'), false) for (const filePath of filePaths) { const { key, module } = await this.loadModule(filePath) diff --git a/src/filesystem/FS.ts b/src/filesystem/FS.ts index fb8e685..1aa60f4 100644 --- a/src/filesystem/FS.ts +++ b/src/filesystem/FS.ts @@ -1,6 +1,7 @@ +import { join, resolve } from 'path' + import { path as appDir } from 'app-root-path' import { config } from '../config/config' -import { join } from 'path' import { log } from '../log/logger' import { promises } from 'fs' import { readDirRecursive } from './readDirRecursiveGenerator' @@ -28,11 +29,23 @@ export abstract class fs { return success } - public static async readDirContentRecursive(dir: string = appDir): Promise { + public static async readDir(dir: string, recursive: boolean = true): Promise { const files = [] - for await (const file of readDirRecursive(dir)) { - files.push(file) + if (recursive) { + for await (const file of readDirRecursive(dir)) { + files.push(file) + } + } else { + const dirContent = await promises.readdir(dir, { + withFileTypes: true, + }) + + for (const content of dirContent) { + if (content.isFile()) { + files.push(resolve(dir, content.name)) + } + } } return files diff --git a/src/service/ServiceLoader.ts b/src/service/ServiceLoader.ts index 552a74b..bb36ed5 100644 --- a/src/service/ServiceLoader.ts +++ b/src/service/ServiceLoader.ts @@ -10,9 +10,7 @@ export class ServiceLoader extends AbstractZenFileLoader { return services } - const filePaths = ( - await fs.readDirContentRecursive(fs.resolveZenPath('service')) - ).filter((filePath: string) => + const filePaths = (await fs.readDir(fs.resolveZenPath('service'))).filter((filePath: string) => filePath.toLowerCase().endsWith(fs.resolveZenFileExtension('service')), ) diff --git a/src/template/TemplateEngineLoader.ts b/src/template/TemplateEngineLoader.ts index f70947a..644041f 100644 --- a/src/template/TemplateEngineLoader.ts +++ b/src/template/TemplateEngineLoader.ts @@ -20,9 +20,9 @@ export class TemplateEngineLoader extends AbstractZenFileLoader { } } protected async loadFiles(): Promise { - return ( - await fs.readDirContentRecursive(fs.resolveZenPath('view')) - ).filter((filePath: string) => filePath.endsWith(`.${config.template.extension}`)) + return (await fs.readDir(fs.resolveZenPath('view'))).filter((filePath: string) => + filePath.endsWith(`.${config.template.extension}`), + ) } protected async loadFilters(): Promise { const filters = new Map() as TemplateFiltersMap @@ -32,7 +32,7 @@ export class TemplateEngineLoader extends AbstractZenFileLoader { return filters } - const filePaths = (await fs.readDirContentRecursive(dir)).filter((filePath: string) => + const filePaths = (await fs.readDir(dir)).filter((filePath: string) => filePath.endsWith(fs.resolveZenFileExtension()), ) diff --git a/test/filesystem/fs.test.ts b/test/filesystem/fs.test.ts index 4b0617c..bf235d7 100644 --- a/test/filesystem/fs.test.ts +++ b/test/filesystem/fs.test.ts @@ -1,6 +1,6 @@ +import { fs } from '../../src/filesystem/FS' import { getFixtureDir } from '../helper/getFixtureDir' import { join } from 'path' -import { fs } from '../../src/filesystem/FS' describe('FS', () => { it("checks that a file exists or doesn't extist", async () => { @@ -13,7 +13,7 @@ describe('FS', () => { it('read the directory content recursively', async () => { const testDir = getFixtureDir('testapp') - const content = await fs.readDirContentRecursive(testDir) + const content = await fs.readDir(testDir) const normalizedContent = content.map((filePath) => filePath.replace(testDir, '')) expect(normalizedContent).toContain('/src/controller/ResponseController.ts')