1 | (function(global) {
|
2 |
|
3 | if (global.denodify) return;
|
4 |
|
5 | var m = {};
|
6 | var f = {};
|
7 |
|
8 | var process = {
|
9 | platform: 'browser'
|
10 | };
|
11 |
|
12 |
|
13 |
|
14 | function require(parent, moduleid) {
|
15 | if (moduleid.indexOf('/') === -1) parent = '';
|
16 | else {
|
17 | if (Path.isAbsolute(moduleid)) parent = '/';
|
18 | else moduleid = Path.join(parent, moduleid);
|
19 | if (!Path.extname(moduleid)) moduleid += '.js';
|
20 | }
|
21 | var module = m[moduleid];
|
22 | if (module) return module.exports;
|
23 | var func = f[moduleid];
|
24 | if (!func)
|
25 | throw new Error('Couldn\'t resolve module with resolved path of ' +
|
26 | Path.join(Path.dirname(parent), moduleid));
|
27 | func(function(__filename) { return require(Path.dirname(moduleid), __filename); },
|
28 | module = m[moduleid] = {},
|
29 | module.exports = {},
|
30 | moduleid,
|
31 | Path.dirname(moduleid),
|
32 | process);
|
33 | return module.exports;
|
34 | }
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 | global.denodify = function (__filename, func) {
|
43 | f[__filename] = func;
|
44 | };
|
45 |
|
46 |
|
47 |
|
48 |
|
49 | global.denodify.require = function(__filename) {
|
50 | require('', __filename);
|
51 | };
|
52 |
|
53 |
|
54 | global.denodify.debug = function(__filename) {
|
55 | console.log('modules\n:', m);
|
56 | console.log('funcs\n:', f);
|
57 | };
|
58 |
|
59 |
|
60 |
|
61 |
|
62 | var path = (function() {
|
63 | var exports = {};
|
64 | function normalizeArray(parts, allowAboveRoot) {
|
65 |
|
66 | var up = 0;
|
67 | for (var i = parts.length - 1; i >= 0; i--) {
|
68 | var last = parts[i];
|
69 | if (last === '.') {
|
70 | parts.splice(i, 1);
|
71 | } else if (last === '..') {
|
72 | parts.splice(i, 1);
|
73 | up++;
|
74 | } else if (up) {
|
75 | parts.splice(i, 1);
|
76 | up--;
|
77 | }
|
78 | }
|
79 |
|
80 |
|
81 | if (allowAboveRoot) {
|
82 | for (; up--; up) {
|
83 | parts.unshift('..');
|
84 | }
|
85 | }
|
86 |
|
87 | return parts;
|
88 | }
|
89 |
|
90 |
|
91 |
|
92 | var splitPathRe =
|
93 | /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
|
94 | var splitPath = function(filename) {
|
95 | return splitPathRe.exec(filename).slice(1);
|
96 | };
|
97 |
|
98 |
|
99 |
|
100 | exports.resolve = function() {
|
101 | var resolvedPath = '',
|
102 | resolvedAbsolute = false;
|
103 |
|
104 | for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
105 | var path = (i >= 0) ? arguments[i] : process.cwd();
|
106 |
|
107 |
|
108 | if (typeof path !== 'string') {
|
109 | throw new TypeError('Arguments to path.resolve must be strings');
|
110 | } else if (!path) {
|
111 | continue;
|
112 | }
|
113 |
|
114 | resolvedPath = path + '/' + resolvedPath;
|
115 | resolvedAbsolute = path.charAt(0) === '/';
|
116 | }
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 | resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
|
123 | return !!p;
|
124 | }), !resolvedAbsolute).join('/');
|
125 |
|
126 | return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
|
127 | };
|
128 |
|
129 |
|
130 |
|
131 | exports.normalize = function(path) {
|
132 | var isAbsolute = exports.isAbsolute(path),
|
133 | trailingSlash = substr(path, -1) === '/';
|
134 |
|
135 |
|
136 | path = normalizeArray(filter(path.split('/'), function(p) {
|
137 | return !!p;
|
138 | }), !isAbsolute).join('/');
|
139 |
|
140 | if (!path && !isAbsolute) {
|
141 | path = '.';
|
142 | }
|
143 | if (path && trailingSlash) {
|
144 | path += '/';
|
145 | }
|
146 |
|
147 | return (isAbsolute ? '/' : '') + path;
|
148 | };
|
149 |
|
150 |
|
151 | exports.isAbsolute = function(path) {
|
152 | return path.charAt(0) === '/';
|
153 | };
|
154 |
|
155 |
|
156 | exports.join = function() {
|
157 | var paths = Array.prototype.slice.call(arguments, 0);
|
158 | return exports.normalize(filter(paths, function(p, index) {
|
159 | if (typeof p !== 'string') {
|
160 | throw new TypeError('Arguments to path.join must be strings');
|
161 | }
|
162 | return p;
|
163 | }).join('/'));
|
164 | };
|
165 |
|
166 |
|
167 |
|
168 |
|
169 | exports.relative = function(from, to) {
|
170 | from = exports.resolve(from).substr(1);
|
171 | to = exports.resolve(to).substr(1);
|
172 |
|
173 | function trim(arr) {
|
174 | var start = 0;
|
175 | for (; start < arr.length; start++) {
|
176 | if (arr[start] !== '') break;
|
177 | }
|
178 |
|
179 | var end = arr.length - 1;
|
180 | for (; end >= 0; end--) {
|
181 | if (arr[end] !== '') break;
|
182 | }
|
183 |
|
184 | if (start > end) return [];
|
185 | return arr.slice(start, end - start + 1);
|
186 | }
|
187 |
|
188 | var fromParts = trim(from.split('/'));
|
189 | var toParts = trim(to.split('/'));
|
190 |
|
191 | var length = Math.min(fromParts.length, toParts.length);
|
192 | var samePartsLength = length;
|
193 | for (var i = 0; i < length; i++) {
|
194 | if (fromParts[i] !== toParts[i]) {
|
195 | samePartsLength = i;
|
196 | break;
|
197 | }
|
198 | }
|
199 |
|
200 | var outputParts = [];
|
201 | for (var i = samePartsLength; i < fromParts.length; i++) {
|
202 | outputParts.push('..');
|
203 | }
|
204 |
|
205 | outputParts = outputParts.concat(toParts.slice(samePartsLength));
|
206 |
|
207 | return outputParts.join('/');
|
208 | };
|
209 |
|
210 | exports.sep = '/';
|
211 | exports.delimiter = ':';
|
212 |
|
213 | exports.dirname = function(path) {
|
214 | var result = splitPath(path),
|
215 | root = result[0],
|
216 | dir = result[1];
|
217 |
|
218 | if (!root && !dir) {
|
219 |
|
220 | return '.';
|
221 | }
|
222 |
|
223 | if (dir) {
|
224 |
|
225 | dir = dir.substr(0, dir.length - 1);
|
226 | }
|
227 |
|
228 | return root + dir;
|
229 | };
|
230 |
|
231 |
|
232 | exports.basename = function(path, ext) {
|
233 | var f = splitPath(path)[2];
|
234 |
|
235 | if (ext && f.substr(-1 * ext.length) === ext) {
|
236 | f = f.substr(0, f.length - ext.length);
|
237 | }
|
238 | return f;
|
239 | };
|
240 |
|
241 |
|
242 | exports.extname = function(path) {
|
243 | return splitPath(path)[3];
|
244 | };
|
245 |
|
246 | function filter (xs, f) {
|
247 | if (xs.filter) return xs.filter(f);
|
248 | var res = [];
|
249 | for (var i = 0; i < xs.length; i++) {
|
250 | if (f(xs[i], i, xs)) res.push(xs[i]);
|
251 | }
|
252 | return res;
|
253 | }
|
254 |
|
255 |
|
256 | var substr = 'ab'.substr(-1) === 'b'
|
257 | ? function (str, start, len) { return str.substr(start, len) }
|
258 | : function (str, start, len) {
|
259 | if (start < 0) start = str.length + start;
|
260 | return str.substr(start, len);
|
261 | };
|
262 | return { exports: exports };
|
263 | })();
|
264 |
|
265 |
|
266 | m['path'] = path;
|
267 | var Path = path.exports;
|
268 |
|
269 | })(this);
|