Skip to content
This repository was archived by the owner on Apr 29, 2020. It is now read-only.

Commit dce45aa

Browse files
committed
refactor: create @eq8/mvp-boot
1 parent b054ee1 commit dce45aa

14 files changed

Lines changed: 49 additions & 3019 deletions

File tree

Dockerfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ COPY package.json /opt/mvp/package.json
1111
RUN npm link --production
1212

1313
COPY ./index.js /opt/mvp/index.js
14-
COPY ./plugins /opt/mvp/plugins
14+
COPY ./lib /opt/mvp/lib
1515

1616
CMD mvp --log-level=${LOG_LEVEL}

NOTICE.txt

Lines changed: 0 additions & 2622 deletions
This file was deleted.

bin/mvp

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
'use strict';
33

44
const argv = require('yargs').argv;
5+
const path = require('path');
56

6-
// hoist bootstrap function and export
7-
bootstrap(argv);
7+
// hoist start function and export
8+
start(argv);
89

910
/**
1011
* The main function that signals the start of the application
@@ -13,7 +14,7 @@ bootstrap(argv);
1314
* @param {Object} [args] CLI arguments
1415
* @returns {undefined}
1516
*/
16-
async function bootstrap(args) {
17+
async function start(args) {
1718

1819
// Extract the settings
1920
const { overridesFile } = args || {};
@@ -22,42 +23,54 @@ async function bootstrap(args) {
2223
? require(overridesFile)
2324
: {};
2425

25-
const mvp = require('..');
26+
const boot = require('@eq8/mvp-boot');
2627

27-
// Call MVP with a set of options from the CLI which initializes the core components of MVP:
28-
// - Logger
29-
// - API
30-
// - HTTP server
31-
const { options, logger, store, server } = await mvp({ overrides });
32-
const defaults = {
33-
port: 8000,
34-
retryInterval: 1000
35-
};
36-
const { port, storeUri, retryInterval } = options.init(args, defaults);
28+
const extensions = path.join(__dirname, '../lib/ext');
29+
const define = boot({ overrides, extensions });
3730

38-
logger.info('initialized', { overrides });
31+
define([
32+
'-/options/index.js',
33+
'-/logger/index.js',
34+
'-/store/index.js',
35+
'-/server/index.js',
36+
'-/ext/controller/index.js'
37+
], (options, logger, store, server, controller) => {
38+
const defaults = {
39+
port: 8000,
40+
retryInterval: 1000
41+
};
42+
const { port, storeUri, retryInterval } = options.init(args, defaults);
3943

40-
try {
41-
const { success } = await server.listen({ port }) || {};
44+
logger.info('initialized', { overrides });
4245

43-
logger.info('server is listening', { port, success });
44-
} catch (err) {
45-
logger.error('server unable to listen', { port, err });
46-
process.exitCode = 1;
47-
}
46+
listen().then(connect, err => {
47+
throw new Error(err);
48+
});
4849

49-
connect();
50+
async function listen() {
51+
try {
52+
server.use(controller.middleware());
5053

51-
async function connect(callback) {
52-
try {
53-
const { success } = await store.connect({ storeUri }) || {};
54+
const { success } = await server.listen({ port }) || {};
5455

55-
logger.info('store has connected', { storeUri, success });
56+
logger.info('server is listening', { port, success });
57+
} catch (err) {
58+
logger.error('server unable to listen', { port, err });
59+
process.exitCode = 1;
60+
}
61+
}
62+
63+
async function connect() {
64+
try {
65+
const { success } = await store.connect({ storeUri }) || {};
66+
67+
logger.info('store has connected', { storeUri, success });
5668

57-
server.setState('ready'); // TODO: replace with connected, ready if db was created
58-
} catch (err) {
59-
logger.error('store unable to connect', { storeUri, err });
60-
setTimeout(connect, retryInterval, callback);
69+
server.setState('ready'); // TODO: replace with connected, ready if db was created
70+
} catch (err) {
71+
logger.error('store unable to connect', { storeUri, err });
72+
setTimeout(connect, retryInterval);
73+
}
6174
}
62-
}
75+
});
6376
}

package.json

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
"mvp": "./bin/mvp"
88
},
99
"scripts": {
10-
"install": "npm-license-crawler > ./NOTICE.txt",
1110
"precommit": "npm run test:lint",
1211
"prepush": "npm run test:lint && npm run test:unit",
1312
"start": "nodemon",
1413
"test": "npm run test:lint && npm run test:unit && npm run test:integration",
15-
"test:lint": "eslint --cache --ext .js index.js bin/* plugins",
14+
"test:lint": "eslint --cache --ext .js index.js bin/* lib",
1615
"test:unit": "tape test/test.unit.js | faucet",
1716
"test:integration": "tape test/test.integration.js | faucet"
1817
},
@@ -31,16 +30,11 @@
3130
},
3231
"homepage": "https://github.com/eq8/mvp#readme",
3332
"dependencies": {
33+
"@eq8/mvp-boot": "git+https://git@github.com/eq8/mvp-boot.git#master",
3434
"express": "4.15.3",
35-
"immutable": "3.8.1",
3635
"lodash": "4.17.9",
37-
"lru-cache": "4.1.2",
3836
"request": "2.87.0",
39-
"requirejs": "2.3.5",
40-
"rethinkdb": "2.3.3",
41-
"semver": "5.5.0",
4237
"url-parse": "1.4.1",
43-
"winston": "3.0.0",
4438
"yargs": "12.0.1"
4539
},
4640
"devDependencies": {
@@ -49,7 +43,6 @@
4943
"faucet": "0.0.1",
5044
"husky": "0.14.3",
5145
"nodemon": "1.18.3",
52-
"npm-license-crawler": "0.1.9",
5346
"tape": "4.9.1"
5447
},
5548
"nodemonConfig": {

plugins/authentication/index.js

Lines changed: 0 additions & 77 deletions
This file was deleted.

plugins/logger/index.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

plugins/options/index.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

plugins/server/index.js

Lines changed: 0 additions & 44 deletions
This file was deleted.

plugins/server/lib/error-handler.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)