UNPKG

1.42 kBJavaScriptView Raw
1'use strict';
2
3const path = require('path');
4const fs = require('fs-extra');
5
6const mapValues = (obj, iterator) => {
7 const keys = Object.keys(obj);
8 const mapped = {};
9 keys.forEach(key => {
10 mapped[key] = iterator(obj[key], key, obj);
11 });
12 return mapped;
13};
14
15const createServerStrategyCode = strategy => {
16 const variableName = 'strategy';
17
18 const requires = mapValues(strategy, (value, key) => {
19 if (key === 'libs') return;
20 if (typeof value === 'string') {
21 const requireFile = path.resolve(__dirname, 'libs', value);
22 return `${variableName}['${key}'] = require('${requireFile}').${key}.fn;`;
23 } else if (Array.isArray(value)) {
24 const requireArray = value.map(module => {
25 const requireFile = path.resolve(__dirname, 'libs', module);
26 return `require('${requireFile}').${key}.fn`;
27 });
28 return `${variableName}['${key}'] = [
29${requireArray.join(',\n')}
30]`;
31 }
32 });
33
34 const requireCode = Object.keys(requires).map(e => requires[e]);
35 const code = `
36const ${variableName} = {};
37${requireCode.join('\n')};
38${variableName}.strategy = ${JSON.stringify(strategy)}
39
40module.exports = ${variableName};
41 `;
42 return code;
43};
44
45const writeServerStrategy = (filename, strategy) => {
46 const code = createServerStrategyCode(strategy);
47 return fs.writeFile(filename, code);
48};
49
50module.exports = writeServerStrategy;
51//# sourceMappingURL=generateServerStrategy.js.map
\No newline at end of file