-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathcommonjs-require.js
More file actions
97 lines (81 loc) · 2.57 KB
/
commonjs-require.js
File metadata and controls
97 lines (81 loc) · 2.57 KB
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
(function() {
'use strict';
var globals = typeof window === 'undefined' ? global : window;
if (typeof globals.require === 'function') return;
var _definedModules = {};
var _aliases = {};
var Module = {
_load: function(request, parent) {
var name = Module._resolveFilename(request, parent);
var definition = _definedModules[name];
if (!definition) throw new Error('Cannot find module "' + name + '" from '+ '"' + parent + '"');
if (Module._cache[name]) return Module._cache[name].exports;
var localRequire = createLocalRequire(name);
var module = {id: name, exports: {}};
Module._cache[name] = module;
definition.call(module.exports, module.exports, localRequire, module);
return module.exports;
},
_cache: {},
// TODO: Implement this to behave more like the Node environment
_resolveFilename: function(request, parent) {
var path = expand(dirname(parent), request);
if (_definedModules.hasOwnProperty(path)) return path;
path = expand(path, './index');
if (_definedModules.hasOwnProperty(path)) return path;
return request;
}
};
var require = function(name, loaderPath) {
return Module._load(name, loaderPath);
};
var expand = (function() {
var reg = /^\.\.?(\/|$)/;
return function(root, name) {
var results = [], parts, part;
parts = (reg.test(name) ? root + '/' + name : name).split('/');
for (var i = 0, length = parts.length; i < length; i++) {
part = parts[i];
if (part === '..') {
results.pop();
} else if (part !== '.' && part !== '') {
results.push(part);
}
}
return results.join('/');
};
})();
var createLocalRequire = function(parent) {
return function(name) {
return globals.require(name, parent);
};
};
var dirname = function(path) {
if (!path) return '';
return path.split('/').slice(0, -1).join('/');
};
require.register = require.define = function(bundle, fn) {
if (typeof bundle === 'object') {
for (var key in bundle) {
if (bundle.hasOwnProperty(key)) {
_definedModules[key] = bundle[key];
}
}
} else {
_definedModules[bundle] = fn;
}
};
require.list = function() {
var result = [];
for (var item in _definedModules) {
if (_definedModules.hasOwnProperty(item)) {
result.push(item);
}
}
return result;
};
globals.require = require;
require.define('module', function(exports, require, module) {
module.exports = Module;
});
})();