Skip to content

Commit ded39c1

Browse files
committed
refactor(es6): upgrade RequestShortner to ES6
1 parent 9380bd4 commit ded39c1

File tree

1 file changed

+49
-47
lines changed

1 file changed

+49
-47
lines changed

lib/RequestShortener.js

Lines changed: 49 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,57 @@
22
MIT License http://www.opensource.org/licenses/mit-license.php
33
Author Tobias Koppers @sokra
44
*/
5-
var path = require("path");
6-
7-
function RequestShortener(directory) {
8-
directory = directory.replace(/\\/g, "/");
9-
var parentDirectory = path.dirname(directory);
10-
if(/[\/\\]$/.test(directory)) directory = directory.substr(0, directory.length - 1);
11-
if(directory) {
12-
var currentDirectoryRegExp = directory.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
13-
currentDirectoryRegExp = new RegExp("^" + currentDirectoryRegExp + "|(!)" + currentDirectoryRegExp, "g");
14-
15-
this.currentDirectoryRegExp = currentDirectoryRegExp;
5+
"use strict";
6+
7+
const path = require("path");
8+
9+
class RequestShortener {
10+
constructor(directory) {
11+
directory = directory.replace(/\\/g, "/");
12+
let parentDirectory = path.dirname(directory);
13+
if(/[\/\\]$/.test(directory)) directory = directory.substr(0, directory.length - 1);
14+
15+
if(directory) {
16+
let currentDirectoryRegExp = directory.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
17+
currentDirectoryRegExp = new RegExp("^" + currentDirectoryRegExp + "|(!)" + currentDirectoryRegExp, "g");
18+
this.currentDirectoryRegExp = currentDirectoryRegExp;
19+
}
20+
21+
if(/[\/\\]$/.test(parentDirectory)) parentDirectory = parentDirectory.substr(0, parentDirectory.length - 1);
22+
if(parentDirectory && parentDirectory !== directory) {
23+
let parentDirectoryRegExp = parentDirectory.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
24+
parentDirectoryRegExp = new RegExp("^" + parentDirectoryRegExp + "|(!)" + parentDirectoryRegExp, "g");
25+
this.parentDirectoryRegExp = parentDirectoryRegExp;
26+
}
27+
28+
if(__dirname.length >= 2) {
29+
let buildins = path.join(__dirname, "..").replace(/\\/g, "/");
30+
let buildinsAsModule = this.currentDirectoryRegExp && this.currentDirectoryRegExp.test(buildins);
31+
let buildinsRegExp = buildins.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
32+
buildinsRegExp = new RegExp("^" + buildinsRegExp + "|(!)" + buildinsRegExp, "g");
33+
this.buildinsAsModule = buildinsAsModule;
34+
this.buildinsRegExp = buildinsRegExp;
35+
}
36+
37+
this.nodeModulesRegExp = /\/node_modules\//g;
38+
this.indexJsRegExp = /\/index.js(!|\?|\(query\))/g;
1639
}
1740

18-
if(/[\/\\]$/.test(parentDirectory)) parentDirectory = parentDirectory.substr(0, parentDirectory.length - 1);
19-
if(parentDirectory && parentDirectory !== directory) {
20-
var parentDirectoryRegExp = parentDirectory.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
21-
parentDirectoryRegExp = new RegExp("^" + parentDirectoryRegExp + "|(!)" + parentDirectoryRegExp, "g");
22-
23-
this.parentDirectoryRegExp = parentDirectoryRegExp;
41+
shorten(request) {
42+
if(!request) return request;
43+
request = request.replace(/\\/g, "/");
44+
if(this.buildinsAsModule && this.buildinsRegExp)
45+
request = request.replace(this.buildinsRegExp, "!(webpack)");
46+
if(this.currentDirectoryRegExp)
47+
request = request.replace(this.currentDirectoryRegExp, "!.");
48+
if(this.parentDirectoryRegExp)
49+
request = request.replace(this.parentDirectoryRegExp, "!..");
50+
if(!this.buildinsAsModule && this.buildinsRegExp)
51+
request = request.replace(this.buildinsRegExp, "!(webpack)");
52+
request = request.replace(this.nodeModulesRegExp, "/~/");
53+
request = request.replace(this.indexJsRegExp, "$1");
54+
return request.replace(/^!|!$/, "");
2455
}
25-
26-
if(__dirname.length >= 2) {
27-
var buildins = path.join(__dirname, "..").replace(/\\/g, "/");
28-
var buildinsAsModule = currentDirectoryRegExp && currentDirectoryRegExp.test(buildins);
29-
var buildinsRegExp = buildins.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
30-
buildinsRegExp = new RegExp("^" + buildinsRegExp + "|(!)" + buildinsRegExp, "g");
31-
32-
this.buildinsAsModule = buildinsAsModule;
33-
this.buildinsRegExp = buildinsRegExp;
34-
}
35-
36-
this.nodeModulesRegExp = /\/node_modules\//g;
37-
this.indexJsRegExp = /\/index.js(!|\?|\(query\))/g;
3856
}
39-
module.exports = RequestShortener;
4057

41-
RequestShortener.prototype.shorten = function(request) {
42-
if(!request)
43-
return request;
44-
request = request.replace(/\\/g, "/");
45-
if(this.buildinsAsModule && this.buildinsRegExp)
46-
request = request.replace(this.buildinsRegExp, "!(webpack)");
47-
if(this.currentDirectoryRegExp)
48-
request = request.replace(this.currentDirectoryRegExp, "!.");
49-
if(this.parentDirectoryRegExp)
50-
request = request.replace(this.parentDirectoryRegExp, "!..");
51-
if(!this.buildinsAsModule && this.buildinsRegExp)
52-
request = request.replace(this.buildinsRegExp, "!(webpack)");
53-
request = request.replace(this.nodeModulesRegExp, "/~/");
54-
request = request.replace(this.indexJsRegExp, "$1");
55-
return request.replace(/^!|!$/, "");
56-
};
58+
module.exports = RequestShortener;

0 commit comments

Comments
 (0)