fix #2348 packaged require breaks node-webkit
This commit is contained in:
parent
385a285c58
commit
388f0235b7
1 changed files with 37 additions and 50 deletions
|
|
@ -38,69 +38,62 @@
|
|||
|
||||
var ACE_NAMESPACE = "";
|
||||
|
||||
var global = (function() {
|
||||
return this;
|
||||
})();
|
||||
var global = (function() { return this; })();
|
||||
if (!global && typeof window != "undefined") global = window; // strict mode
|
||||
|
||||
|
||||
if (!ACE_NAMESPACE && typeof requirejs !== "undefined")
|
||||
return;
|
||||
|
||||
|
||||
var _define = function(module, deps, payload) {
|
||||
if (typeof module !== 'string') {
|
||||
if (_define.original)
|
||||
_define.original.apply(window, arguments);
|
||||
var define = function(module, deps, payload) {
|
||||
if (typeof module !== "string") {
|
||||
if (define.original)
|
||||
define.original.apply(this, arguments);
|
||||
else {
|
||||
console.error('dropping module because define wasn\'t a string.');
|
||||
console.error("dropping module because define wasn\'t a string.");
|
||||
console.trace();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (arguments.length == 2)
|
||||
payload = deps;
|
||||
|
||||
if (!_define.modules) {
|
||||
_define.modules = {};
|
||||
_define.payloads = {};
|
||||
if (!define.modules[module]) {
|
||||
define.payloads[module] = payload;
|
||||
define.modules[module] = null;
|
||||
}
|
||||
|
||||
_define.payloads[module] = payload;
|
||||
_define.modules[module] = null;
|
||||
};
|
||||
|
||||
define.modules = {};
|
||||
define.payloads = {};
|
||||
|
||||
/**
|
||||
* Get at functionality define()ed using the function above
|
||||
*/
|
||||
var _require = function(parentId, module, callback) {
|
||||
if (Object.prototype.toString.call(module) === "[object Array]") {
|
||||
if (typeof module === "string") {
|
||||
var payload = lookup(parentId, module);
|
||||
if (payload != undefined) {
|
||||
callback && callback();
|
||||
return payload;
|
||||
}
|
||||
} else if (Object.prototype.toString.call(module) === "[object Array]") {
|
||||
var params = [];
|
||||
for (var i = 0, l = module.length; i < l; ++i) {
|
||||
var dep = lookup(parentId, module[i]);
|
||||
if (!dep && _require.original)
|
||||
return _require.original.apply(window, arguments);
|
||||
if (dep == undefined && require.original)
|
||||
return;
|
||||
params.push(dep);
|
||||
}
|
||||
if (callback) {
|
||||
callback.apply(null, params);
|
||||
}
|
||||
return callback && callback.apply(null, params) || true;
|
||||
}
|
||||
else if (typeof module === 'string') {
|
||||
var payload = lookup(parentId, module);
|
||||
if (!payload && _require.original)
|
||||
return _require.original.apply(window, arguments);
|
||||
};
|
||||
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
|
||||
return payload;
|
||||
}
|
||||
else {
|
||||
if (_require.original)
|
||||
return _require.original.apply(window, arguments);
|
||||
}
|
||||
var require = function(module, callback) {
|
||||
var packagedModule = _require("", module, callback);
|
||||
if (packagedModule == undefined && require.original)
|
||||
return require.original.apply(this, arguments);
|
||||
return packagedModule;
|
||||
};
|
||||
|
||||
var normalizeModule = function(parentId, moduleName) {
|
||||
|
|
@ -119,7 +112,6 @@ var normalizeModule = function(parentId, moduleName) {
|
|||
moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
|
||||
}
|
||||
}
|
||||
|
||||
return moduleName;
|
||||
};
|
||||
|
||||
|
|
@ -128,12 +120,11 @@ var normalizeModule = function(parentId, moduleName) {
|
|||
* definition function if needed.
|
||||
*/
|
||||
var lookup = function(parentId, moduleName) {
|
||||
|
||||
moduleName = normalizeModule(parentId, moduleName);
|
||||
|
||||
var module = _define.modules[moduleName];
|
||||
var module = define.modules[moduleName];
|
||||
if (!module) {
|
||||
module = _define.payloads[moduleName];
|
||||
module = define.payloads[moduleName];
|
||||
if (typeof module === 'function') {
|
||||
var exports = {};
|
||||
var mod = {
|
||||
|
|
@ -149,19 +140,15 @@ var lookup = function(parentId, moduleName) {
|
|||
|
||||
var returnValue = module(req, exports, mod);
|
||||
exports = returnValue || mod.exports;
|
||||
_define.modules[moduleName] = exports;
|
||||
delete _define.payloads[moduleName];
|
||||
define.modules[moduleName] = exports;
|
||||
delete define.payloads[moduleName];
|
||||
}
|
||||
module = _define.modules[moduleName] = exports || module;
|
||||
module = define.modules[moduleName] = exports || module;
|
||||
}
|
||||
return module;
|
||||
};
|
||||
|
||||
function exportAce(ns) {
|
||||
var require = function(module, callback) {
|
||||
return _require("", module, callback);
|
||||
};
|
||||
|
||||
var root = global;
|
||||
if (ns) {
|
||||
if (!global[ns])
|
||||
|
|
@ -170,13 +157,13 @@ function exportAce(ns) {
|
|||
}
|
||||
|
||||
if (!root.define || !root.define.packaged) {
|
||||
_define.original = root.define;
|
||||
root.define = _define;
|
||||
define.original = root.define;
|
||||
root.define = define;
|
||||
root.define.packaged = true;
|
||||
}
|
||||
|
||||
if (!root.require || !root.require.packaged) {
|
||||
_require.original = root.require;
|
||||
require.original = root.require;
|
||||
root.require = require;
|
||||
root.require.packaged = true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue