(directory: string)
| 3 | |
| 4 | class FileResolver { |
| 5 | async resolve<T>(directory: string): Promise<Record<string, T>> { |
| 6 | const results: Record<string, T> = {}; |
| 7 | |
| 8 | if (!fs.existsSync(directory)) { |
| 9 | return results; |
| 10 | } |
| 11 | |
| 12 | const files = (await fs.readdirSync(directory, { withFileTypes: true })) |
| 13 | .filter((item) => !item.isDirectory()) |
| 14 | .filter( |
| 15 | (filename) => |
| 16 | filename.name.includes(".ts") || filename.name.includes(".js"), |
| 17 | ) |
| 18 | .map((item) => item.name); |
| 19 | for (const file of files) { |
| 20 | const configFile = path.join(directory, file); |
| 21 | const { default: content } = await import(configFile); |
| 22 | const key = file.replace(".ts", "").replace(".js", ""); |
| 23 | if (content?.prototype) { |
| 24 | results[key] = new content(); |
| 25 | } else { |
| 26 | results[key] = content as T; |
| 27 | } |
| 28 | } |
| 29 | return results; |
| 30 | } |
| 31 | |
| 32 | async resolveContent(directory: string): Promise<Record<string, any>> { |
| 33 | const results: Record<string, any> = {}; |
no outgoing calls