gypsum
Version:
Simple and easy lightweight typescript server side framework on Node.js.
93 lines • 3.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const cluster = require("cluster");
const logger_1 = require("./misc/logger");
const state_1 = require("./state");
const hooks_1 = require("./hooks");
state_1.State.hooks.push(...hooks_1.hooks);
const mongo_1 = require("./database/mongo");
const express_1 = require("./servers/express");
const io_1 = require("./servers/io");
const http_1 = require("./servers/http");
const workers_1 = require("./workers");
const emitter_1 = require("./emitter");
let logger;
function useHooks(hooks) {
for (let i = 0; i < hooks.length; i++)
if (hooks[i] && hooks[i].name)
state_1.State.hooks.push(hooks[i]);
}
exports.Gypsum = {
root: state_1.State.root,
env: state_1.State.env,
dev: state_1.State.env !== 'production',
get(name) {
return state_1.State.config[name];
},
set(name, value) {
state_1.State.config[name] = value;
return this;
},
getCurrentContext() {
return state_1.State.currentContext;
},
getModel(path) {
return state_1.State.getModel(path);
},
config(options) {
logger_1.Logger.Info('Configuring Gypsum..');
state_1.State.setConfiguration(options.config ? options.config : {});
if (state_1.State.config.processes !== 1 && cluster.isMaster) {
workers_1.initializeWorkers(state_1.State.config.processes);
return;
}
logger_1.Logger.Info('Configuring Auth App..');
state_1.State.setAuthConfig(options.auth);
logger_1.Logger.Info('Configuring Storage App..');
state_1.State.setStorageConfig(options.storage);
return this;
},
bootstrap(options) {
logger_1.Logger.SetOptions(state_1.State.config.logger_options, state_1.State.config.logger_out_dir);
logger = new logger_1.Logger('gypsum');
if (options.hooks) {
logger.info('using hooks..');
useHooks(options.hooks);
}
if (options.middlewares) {
logger.info('using middlwares..');
state_1.State.middlewares = options.middlewares;
}
logger.info('intializing root app');
require('./root');
logger.info('intializing auth app');
require('./auth').initAuth(options.users || null);
logger.info('intializing storage app');
require('./storage').initStorage(options.storage || null);
logger.info('initializing the rest of apps');
if (options.apps)
for (let i = 0; i < options.apps.length; i++) {
let app = new options.apps[i]();
state_1.State.apps.push(app);
}
emitter_1.gypsumEmitter.emit('initialize apps');
logger.info('initializing mongodb...');
try {
mongo_1.initMongo()
.then(db => {
const server = new http_1.Server();
logger.info('initializeing express...');
express_1.initExpress(server.app);
logger.info('initializeing socket...');
io_1.initSocket(server.io);
logger.info('running server...');
server.start();
})
.catch(error => logger.error(error));
}
catch (error) {
logger.error(error);
}
}
};
//# sourceMappingURL=main.js.map