UNPKG

2.86 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var PlatformTools_1 = require("../platform/PlatformTools");
4var index_1 = require("../index");
5/**
6 * Loads all exported classes from the given directory.
7 */
8function importClassesFromDirectories(logger, directories, formats) {
9 if (formats === void 0) { formats = [".js", ".ts"]; }
10 var logLevel = "info";
11 var classesNotFoundMessage = "No classes were found using the provided glob pattern: ";
12 var classesFoundMessage = "All classes found using provided glob pattern";
13 function loadFileClasses(exported, allLoaded) {
14 if (typeof exported === "function" || exported instanceof index_1.EntitySchema) {
15 allLoaded.push(exported);
16 }
17 else if (Array.isArray(exported)) {
18 exported.forEach(function (i) { return loadFileClasses(i, allLoaded); });
19 }
20 else if (typeof exported === "object" && exported !== null) {
21 Object.keys(exported).forEach(function (key) { return loadFileClasses(exported[key], allLoaded); });
22 }
23 return allLoaded;
24 }
25 var allFiles = directories.reduce(function (allDirs, dir) {
26 return allDirs.concat(PlatformTools_1.PlatformTools.load("glob").sync(PlatformTools_1.PlatformTools.pathNormalize(dir)));
27 }, []);
28 if (directories.length > 0 && allFiles.length === 0) {
29 logger.log(logLevel, classesNotFoundMessage + " \"" + directories + "\"");
30 }
31 else if (allFiles.length > 0) {
32 logger.log(logLevel, classesFoundMessage + " \"" + directories + "\" : \"" + allFiles + "\"");
33 }
34 var dirs = allFiles
35 .filter(function (file) {
36 var dtsExtension = file.substring(file.length - 5, file.length);
37 return formats.indexOf(PlatformTools_1.PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== ".d.ts";
38 })
39 .map(function (file) { return PlatformTools_1.PlatformTools.load(PlatformTools_1.PlatformTools.pathResolve(file)); });
40 return loadFileClasses(dirs, []);
41}
42exports.importClassesFromDirectories = importClassesFromDirectories;
43/**
44 * Loads all json files from the given directory.
45 */
46function importJsonsFromDirectories(directories, format) {
47 if (format === void 0) { format = ".json"; }
48 var allFiles = directories.reduce(function (allDirs, dir) {
49 return allDirs.concat(PlatformTools_1.PlatformTools.load("glob").sync(PlatformTools_1.PlatformTools.pathNormalize(dir)));
50 }, []);
51 return allFiles
52 .filter(function (file) { return PlatformTools_1.PlatformTools.pathExtname(file) === format; })
53 .map(function (file) { return PlatformTools_1.PlatformTools.load(PlatformTools_1.PlatformTools.pathResolve(file)); });
54}
55exports.importJsonsFromDirectories = importJsonsFromDirectories;
56
57//# sourceMappingURL=DirectoryExportedClassesLoader.js.map