UNPKG

1.43 kBJavaScriptView Raw
1import Router from './Router';
2import Response from './Response';
3import Controller from './Controller';
4
5import http from 'http';
6import logger from './logger';
7
8export {
9 Router,
10 Response,
11 Controller as BaseController,
12};
13
14class App {
15
16 config;
17 port = 6060;
18 prefix = '';
19 base;
20 portMessage = true;
21 guardian;
22
23 run() {
24 let controllers;
25 let base = this.base = `${process.cwd()}/${this.prefix}`;
26
27 controllers = `${base}/controllers`;
28
29 try {
30 require(`${base}/routes/index.js`);
31 } catch(e) {
32 throw new Error(`cannot find ${base}/routes, or routes contains fatal error`);
33 }
34
35 try {
36 this.config = require(`${base}/config`);
37 if (this.config) this.port = this.config.port;
38 } catch(e) {
39 console.warn('Config file not found. If you want to use light-ning preferences, create config beside file where are you use "app.run()".')
40 }
41
42 Router.setControllersPath(controllers);
43 Router.setGuardian(this.guardian);
44
45 if (this.portMessage) {
46 this.portMessage = false;
47 console.info(``);
48 console.info(`PORT: ${this.port}`);
49 console.info(``);
50 }
51
52 return http.createServer((req, res) => {
53 logger(req, res);
54
55 Router.route(req, res);
56 }).listen(this.port);
57 }
58
59 set(key, val) {
60 this[key] = val;
61 }
62
63 get(key) {
64 if (this[key]) return this[key];
65 else return undefined;
66 }
67
68}
69
70export default new App();