UNPKG

linagora.esn.group

Version:
92 lines (72 loc) 3.44 kB
'use strict'; const AwesomeModule = require('awesome-module'); const Dependency = AwesomeModule.AwesomeModuleDependency; const path = require('path'); const glob = require('glob-all'); const FRONTEND_JS_PATH = __dirname + '/frontend/app/'; const MODULE_NAME = 'group'; const AWESOME_MODULE_NAME = 'linagora.esn.' + MODULE_NAME; const myAwesomeModule = new AwesomeModule(AWESOME_MODULE_NAME, { dependencies: [ new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.logger', 'logger'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.webserver.wrapper', 'webserver-wrapper'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.availability', 'availability'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.db', 'db'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.collaboration', 'collaboration'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.user', 'user'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.domain', 'domain'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.tuple', 'tuple'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.i18n', 'i18n'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.pubsub', 'pubsub'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.elasticsearch', 'elasticsearch'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.people', 'people'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.models', 'core-models'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.webserver.middleware.authorization', 'authorizationMW'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.webserver.middleware.helper', 'helperMW'), new Dependency(Dependency.TYPE_NAME, 'linagora.esn.core.webserver.middleware.domain', 'domainMW') ], states: { lib: function(dependencies, callback) { const moduleLib = require('./backend/lib')(dependencies); const module = require('./backend/webserver/api')(dependencies, moduleLib); const lib = { api: { module: module }, lib: moduleLib }; return callback(null, lib); }, deploy: function(dependencies, callback) { const webserverWrapper = dependencies('webserver-wrapper'); // Register the webapp const app = require('./backend/webserver/application')(dependencies, this); // Register every exposed endpoints app.use('/api', this.api.module); // Register every exposed frontend scripts const frontendJsFilesFullPath = glob.sync([ FRONTEND_JS_PATH + '**/*.module.js', FRONTEND_JS_PATH + '**/!(*spec).js' ]); const frontendJsFilesUri = frontendJsFilesFullPath.map(function(filepath) { return filepath.replace(FRONTEND_JS_PATH, ''); }); webserverWrapper.injectAngularAppModules(MODULE_NAME, frontendJsFilesUri, AWESOME_MODULE_NAME, ['esn'], { localJsFiles: frontendJsFilesFullPath }); const lessFile = path.join(FRONTEND_JS_PATH, 'app.less'); webserverWrapper.injectLess(MODULE_NAME, [lessFile], 'esn'); webserverWrapper.addApp(MODULE_NAME, app); return callback(); }, start: function(dependencies, callback) { this.lib.init(); callback(); } } }); /** * The main AwesomeModule describing the application. * @type {AwesomeModule} */ module.exports = myAwesomeModule;