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
/
manifest.js
104 lines (87 loc) · 2.64 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
'use strict';
const Confidence = require('@hapipal/confidence');
const Config = require('./config');
const Fs = require('fs');
const Path = require('path');
const GetCustomResponseHeader = require('./server/api/setup/lib/getCustomResponseHeader');
const Glue = require('@hapi/glue');
const criteria = {
env: process.env.NODE_ENV
};
const pathToEndpointConfigFiles = './server/api';
const manifest = {
server: {
debug: {
request: ['error']
},
port: Config.get('/port/web'),
routes: {
security: true,
cors: {
origin: ['*'],
credentials: true,
additionalExposedHeaders: [GetCustomResponseHeader(process.env).name]
}
},
router: {
stripTrailingSlash: true,
isCaseSensitive: false
}
},
register: {
plugins: [
{ plugin: '@hapi/vision' },
{
plugin: '@hapi/good',
options: {
ops: {
interval: 15000
},
reporters: {
console: [{
module: '@hapi/good-squeeze',
name: 'Squeeze',
args: [{
log: '*',
response: '*'
}]
}, {
module: '@hapi/good-console',
args: [{ format: 'YYYY-MM-DD/HH:mm:ss.SSS' }]
}, 'stdout']
}
}
},
{ plugin: '@hapi/inert' },
{ plugin: require('./server/web/index') },
{ plugin: require('./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: require('./server/api/' + Path.parse(file).name) };
manifest.register.plugins.push(plugin);
});
const store = new Confidence.Store(manifest);
const startServer = async function () {
try {
const server = await Glue.compose(manifest, {});
await server.start();
}
catch (err) {
console.error(err);
process.exit(1);
}
};
startServer();
exports.get = function (key) {
return store.get(key, criteria);
};
exports.meta = function (key) {
return store.meta(key, criteria);
};