|
14 | 14 | */ |
15 | 15 |
|
16 | 16 | var escapeHtml = require('escape-html'); |
17 | | -var merge = require('utils-merge'); |
18 | 17 | var parseurl = require('parseurl'); |
19 | 18 | var resolve = require('path').resolve; |
20 | 19 | var send = require('send'); |
@@ -45,32 +44,31 @@ function serveStatic(root, options) { |
45 | 44 | } |
46 | 45 |
|
47 | 46 | // copy options object |
48 | | - options = merge({}, options) |
| 47 | + var opts = Object.create(options || null) |
49 | 48 |
|
50 | 49 | // resolve root to absolute |
51 | 50 | root = resolve(root) |
52 | 51 |
|
53 | 52 | // default redirect |
54 | | - var redirect = options.redirect !== false |
| 53 | + var redirect = opts.redirect !== false |
55 | 54 |
|
56 | 55 | // headers listener |
57 | | - var setHeaders = options.setHeaders |
58 | | - delete options.setHeaders |
| 56 | + var setHeaders = opts.setHeaders |
| 57 | + opts.setHeaders = undefined |
59 | 58 |
|
60 | 59 | if (setHeaders && typeof setHeaders !== 'function') { |
61 | 60 | throw new TypeError('option setHeaders must be function') |
62 | 61 | } |
63 | 62 |
|
64 | 63 | // setup options for send |
65 | | - options.maxage = options.maxage || options.maxAge || 0 |
66 | | - options.root = root |
| 64 | + opts.maxage = opts.maxage || opts.maxAge || 0 |
| 65 | + opts.root = root |
67 | 66 |
|
68 | 67 | return function serveStatic(req, res, next) { |
69 | 68 | if (req.method !== 'GET' && req.method !== 'HEAD') { |
70 | 69 | return next() |
71 | 70 | } |
72 | 71 |
|
73 | | - var opts = merge({}, options) |
74 | 72 | var originalUrl = parseurl.original(req) |
75 | 73 | var path = parseurl(req).pathname |
76 | 74 | var hasTrailingSlash = originalUrl.pathname[originalUrl.pathname.length - 1] === '/' |
|
0 commit comments