-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
88 lines (81 loc) · 2.33 KB
/
index.js
File metadata and controls
88 lines (81 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
'use strict';
const Hapi = require('hapi');
const server = new Hapi.Server({
connections: {
routes: {
cors: true
}
}
});
const config = require('config');
const glob = require('glob');
const _ = require('lodash');
const data = require('./config/demo-data.js');
const Promise = require('bluebird');
server.connection({port:config.get('server.port')});
/**
* Generate a plugin array, including all route plugins under lib/app_routes
* @return {array}
*/
function setPlugins() {
const plugins = [
{
register: require('./lib/plugins/hapi-pouch.js'),
options: _.merge(
config.get('pouchdb.users'),
{ namespace: 'userDb' }
)
},
{
register: require('./lib/plugins/hapi-pouch.js'),
options: _.merge(
config.get('pouchdb.consortia'),
{ namespace: 'consortiaDb' }
)
},
{
register: require('./lib/plugins/response-formatter.js')
},
{ register: require('inject-then') }
];
// add route plugins
var newRoute;
glob.sync('./lib/app_routes/*.js').forEach (function (file) {
newRoute = {
register: require(file),
options: {}
};
plugins.push(newRoute);
});
return plugins;
}
/**
* Add promise to be fulfilled when the plugins have loaded
* This is primarily for use by the tests
*/
server.app.pluginsLoaded = new Promise((res, rej) => {
server.app.resolvePluginsLoaded = res;
server.app.rejectPluginsLoaded = rej;
});
server.register(setPlugins(), function(err) {
if (err) {
console.log('Error registering plugins', err);
server.app.rejectPluginsLoaded(err);
} else {
server.app.resolvePluginsLoaded();
console.log('plugins registered');
if (!module.parent) {
// We are not being required from another script. This is not a test
// load demo data
Promise.all(data.loadDemoData(server.plugins.pouch))
.then(() => {
server.start(() => {
console.log('Server running at:', server.info.uri);
});
}).catch((err) => {
console.dir(err);
});
}
}
});
module.exports = server;