|
|
|
'use strict';
|
|
|
|
|
|
|
|
exports = module.exports = { makeRequireFunction, stripBOM };
|
|
|
|
|
|
|
|
exports.requireDepth = 0;
|
|
|
|
|
|
|
|
// Invoke with makeRequireFunction.call(module) where |module| is the
|
|
|
|
// Module object to use as the context for the require() function.
|
|
|
|
function makeRequireFunction() {
|
|
|
|
const Module = this.constructor;
|
|
|
|
const self = this;
|
|
|
|
|
|
|
|
function require(path) {
|
|
|
|
try {
|
|
|
|
exports.requireDepth += 1;
|
|
|
|
return self.require(path);
|
|
|
|
} finally {
|
|
|
|
exports.requireDepth -= 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
require.resolve = function(request) {
|
|
|
|
return Module._resolveFilename(request, self);
|
|
|
|
};
|
|
|
|
|
|
|
|
require.main = process.mainModule;
|
|
|
|
|
|
|
|
// Enable support to add extra extension types.
|
|
|
|
require.extensions = Module._extensions;
|
|
|
|
|
|
|
|
require.cache = Module._cache;
|
|
|
|
|
|
|
|
return require;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
|
|
|
|
* because the buffer-to-string conversion in `fs.readFileSync()`
|
|
|
|
* translates it to FEFF, the UTF-16 BOM.
|
|
|
|
*/
|
|
|
|
function stripBOM(content) {
|
|
|
|
if (content.charCodeAt(0) === 0xFEFF) {
|
|
|
|
content = content.slice(1);
|
|
|
|
}
|
|
|
|
return content;
|
|
|
|
}
|