socketio-class-controllers
Version:
Use class-based controllers to handle websocket events
37 lines (35 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var path = require("path");
/**
* Loads all exported classes from the given directory.
*/
function importClassesFromDirectories(directories, formats) {
if (formats === void 0) { formats = [".js", ".ts"]; }
var loadFileClasses = function (exported, allLoaded) {
if (exported instanceof Function) {
allLoaded.push(exported);
}
else if (exported instanceof Object) {
Object.keys(exported).forEach(function (key) { return loadFileClasses(exported[key], allLoaded); });
}
else if (exported instanceof Array) {
exported.forEach(function (i) { return loadFileClasses(i, allLoaded); });
}
return allLoaded;
};
var allFiles = directories.reduce(function (allDirs, dir) {
return allDirs.concat(require("glob").sync(path.normalize(dir)));
}, []);
var dirs = allFiles
.filter(function (file) {
var dtsExtension = file.substring(file.length - 5, file.length);
return formats.indexOf(path.extname(file)) !== -1 && dtsExtension !== ".d.ts";
})
.map(function (file) {
return require(file);
});
return loadFileClasses(dirs, []);
}
exports.importClassesFromDirectories = importClassesFromDirectories;
//# sourceMappingURL=DirectoryExportedClassesLoader.js.map