nodef-app
Version:
Easily create and access your node scripts and projects via URL Endpoints.
83 lines (55 loc) • 1.42 kB
JavaScript
;
import path from 'path';
import config from '../config';
import response from '../utils/Response';
const parent = ( type, payload ) => {
process.send({ type, payload });
}
const exitProcess = ( code = 0 ) => {
process.exit( code );
}
const context = {
serverResponse: ( data ) => {
parent( 'serverResponse', data );
},
success: ( data = null ) => {
parent( 'context_success', data );
exitProcess();
},
done: ( error, success ) => {
parent( 'context_done', { error, success } );
exitProcess();
},
fail: ( data=null ) => {
parent( 'context_fail', data );
exitProcess();
},
timeout: () => {
parent( 'context_timeout' );
exitProcess();
}
};
// when we receie event from the parent process, start processing...
process.on( 'message', function(data) {
execute(data);
});
function execute( event ) {
const resource_path = path.resolve( config.resource_path, event.name );
let resource = require( resource_path );
try {
resource[config.exports_handler]( event, context, context.serverResponse );
}
catch( e ) {
try {
resource[event.handler]( event, context, context.serverResponse );
}
catch(e) {
context.fail( response.resource_handler_error );
}
}
}
if( config.timeout > 0 ) {
setTimeout(function () {
context.timeout();
}, config.timeout );
}