light-ning
Version:
(ALPHA) framework without dependecies...
72 lines (55 loc) • 1.49 kB
JavaScript
import Router from './Router';
import Response from './Response';
import Controller from './Controller';
import http from 'http';
import logger from './logger';
export {
Router,
Response,
Controller as BaseController,
};
class App {
config;
port = 6060;
prefix = '';
base;
portMessage = true;
guardian;
run() {
let controllers;
let base = this.base = `${process.cwd()}/${this.prefix}`;
controllers = `${base}/controllers`;
try {
require(`${base}/routes/index.js`);
} catch(e) {
throw new Error(`cannot find ${base}/routes, or routes contains fatal error`);
}
try {
this.config = require(`${base}/config`);
if (this.config) this.port = this.config.port;
} catch(e) {
console.warn('Config file not found. If you want to use light-ning preferences, create config beside file where are you use "app.run()".')
}
Router.setControllersPath(controllers);
Router.setGuardian(this.guardian);
if (this.portMessage) {
this.portMessage = false;
console.info(``);
console.info(`PORT: ${this.port}`);
console.info(``);
}
return http.createServer((req, res) => {
logger(req, res);
res.setHeader('Content-Type', 'application/json');
Router.route(req, res);
}).listen(this.port);
}
set(key, val) {
this[key] = val;
}
get(key) {
if (this[key]) return this[key];
else return undefined;
}
}
export default new App();