1 |
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 |
|
5 | function normalizeArray(parts, allowAboveRoot) {
|
6 |
|
7 | var up = 0;
|
8 | for (var i = parts.length - 1; i >= 0; i--) {
|
9 | var last = parts[i];
|
10 | if (last === '.') {
|
11 | parts.splice(i, 1);
|
12 | }
|
13 | else if (last === '..') {
|
14 | parts.splice(i, 1);
|
15 |
|
16 | up++;
|
17 | }
|
18 | else if (up) {
|
19 | parts.splice(i, 1);
|
20 |
|
21 | up--;
|
22 | }
|
23 | }
|
24 |
|
25 | if (allowAboveRoot) {
|
26 |
|
27 | for (; up--; up) {
|
28 | parts.unshift('..');
|
29 | }
|
30 | }
|
31 | return parts;
|
32 | }
|
33 |
|
34 |
|
35 | var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/;
|
36 |
|
37 | function splitPath(filename) {
|
38 | var parts = splitPathRe.exec(filename);
|
39 | return parts ? parts.slice(1) : [];
|
40 | }
|
41 |
|
42 |
|
43 |
|
44 | function resolve() {
|
45 | var args = [];
|
46 | for (var _i = 0; _i < arguments.length; _i++) {
|
47 | args[_i] = arguments[_i];
|
48 | }
|
49 | var resolvedPath = '';
|
50 | var resolvedAbsolute = false;
|
51 | for (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
52 | var path = i >= 0 ? args[i] : '/';
|
53 |
|
54 | if (!path) {
|
55 | continue;
|
56 | }
|
57 | resolvedPath = path + "/" + resolvedPath;
|
58 | resolvedAbsolute = path.charAt(0) === '/';
|
59 | }
|
60 |
|
61 |
|
62 |
|
63 | resolvedPath = normalizeArray(resolvedPath.split('/').filter(function (p) { return !!p; }), !resolvedAbsolute).join('/');
|
64 | return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';
|
65 | }
|
66 | exports.resolve = resolve;
|
67 |
|
68 | function trim(arr) {
|
69 | var start = 0;
|
70 | for (; start < arr.length; start++) {
|
71 | if (arr[start] !== '') {
|
72 | break;
|
73 | }
|
74 | }
|
75 | var end = arr.length - 1;
|
76 | for (; end >= 0; end--) {
|
77 | if (arr[end] !== '') {
|
78 | break;
|
79 | }
|
80 | }
|
81 | if (start > end) {
|
82 | return [];
|
83 | }
|
84 | return arr.slice(start, end - start + 1);
|
85 | }
|
86 |
|
87 |
|
88 |
|
89 | function relative(from, to) {
|
90 |
|
91 | from = resolve(from).substr(1);
|
92 | to = resolve(to).substr(1);
|
93 |
|
94 | var fromParts = trim(from.split('/'));
|
95 | var toParts = trim(to.split('/'));
|
96 | var length = Math.min(fromParts.length, toParts.length);
|
97 | var samePartsLength = length;
|
98 | for (var i = 0; i < length; i++) {
|
99 | if (fromParts[i] !== toParts[i]) {
|
100 | samePartsLength = i;
|
101 | break;
|
102 | }
|
103 | }
|
104 | var outputParts = [];
|
105 | for (var i = samePartsLength; i < fromParts.length; i++) {
|
106 | outputParts.push('..');
|
107 | }
|
108 | outputParts = outputParts.concat(toParts.slice(samePartsLength));
|
109 | return outputParts.join('/');
|
110 | }
|
111 | exports.relative = relative;
|
112 |
|
113 |
|
114 |
|
115 | function normalizePath(path) {
|
116 | var isPathAbsolute = isAbsolute(path);
|
117 | var trailingSlash = path.substr(-1) === '/';
|
118 |
|
119 | var normalizedPath = normalizeArray(path.split('/').filter(function (p) { return !!p; }), !isPathAbsolute).join('/');
|
120 | if (!normalizedPath && !isPathAbsolute) {
|
121 | normalizedPath = '.';
|
122 | }
|
123 | if (normalizedPath && trailingSlash) {
|
124 | normalizedPath += '/';
|
125 | }
|
126 | return (isPathAbsolute ? '/' : '') + normalizedPath;
|
127 | }
|
128 | exports.normalizePath = normalizePath;
|
129 |
|
130 |
|
131 | function isAbsolute(path) {
|
132 | return path.charAt(0) === '/';
|
133 | }
|
134 | exports.isAbsolute = isAbsolute;
|
135 |
|
136 |
|
137 | function join() {
|
138 | var args = [];
|
139 | for (var _i = 0; _i < arguments.length; _i++) {
|
140 | args[_i] = arguments[_i];
|
141 | }
|
142 | return normalizePath(args.join('/'));
|
143 | }
|
144 | exports.join = join;
|
145 |
|
146 | function dirname(path) {
|
147 | var result = splitPath(path);
|
148 | var root = result[0];
|
149 | var dir = result[1];
|
150 | if (!root && !dir) {
|
151 |
|
152 | return '.';
|
153 | }
|
154 | if (dir) {
|
155 |
|
156 | dir = dir.substr(0, dir.length - 1);
|
157 | }
|
158 | return root + dir;
|
159 | }
|
160 | exports.dirname = dirname;
|
161 |
|
162 | function basename(path, ext) {
|
163 | var f = splitPath(path)[2];
|
164 | if (ext && f.substr(ext.length * -1) === ext) {
|
165 | f = f.substr(0, f.length - ext.length);
|
166 | }
|
167 | return f;
|
168 | }
|
169 | exports.basename = basename;
|
170 |
|
\ | No newline at end of file |