/*--- SETTINGS ---*/
import { port }              from './common-config';
/*--- IMPORTS ---*/
import express               from 'express';
import helmet                from 'helmet';
import cors                  from 'cors';
import morgan                from 'morgan';
/*--- EXPRESS-APP ---*/
const app: express.Application = express();
/*--- MODULES ---*/
import frameworkCommon       from './framework-common/index';
import frameworkViviendas    from './common-viviendas/index';
import frameworkApartamentos from './common-apartamentos/index';
import frameworkTerrenos     from './common-terrenos/index';
/*--- CONFIGURE-EXPRESS-APP ---*/
app.use( express.json( { limit: '2mb' } ) ); 				//--- RECEIVE JSON POSTS, CONFIGURE MAXIMUM REQUEST SIZE
app.use( express.urlencoded( { extended: true } ) );			//--- RECEIVE URL-ENCONDED POSTS
/*--- API-SECURITY-POLICIES ---*/
app.use( helmet() );
app.use( helmet.contentSecurityPolicy() );
app.use( helmet.hidePoweredBy() );
/*--- CONFIGURATION-FUNCTIONS ---*/
app.use( cors() );							//--- CORS FOR ALL REQUEST
app.use( morgan( 'combined' ) );		//--- LOGGING HTTP/HTTPS REQUESTS
/*--- END-POINTS ---*/
//--- @formatter:off
app.use( '/', frameworkCommon, 			express.json( { limit: '2mb' } ) );
app.use( '/', frameworkViviendas, 		express.json( { limit: '2mb' } ) );
app.use( '/', frameworkApartamentos, 	express.json( { limit: '2mb' } ) );
app.use( '/', frameworkTerrenos, 		express.json( { limit: '2mb' } ) );
//--- @formatter:on
/*--- SERVER-CONFIGURATION ---*/
app.listen( port, () => {
	console.log( `log::listening -> port ${ port }` );
} );
