1 | var getPort = require('get-port')
|
2 |
|
3 | var isElectronProject = require('./is-electron-project')
|
4 | var http = require('./http-server')
|
5 | var bankai = require('../http')
|
6 | var createTui = require('./ui')
|
7 | var createLogUi = require('./ui-basic')
|
8 |
|
9 | module.exports = start
|
10 |
|
11 | function start (entry, opts) {
|
12 | var handler = bankai(entry, opts)
|
13 | var state = handler.state
|
14 |
|
15 | var createUi = opts.simple ? createLogUi : createTui
|
16 | var render = createUi(handler.compiler, state)
|
17 |
|
18 | isElectronProject(handler.compiler.dirname, function (err, bool) {
|
19 | if (err) throw err
|
20 | opts.electron = bool
|
21 |
|
22 | var server = http.createServer(function (req, res) {
|
23 | if (req.type === 'OPTIONS') return cors(req, res)
|
24 | handler(req, res, function () {
|
25 | res.statusCode = 404
|
26 | return res.end('No route found for ' + req.url)
|
27 | })
|
28 | })
|
29 |
|
30 | render()
|
31 |
|
32 | getPort({ port: 8080 })
|
33 | .then(function (port) {
|
34 | server.listen(port, function () {
|
35 | state.port = port
|
36 | })
|
37 | })
|
38 | .catch(function (err) {
|
39 | state.error = err
|
40 | })
|
41 | })
|
42 | }
|
43 |
|
44 | function cors (req, res) {
|
45 | res.setHeader('access-control-allow-origin', '*')
|
46 | res.setHeader('access-control-allow-methods', '*')
|
47 | res.setHeader('access-control-allow-headers', '*')
|
48 | res.setHeader('access-control-allow-credentials', 'true')
|
49 | res.end(200)
|
50 | }
|