tribe
Version:
Tribe is a platform for building rich, powerful, highly scalable distributed HTML5 web and mobile systems.
54 lines (45 loc) • 1.84 kB
JavaScript
require('tribe/driveLetterHack');
var log = require('tribe.logger'),
Q = require('q'),
_ = require('underscore');
// this is less than ideal. It allows code running on the server side like facets to use observables without requiring knockout, like in the browser
ko = require('knockout');
require('tribe.rx');
module.exports = {
// server
start: function (options) {
options = require('tribe/options').apply(options);
if (options.debug)
require('tribe/process/inspector').start(options.inspectorPort);
Q.all(_.map(options.builds, function (build) {
return require('tribe/build')
.configure(build)
.watch()
.execute();
}))
.then(function () {
// this is deprecated - facets no longer specify their own scope.
var indexes = require('tribe/facets').indexes(options.scopes).concat(['topic']);
// currently, we need to specify indexes manually, but this will become dynamic
return require('tribe/storage')
.initialise([
{ name: 'messages', indexes: indexes, keyPath: 'seq', autoIncrement: true },
//{ name: 'users', indexes: ['username'] }
], options.storage);
})
.then(function () {
require('tribe/test').initialise(true);
require('tribe/server')
.configure(options.server)
.start();
})
.fail(function (err) {
log.error('Failed to start server', err);
process.exit(1);
});
},
// common
register: require('tribe/register'),
pubsub: require('tribe.pubsub'),
options: require('tribe/options')
};