| 
									
										
										
										
											2014-12-22 16:16:10 -08:00
										 |  |  | require('dotenv').load(); | 
					
						
							| 
									
										
										
										
											2015-06-18 16:19:24 -07:00
										 |  |  | var pmx = require('pmx'); | 
					
						
							| 
									
										
										
										
											2016-06-23 20:05:30 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-18 16:19:24 -07:00
										 |  |  | pmx.init(); | 
					
						
							| 
									
										
										
										
											2014-01-11 22:53:31 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-14 23:48:48 -07:00
										 |  |  | var _ = require('lodash'), | 
					
						
							| 
									
										
										
										
											2016-03-14 17:22:56 -07:00
										 |  |  |     Rx = require('rx'), | 
					
						
							| 
									
										
										
										
											2015-08-06 00:19:03 -07:00
										 |  |  |     loopback = require('loopback'), | 
					
						
							|  |  |  |     boot = require('loopback-boot'), | 
					
						
							|  |  |  |     expressState = require('express-state'), | 
					
						
							|  |  |  |     path = require('path'), | 
					
						
							| 
									
										
										
										
											2016-02-11 22:33:54 -08:00
										 |  |  |     setupPassport = require('./component-passport'); | 
					
						
							| 
									
										
										
										
											2013-11-26 23:15:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-20 21:43:36 -07:00
										 |  |  | // polyfill for webpack bundle splitting
 | 
					
						
							|  |  |  | const requireProto = Object.getPrototypeOf(require); | 
					
						
							|  |  |  | if (!requireProto.hasOwnProperty('ensure')) { | 
					
						
							|  |  |  |   Object.defineProperties( | 
					
						
							|  |  |  |     requireProto, | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-05-31 15:26:24 -07:00
										 |  |  |       ensure: { | 
					
						
							| 
									
										
										
										
											2016-03-20 21:43:36 -07:00
										 |  |  |         value: function ensure(modules, callback) { | 
					
						
							|  |  |  |           callback(this); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         writable: false, | 
					
						
							|  |  |  |         enumarble: false | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-03-14 17:22:56 -07:00
										 |  |  | Rx.config.longStackSupport = process.env.NODE_DEBUG !== 'production'; | 
					
						
							| 
									
										
										
										
											2015-06-02 17:27:02 -07:00
										 |  |  | var app = loopback(); | 
					
						
							| 
									
										
										
										
											2016-02-11 22:33:54 -08:00
										 |  |  | var isBeta = !!process.env.BETA; | 
					
						
							| 
									
										
										
										
											2015-07-13 18:47:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-29 09:55:39 -07:00
										 |  |  | expressState.extend(app); | 
					
						
							| 
									
										
										
										
											2015-07-13 18:47:19 -07:00
										 |  |  | app.set('state namespace', '__fcc__'); | 
					
						
							| 
									
										
										
										
											2014-01-11 22:53:31 -05:00
										 |  |  | app.set('port', process.env.PORT || 3000); | 
					
						
							|  |  |  | app.set('views', path.join(__dirname, 'views')); | 
					
						
							|  |  |  | app.set('view engine', 'jade'); | 
					
						
							| 
									
										
										
										
											2015-08-16 09:54:34 -07:00
										 |  |  | app.use(loopback.token()); | 
					
						
							| 
									
										
										
										
											2015-08-04 13:28:41 +01:00
										 |  |  | app.disable('x-powered-by'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-04 10:52:12 -07:00
										 |  |  | boot(app, { | 
					
						
							|  |  |  |   appRootDir: __dirname, | 
					
						
							|  |  |  |   dev: process.env.NODE_ENV | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-11 22:33:54 -08:00
										 |  |  | setupPassport(app); | 
					
						
							| 
									
										
										
										
											2015-06-04 10:52:12 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-14 23:48:48 -07:00
										 |  |  | app.start = _.once(function() { | 
					
						
							| 
									
										
										
										
											2015-06-21 18:10:17 -07:00
										 |  |  |   app.listen(app.get('port'), function() { | 
					
						
							| 
									
										
										
										
											2015-07-01 14:35:15 -07:00
										 |  |  |     app.emit('started'); | 
					
						
							| 
									
										
										
										
											2015-06-21 18:10:17 -07:00
										 |  |  |     console.log( | 
					
						
							| 
									
										
										
										
											2015-10-06 22:37:08 -07:00
										 |  |  |       'FreeCodeCamp server listening on port %d in %s', | 
					
						
							| 
									
										
										
										
											2015-06-21 18:10:17 -07:00
										 |  |  |       app.get('port'), | 
					
						
							|  |  |  |       app.get('env') | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2015-10-06 22:37:08 -07:00
										 |  |  |     if (isBeta) { | 
					
						
							|  |  |  |       console.log('Free Code Camp is in beta mode'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-06-21 18:10:17 -07:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2015-10-14 23:48:48 -07:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2015-06-21 18:37:29 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | module.exports = app; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-21 18:37:29 -07:00
										 |  |  | // start the server if `$ node server.js`
 | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | // in production use `$npm start-production`
 | 
					
						
							|  |  |  | // or `$node server/production` to start the server
 | 
					
						
							|  |  |  | // and wait for DB handshake
 | 
					
						
							| 
									
										
										
										
											2015-06-21 18:37:29 -07:00
										 |  |  | if (require.main === module) { | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  |   app.start(); | 
					
						
							| 
									
										
										
										
											2015-06-21 18:10:17 -07:00
										 |  |  | } |