-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
71 lines (56 loc) · 1.38 KB
/
index.js
File metadata and controls
71 lines (56 loc) · 1.38 KB
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
var httpError = require('http-errors')
var browserify = require('browserify-incremental')
var saveStream = require('save-stream')
module.exports = serveBrowserify
function serveBrowserify (files, opts) {
var b = browserify(files, opts)
if (files && typeof files.bundle !== 'function' && !opts) {
opts = files || {}
files = undefined
}
if (opts != null && opts.once == true) {
return serveOnce(b)
} else {
return serveMany(b)
}
}
function serveMany (b) {
return function serve (req, res, next) {
function onError (err) {
sendError(next, err)
}
var bundle = build(b, onError)
sendBundle(req, res, next, bundle)
}
}
function serveOnce (b) {
var err
function onError (err) {
err = err
}
var savedBundle = build(b, onError).pipe(saveStream())
return function serve (req, res, next) {
if (err) {
return sendError(next, err)
}
sendBundle(req, res, next, savedBundle.load())
}
}
function build (b, onError) {
return b
.on('error', onError)
.bundle()
.on('error', onError)
}
function sendError (next, err) {
next(httpError(500, err.message, err))
}
function sendBundle (req, res, next, bundle) {
if (req.method.toLowerCase() === 'get') {
res.setHeader('Content-Type', 'application/javascript')
bundle.pipe(res)
} else {
next(httpError(404))
}
}
serveBrowserify.args = browserify.args