UNPKG

gypsum

Version:

Simple and easy lightweight typescript server side framework on Node.js.

93 lines 3.51 kB
"use strict"; 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