UNPKG

1.27 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.formatRequest = exports.parseRequest = undefined;
7exports.hook = hook;
8
9var _path = require('path');
10
11var _path2 = _interopRequireDefault(_path);
12
13var _consts = require('./consts');
14
15var _ = require('.');
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19const parseRequest = exports.parseRequest = requestStr => {
20 const parts = (requestStr || '').split('!');
21
22 const file = _path2.default.relative(process.cwd(), (0, _.removeAfter)('?', (0, _.removeBefore)(_consts.nodeModules, parts.pop())));
23
24 const loaders = parts.map(part => (0, _.firstMatch)(/[a-z0-9-@]+-loader/, part)).filter(_.hasValue);
25
26 return {
27 file: (0, _.hasValue)(file) ? file : null,
28 loaders
29 };
30};
31
32const formatRequest = exports.formatRequest = request => {
33 const loaders = request.loaders.join(_consts.NEXT);
34
35 if (!loaders.length) {
36 return request.file || '';
37 }
38
39 return `${loaders}${_consts.NEXT}${request.file}`;
40};
41
42// Hook helper for webpack 3 + 4 support
43function hook(compiler, hookName, fn) {
44 if (compiler.hooks) {
45 compiler.hooks[hookName].tap('WebpackBar:' + hookName, fn);
46 } else {
47 compiler.plugin(hookName, fn);
48 }
49}
\No newline at end of file