-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
101 lines (86 loc) · 1.82 KB
/
index.js
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
'use strict';
const path_ = require('path');
const url_ = require('url');
let urlExtra = {};
function _normalize (url) {
return url
.replace(/\\/g, '/')
.replace(/[\/]+/g, '/')
.replace(/\/\?/g, '?')
.replace(/\/\#/g, '#')
.replace(/\:\//g, '://');
}
/**
* @method normalize
* @param {string} url
*/
urlExtra.normalize = function (url) {
return _normalize(url);
};
/**
* @method join
*/
urlExtra.join = function () {
let joined = [].slice.call(arguments, 0).join('/');
return _normalize(joined);
};
/**
* @method dirname
* @param {string} url
*/
urlExtra.dirname = function (url) {
let dirname = path_.dirname(url);
if (dirname === '.') {
return '';
}
return _normalize(dirname);
};
/**
* @method extname
*/
urlExtra.extname = path_.extname;
/**
* @method basename
* @param {string} url
* @param {string} extname
*/
urlExtra.basename = function (url, extname) {
if (urlExtra.dirname(url) === '') {
let basename = path_.basename(url);
return basename.substring(0, basename.length - 1);
}
return path_.basename(url, extname);
};
/**
* @method basenameNoExt
* @param {string} url
*/
urlExtra.basenameNoExt = function (url) {
return urlExtra.basename(url, urlExtra.extname(url));
};
/**
* @method randomQuery
* @param {string} url
*/
let _queryIndices = {};
urlExtra.randomQuery = function (url) {
let queryIndex = _queryIndices[url] || 0;
_queryIndices[url] = ++queryIndex;
if (queryIndex < 10) {
return url + '?00' + queryIndex;
} else if (queryIndex < 100) {
return url + '?0' + queryIndex;
}
return url + '?' + queryIndex;
};
// ========================================
// exports
// ========================================
let _ = {};
for (let p in url_) {
_[p] = url_[p];
}
for (let p in urlExtra) {
_[p] = urlExtra[p];
}
module.exports = _;