UNPKG

2.53 kBJavaScriptView Raw
1
2var http = require( "http" ),
3 path = require( "path" ),
4 color = require( "colors" ),
5 Q = require( "q" ),
6 fs = require( "fs" ),
7 socketIO = require( "socket.io" ),
8 monitorIO = require( 'monitor.io' ),
9 CoreModule = require( "./core/core" );
10
11var deferred = Q.defer(),
12 loadPromise = deferred.promise;
13
14
15// Main Class
16var Fast = function( options ){
17
18 console.log( '\n----------------------------'.yellow );
19 console.log( 'Preparing everything...'.yellow );
20
21 Core = CoreModule( path.join( __dirname, "core" ) );
22
23 CoreModule.load( options || {}, function(){
24
25 modulesLoader();
26
27 // Make Core object immutable
28 // Preventing malicious altering
29 CoreModule.lock();
30
31 deferred.resolve();
32 });
33
34 return {
35 listen : listen
36 };
37};
38
39var modulesLoader = function(){
40 var extraModules = Core.config.globals.extraModules;
41
42 Core.environment.load();
43 Core.db.load();
44 Core.config.load();
45 Core.auth.load();
46 Core.api.load();
47
48 if( fs.existsSync( Core.config.globals.viewRoot ) )
49 Core.view.load();
50
51 if( extraModules && !Core[ extraModules ] && fs.existsSync( extraModules ) ) {
52 Core.modules.load( extraModules );
53 Core[extraModules] = Core.modules.modules;
54 }
55
56 Core.subscribers = Core.api.subscribers;
57 Core.api = Core.api.services;
58 Core.db = Core.db.connections;
59
60};
61
62var listen = function( port, callback ){
63
64 var server,
65 io;
66
67 loadPromise.then( function(){
68
69 if( typeof port == "function" || !port || isNaN( port ) ) {
70 callback = port;
71 port = Core.config.globals.port;
72
73 } else
74 Core.config.globals.port = port;
75
76 if( !callback ){
77 callback = function(){
78 console.log( 'Success!'.green );
79 console.log( '\nFast is running on port '.cyan + port.toString().cyan );
80 console.log( '\nAPI root folder path is '.cyan + Core.config.globals.apiRoot.cyan );
81 console.log( '----------------------------\n'.yellow );
82 }
83 }
84
85 if( Core.config.globals.useSSL ){
86 if( Core.config.globals.SSLKeys && Core.config.globals.SSLKeys.key && Core.config.globals.SSLKeys.cert )
87 server = https.createServer( Core.config.globals.SSLKeys, Core.app );
88 else
89 Core.error( "SSL keys are missing", true );
90
91 } else {
92 server = http.createServer( Core.app );
93 }
94
95 if( server ){
96 if( Core.config.globals.enableWebSocket ){
97 io = socketIO( server );
98
99 io.use( monitorIO({ port : 8000 }));
100
101 Core.socket.listenForConnections( io, Core.subscribers );
102 }
103
104 server.listen( port, callback );
105 }
106 });
107};
108
109module.exports.createServer = Fast;
110module.exports.listen = listen;
\No newline at end of file