Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2011-01-09 06:09:33 +0300
committerRyan Dahl <ry@tinyclouds.org>2011-01-09 06:09:33 +0300
commit5342e3e925652fdd52da05f98768ac63b4fe7e7b (patch)
tree0381f9dfebfd82ed9779be4c9ece1485b5731958
parent5580907c58554c94224cb63d280c4776a98c79a6 (diff)
expose module wrapper to native modules
-rw-r--r--src/node.js20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/node.js b/src/node.js
index 39b835da7cc..fa9ebefd662 100644
--- a/src/node.js
+++ b/src/node.js
@@ -78,6 +78,11 @@
var internalModuleCache = {};
+ var moduleWrapper =
+ ['(function (exports, require, module, __filename, __dirname) { ',
+ '\n});'];
+
+
// This contains the source code for the files in lib/
// Like, natives.fs is the contents of lib/fs.js
var natives = process.binding('natives');
@@ -85,15 +90,18 @@
// Native modules don't need a full require function. So we can bootstrap
// most of the system with this mini-require.
function requireNative(id) {
+ if (id == 'module') return module;
if (internalModuleCache[id]) return internalModuleCache[id].exports;
if (!natives[id]) throw new Error('No such native module ' + id);
+ var filename = id + '.js';
+
var fn = runInThisContext(
- '(function (module, exports, require) {' + natives[id] + '\n})',
- id + '.js',
+ moduleWrapper[0] + natives[id] + moduleWrapper[1],
+ filename,
true);
var m = {id: id, exports: {}};
- fn(m, m.exports, requireNative);
+ fn(m.exports, requireNative, m, filename);
m.loaded = true;
internalModuleCache[id] = m;
return m.exports;
@@ -354,10 +362,7 @@
} else {
// create wrapper function
- var wrapper =
- '(function (exports, require, module, __filename, __dirname) { ' +
- content +
- '\n});';
+ var wrapper = moduleWrapper[0] + content + moduleWrapper[1];
var compiledWrapper = runInThisContext(wrapper, filename, true);
if (filename === process.argv[1] && global.v8debug) {
@@ -368,6 +373,7 @@
}
};
+ exports.wrapper = moduleWrapper;
// Native extension for .js
extensions['.js'] = function(module, filename) {