UNPKG

2.16 kBPlain TextView Raw
1import * as fastGlob from "fast-glob";
2import { readFile } from "fs";
3import { promisify } from "util";
4const readFileAsync = promisify(readFile);
5
6export 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}