This repository has been archived by the owner on Oct 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathmanifest.js
112 lines (97 loc) · 2.94 KB
/
manifest.js
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
'use strict';
const Confidence = require('confidence');
const Config = require('./config');
const Fs = require('fs');
const Path = require('path');
const criteria = {
env: process.env.NODE_ENV
};
const pathToEndpointConfigFiles = './server/api';
const manifest = {
$meta: 'Hapi server config used by glue to compose the server.',
server: {
debug: {
request: ['error']
},
connections: {
routes: {
security: true,
cors: {
origin: ['*'],
credentials: true
}
},
router: {
stripTrailingSlash: true,
isCaseSensitive: false
}
}
},
connections: [{
port: Config.get('/port/web'),
labels: ['web']
}],
registrations: [
{ plugin: 'vision' },
{
plugin: {
register: 'visionary',
options: {
layout: true,
engines: { hbs: 'handlebars' },
path: './server/web/views',
partialsPath: './server/web/views/partials',
layoutPath: './server/web/views/layout',
helpersPath: './server/web/views/helpers',
isCached: {
$filter: 'env',
development: false,
production: true
}
}
}
},
{
plugin: {
register: 'good',
options: {
ops: {
interval: 15000
},
reporters: {
console: [{
module: 'good-squeeze',
name: 'Squeeze',
args: [{
log: '*',
response: '*'
}]
}, {
module: 'good-console',
args: [{ format: 'YYYY-MM-DD/HH:mm:ss.SSS' }]
}, 'stdout']
}
}
}
},
{ plugin: 'inert' },
{ plugin: './server/web/index' },
{ plugin: './server/web/public' }
]
};
// Add plugins to manifest.registration for every endpoint in ./server/api
Fs.readdirSync(pathToEndpointConfigFiles).map((file) => {
return Path.join(pathToEndpointConfigFiles, file);
}).filter((file) => {
return Fs.statSync(file).isFile();
}).forEach((file) => {
const plugin = { plugin: './server/api/' + Path.parse(file).name };
manifest.registrations.push(plugin);
});
const store = new Confidence.Store(manifest);
exports.get = function (key) {
return store.get(key, criteria);
};
exports.meta = function (key) {
return store.meta(key, criteria);
};