| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | // this ensures node understands the future
 | 
					
						
							| 
									
										
										
										
											2019-02-04 11:42:31 +00:00
										 |  |  | require('@babel/register'); | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | const _ = require('lodash'); | 
					
						
							| 
									
										
										
										
											2018-01-06 11:24:08 -08:00
										 |  |  | const createDebugger = require('debug'); | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-06 11:24:08 -08:00
										 |  |  | const log = createDebugger('fcc:server:production-start'); | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | const startTime = Date.now(); | 
					
						
							| 
									
										
										
										
											2018-01-06 11:24:08 -08:00
										 |  |  | // force logger to always output
 | 
					
						
							|  |  |  | // this may be brittle
 | 
					
						
							|  |  |  | log.enabled = true; | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | // this is where server starts booting up
 | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | const app = require('./server'); | 
					
						
							| 
									
										
										
										
											2016-06-23 20:05:30 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | let timeoutHandler; | 
					
						
							|  |  |  | let killTime = 15; | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | const onConnect = _.once(() => { | 
					
						
							| 
									
										
										
										
											2018-01-06 11:24:08 -08:00
										 |  |  |   log('db connected in: %s', Date.now() - startTime); | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  |   if (timeoutHandler) { | 
					
						
							|  |  |  |     clearTimeout(timeoutHandler); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   app.start(); | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | timeoutHandler = setTimeout(() => { | 
					
						
							|  |  |  |   const message = `db did not connect after ${killTime}s -- crashing hard`; | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  |   // purposely shutdown server
 | 
					
						
							|  |  |  |   // pm2 should restart this in production
 | 
					
						
							|  |  |  |   throw new Error(message); | 
					
						
							| 
									
										
										
										
											2018-01-06 11:12:46 -08:00
										 |  |  | }, killTime * 1000); | 
					
						
							| 
									
										
										
										
											2015-07-24 22:22:40 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | app.dataSources.db.on('connected', onConnect); |