1 | import * as fastGlob from "fast-glob";
|
2 | import { readFile } from "fs";
|
3 | import { promisify } from "util";
|
4 | const readFileAsync = promisify(readFile);
|
5 |
|
6 | export abstract class AHelper {
|
7 | public static async loadFilesByGlobPattern(pattern: string): Promise<string[]> {
|
8 | try {
|
9 | const filePaths: string[] = fastGlob.sync<string>(pattern, { deep: false, onlyFiles: true });
|
10 |
|
11 | const readFilesPromises: Array<Promise<string>> = [];
|
12 | filePaths.map((filePath) => {
|
13 | readFilesPromises.push(readFileAsync(filePath, "utf8"));
|
14 | });
|
15 |
|
16 | return await Promise.all(readFilesPromises);
|
17 | } catch (err) {
|
18 | throw err;
|
19 | }
|
20 | }
|
21 |
|
22 | public static async requireFilesByGlobPattern(pattern: string): Promise<any[]> {
|
23 | try {
|
24 | const filePaths: string[] = await fastGlob.sync<string>(pattern, { deep: false, onlyFiles: true });
|
25 |
|
26 | const requiredFiles = [];
|
27 | filePaths.map((filePath) => {
|
28 | let requiredFileContent: any = null;
|
29 | try {
|
30 | const requiredFile = require(filePath);
|
31 | requiredFileContent = requiredFile.default != null ? requiredFile.default : requiredFile;
|
32 | } catch (err) {
|
33 | throw err;
|
34 | }
|
35 |
|
36 | requiredFiles.push(requiredFileContent);
|
37 | });
|
38 |
|
39 | return requiredFiles;
|
40 | } catch (err) {
|
41 | throw err;
|
42 | }
|
43 | }
|
44 |
|
45 | public static async requireFilesByGlobPatternAsObject<T>(pattern: string): Promise<{ [name: string]: T }> {
|
46 | try {
|
47 | const filePaths: string[] = await fastGlob.sync<string>(pattern, { deep: false, onlyFiles: true });
|
48 |
|
49 | const requiredFiles: { [name: string]: T } = {};
|
50 | filePaths.map((filePath) => {
|
51 | let requiredFileContent: T = null;
|
52 | try {
|
53 | const requiredFile = require(filePath);
|
54 | const filename: string = filePath
|
55 | .split("/")
|
56 | .pop()
|
57 | .split(".ts")[0];
|
58 | requiredFileContent = requiredFile.default != null ? requiredFile.default : requiredFile;
|
59 |
|
60 | requiredFiles[filename] = requiredFileContent;
|
61 | } catch (err) {
|
62 | throw err;
|
63 | }
|
64 | });
|
65 |
|
66 | return requiredFiles;
|
67 | } catch (err) {
|
68 | throw err;
|
69 | }
|
70 | }
|
71 | }
|