diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:43:05 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 22:18:30 +0800 |
| commit | 89e95b3f143682ed9a006991bacf45c9dcba4818 (patch) | |
| tree | 4f44cf41b828577d583890bdd5a1c31e8491a6ba /node_modules/webpack-dev-middleware/lib/util.js | |
| parent | aa7f0199255277949790b41c56e8ec97dd4f0da4 (diff) | |
| download | xmake-docs-vuepress.tar.gz xmake-docs-vuepress.zip | |
remove node_modulesvuepress
Diffstat (limited to 'node_modules/webpack-dev-middleware/lib/util.js')
| -rw-r--r-- | node_modules/webpack-dev-middleware/lib/util.js | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/node_modules/webpack-dev-middleware/lib/util.js b/node_modules/webpack-dev-middleware/lib/util.js deleted file mode 100644 index e8a70bef..00000000 --- a/node_modules/webpack-dev-middleware/lib/util.js +++ /dev/null @@ -1,173 +0,0 @@ -'use strict'; - -const path = require('path'); -const { parse } = require('url'); -const querystring = require('querystring'); -const parseRange = require('range-parser'); - -const HASH_REGEXP = /[0-9a-f]{10,}/; - -// support for multi-compiler configuration -// see: https://github.com/webpack/webpack-dev-server/issues/641 -function getPaths(publicPath, compiler, url) { - const compilers = compiler && compiler.compilers; - if (Array.isArray(compilers)) { - let compilerPublicPath; - - // the path portion of compilerPublicPath - let compilerPublicPathBase; - - for (let i = 0; i < compilers.length; i++) { - compilerPublicPath = compilers[i].options - && compilers[i].options.output - && compilers[i].options.output.publicPath; - - if (compilerPublicPath) { - if (compilerPublicPath.indexOf('/') === 0) { - compilerPublicPathBase = compilerPublicPath; - } else { - // handle the case where compilerPublicPath is a URL with hostname - compilerPublicPathBase = parse(compilerPublicPath).pathname; - } - - // check the url vs the path part of the compilerPublicPath - if (url.indexOf(compilerPublicPathBase) === 0) { - return { - publicPath: compilerPublicPath, - outputPath: compilers[i].outputPath - }; - } - } - } - } - return { - publicPath, - outputPath: compiler.outputPath - }; -} - -function ready(context, fn, req) { - if (context.state) { - return fn(context.webpackStats); - } - - context.log.info(`wait until bundle finished: ${req.url || fn.name}`); - context.callbacks.push(fn); -} - -module.exports = { - getFilenameFromUrl(pubPath, compiler, url) { - const { outputPath, publicPath } = getPaths(pubPath, compiler, url); - // localPrefix is the folder our bundle should be in - const localPrefix = parse(publicPath || '/', false, true); - const urlObject = parse(url); - let filename; - - // publicPath has the hostname that is not the same as request url's, should fail - if (localPrefix.hostname !== null && urlObject.hostname !== null && - localPrefix.hostname !== urlObject.hostname) { - return false; - } - - // publicPath is not in url, so it should fail - if (publicPath && localPrefix.hostname === urlObject.hostname && - url.indexOf(publicPath) !== 0) { - return false; - } - - // strip localPrefix from the start of url - if (urlObject.pathname.indexOf(localPrefix.pathname) === 0) { - filename = urlObject.pathname.substr(localPrefix.pathname.length); - } - - if (!urlObject.hostname && localPrefix.hostname && - url.indexOf(localPrefix.path) !== 0) { - return false; - } - - let uri = outputPath; - - /* istanbul ignore if */ - if (process.platform === 'win32') { - // Path Handling for Microsoft Windows - if (filename) { - uri = path.posix.join((outputPath || ''), querystring.unescape(filename)); - - if (!path.win32.isAbsolute(uri)) { - uri = `/${uri}`; - } - } - - return uri; - } - - // Path Handling for all other operating systems - if (filename) { - uri = path.posix.join((outputPath || ''), filename); - - if (!path.posix.isAbsolute(uri)) { - uri = `/${uri}`; - } - } - - // if no matches, use outputPath as filename - return querystring.unescape(uri); - }, - - handleRangeHeaders(content, req, res) { - // assumes express API. For other servers, need to add logic to access - // alternative header APIs - res.setHeader('Accept-Ranges', 'bytes'); - - if (req.headers.range) { - const ranges = parseRange(content.length, req.headers.range); - - // unsatisfiable - if (ranges === -1) { - res.setHeader('Content-Range', `bytes */${content.length}`); - res.statusCode = 416; - } - - // valid (syntactically invalid/multiple ranges are treated as a - // regular response) - if (ranges !== -2 && ranges.length === 1) { - const { length } = content; - - // Content-Range - res.statusCode = 206; - res.setHeader( - 'Content-Range', - `bytes ${ranges[0].start}-${ranges[0].end}/${length}` - ); - - content = content.slice(ranges[0].start, ranges[0].end + 1); - } - } - - return content; - }, - - handleRequest(context, filename, processRequest, req) { - // in lazy mode, rebuild on bundle request - if (context.options.lazy && (!context.options.filename || context.options.filename.test(filename))) { - context.rebuild(); - } - - if (HASH_REGEXP.test(filename)) { - try { - if (context.fs.statSync(filename).isFile()) { - processRequest(); - return; - } - } catch (e) { - // eslint-disable-line - } - } - - ready(context, processRequest, req); - }, - - noop: () => {}, - - ready -}; |
