@scefira/dfw-nodejs
Version:
106 lines • 4.04 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const DatabaseManager_1 = __importDefault(require("../modules/DatabaseManager"));
const SessionManager_1 = __importDefault(require("../modules/SessionManager"));
const APIManager_1 = __importDefault(require("../modules/APIManager"));
const SecurityManager_1 = __importDefault(require("../modules/SecurityManager"));
const lodash_1 = __importDefault(require("lodash"));
const cookieParser = require("cookie-parser");
class DFWInstance {
/**
* Initialices all dependencies and middlewares for DFW
*/
constructor(config) {
/**
* default DFW config
*/
this.config = {
databases: {
default: {
username: "root",
password: "",
database: "dfw",
host: "localhost",
dialect: "mysql",
logging: false
}
}
};
/**
*
*/
this.modules = {
"DatabaseManager": new DatabaseManager_1.default(),
"SessionManager": new SessionManager_1.default(),
"APIManager": new APIManager_1.default(),
"SecurityManager": new SecurityManager_1.default(),
};
this.config = lodash_1.default.merge({}, this.config, config); // combine config object
Object.keys(this.modules).forEach(key => {
if (this.modules[key].initialice(this)) {
console.log(`[DFW] Module ${key} initialiced`);
}
});
console.log("[DFW] Core loaded mode: " + process.env.NODE_ENV);
}
/**
* Initialices the express server
* @param port
* @param callback
*/
startServer(port = process.env.NODE_ENV !== 'production' ? parseInt(process.env.PORT || '3000', 10) : 80, callback) {
if (this.server === undefined) {
this.server = require("express")();
this.server.use(cookieParser());
let listener = this.server.listen(port, () => {
console.log("[DFW] Express server running on port " + listener.address().port);
if (callback != undefined && callback != null) {
callback();
}
});
}
return this.server;
}
/**
*
* @param req
* @param res
*/
touchAsync(req, res) {
return __awaiter(this, void 0, void 0, function* () {
let dfw = {
session: {
isLogged: false,
model: {}
},
request: req,
response: res,
};
var moduleKeys = Object.keys(this.modules);
for (var i = 0; i < moduleKeys.length; i++) {
yield this.modules[moduleKeys[i]].touchAsync(dfw);
}
return dfw;
});
}
/**
*
* @param name
*/
getDatabase(name = "default") {
return this.modules.DatabaseManager.getDatabase(name);
}
}
exports.default = DFWInstance;
//# sourceMappingURL=DFWInstance.js.map