summary refs log tree commit diff
path: root/src/Util.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/Util.ts')
-rw-r--r--src/Util.ts38
1 files changed, 0 insertions, 38 deletions
diff --git a/src/Util.ts b/src/Util.ts
deleted file mode 100644

index 291372c1..00000000 --- a/src/Util.ts +++ /dev/null
@@ -1,38 +0,0 @@ -import fs from "fs/promises"; -import "missing-native-js-functions"; - -export interface traverseDirectoryOptions { - dirname: string; - filter?: RegExp; - excludeDirs?: RegExp; - recursive?: boolean; -} - -const DEFAULT_EXCLUDE_DIR = /^\./; -const DEFAULT_FILTER = /^([^\.].*)\.js$/; - -export async function traverseDirectory<T>( - options: traverseDirectoryOptions, - action: (path: string) => T -): Promise<T[]> { - if (!options.filter) options.filter = DEFAULT_FILTER; - if (!options.excludeDirs) options.excludeDirs = DEFAULT_EXCLUDE_DIR; - - const routes = await fs.readdir(options.dirname); - const promises = <Promise<T | T[] | undefined>[]>routes.map(async (file) => { - const path = options.dirname + file; - const stat = await fs.lstat(path); - if (path.match(<RegExp>options.excludeDirs)) return; - - if (stat.isFile() && path.match(<RegExp>options.filter)) { - return action(path); - } else if (options.recursive && stat.isDirectory()) { - return traverseDirectory({ ...options, dirname: path + "/" }, action); - } - }); - const result = await Promise.all(promises); - - const t = <(T | undefined)[]>result.flat(); - - return <T[]>t.filter((x) => x != undefined); -}