/
index.js
58 lines (47 loc) · 2.59 KB
/
index.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
const Glue = require('@hapi/glue');
const _ = require('lodash');
const manifest = require('./manifest');
const logo = require('./lib/show-logo');
require('colors');
function buildManifest(srcManifest, options) {
const resManifest = _.cloneDeep(srcManifest);
const pluginsByName = resManifest.register.plugins;
const parsedSecureUrl = new URL(options.dotStencilFile.storeUrl); // The url to a secure page (prompted as login page)
const parsedNormalUrl = new URL(options.dotStencilFile.normalStoreUrl); // The host url of the homepage;
const storeUrl = parsedSecureUrl.protocol + '//' + parsedSecureUrl.host;
resManifest.server.port = options.dotStencilFile.port;
pluginsByName['./plugins/router/router.module'].storeUrl = storeUrl;
pluginsByName['./plugins/router/router.module'].normalStoreUrl =
parsedNormalUrl.protocol + '//' + parsedNormalUrl.host;
pluginsByName['./plugins/router/router.module'].apiKey = options.dotStencilFile.apiKey;
pluginsByName['./plugins/router/router.module'].port = options.dotStencilFile.port;
pluginsByName['./plugins/router/router.module'].stencilCliVersion = options.stencilCliVersion;
pluginsByName['./plugins/router/router.module'].accessToken =
options.dotStencilFile.accessToken;
pluginsByName['./plugins/renderer/renderer.module'].useCache = options.useCache;
pluginsByName['./plugins/renderer/renderer.module'].username = options.dotStencilFile.username;
pluginsByName['./plugins/renderer/renderer.module'].token = options.dotStencilFile.token;
pluginsByName['./plugins/renderer/renderer.module'].accessToken =
options.dotStencilFile.accessToken;
pluginsByName['./plugins/renderer/renderer.module'].customLayouts =
options.dotStencilFile.customLayouts;
pluginsByName['./plugins/renderer/renderer.module'].themePath = options.themePath;
pluginsByName['./plugins/renderer/renderer.module'].storeUrl = storeUrl;
pluginsByName['./plugins/renderer/renderer.module'].storeSettingsLocale =
options.storeSettingsLocale;
pluginsByName['./plugins/theme-assets/theme-assets.module'].themePath = options.themePath;
resManifest.register.plugins = _.reduce(
pluginsByName,
(pluginsArr, opts, plugin) => [...pluginsArr, { plugin, options: opts }],
[],
);
return resManifest;
}
async function create(options) {
const serverManifest = buildManifest(manifest.get('/'), options);
const server = await Glue.compose(serverManifest, { relativeTo: __dirname });
await server.start();
console.log(logo);
return server;
}
module.exports = { create };