tit
Version:
A simple api framework by use TypeScript & Node.js
55 lines • 2.01 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMainDir = getMainDir;
exports.getSourceRoot = getSourceRoot;
exports.walkDirectory = walkDirectory;
exports.newModule = newModule;
const path_1 = __importDefault(require("path"));
const process_1 = __importDefault(require("process"));
const fs_1 = __importDefault(require("fs"));
const app_root_path_1 = __importDefault(require("app-root-path"));
function getMainDir() {
const mainModule = require.main || process_1.default.mainModule;
if (!mainModule)
throw "Can't find main module";
return path_1.default.dirname(mainModule.filename);
}
function getSourceRoot() {
return app_root_path_1.default.path;
}
function walkDirectory(dir) {
let results = [];
const list = fs_1.default.readdirSync(dir);
list.forEach(function (file) {
file = dir + '/' + file;
const stat = fs_1.default.statSync(file);
if (stat && stat.isDirectory()) {
results = results.concat(walkDirectory(file));
}
else {
results.push(file);
}
});
return results;
}
function newModule(filepath, app) {
const mod = module.require(filepath);
if (mod.__esModule) {
let modConstructor = mod.default;
if (!modConstructor) {
const name = Object.getOwnPropertyNames(mod).find((n) => (/controller$/ig.test(n)));
if (!name) {
throw new Error(`Can't load controller file [${filepath}]. Not found module constructor. Please check module has default export or Controller class like 'IndexController'`);
}
modConstructor = mod[name];
}
return new modConstructor(app);
}
if (mod.constructor)
return new mod(app);
throw Error(`Invalid Module: ${filepath}`);
}
//# sourceMappingURL=util.js.map