Show More
Commit Description:
merge
Commit Description:
merge
References:
File last commit:
Show/Diff file:
Action:
node_modules/amdefine/intercept.js
| 36 lines
| 1.0 KiB
| application/javascript
| JavascriptLexer
|
r789 | /*jshint node: true */ | |||
var inserted, | ||||
Module = require('module'), | ||||
fs = require('fs'), | ||||
existingExtFn = Module._extensions['.js'], | ||||
amdefineRegExp = /amdefine\.js/; | ||||
inserted = "if (typeof define !== 'function') {var define = require('amdefine')(module)}"; | ||||
//From the node/lib/module.js source: | ||||
function stripBOM(content) { | ||||
// 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. | ||||
if (content.charCodeAt(0) === 0xFEFF) { | ||||
content = content.slice(1); | ||||
} | ||||
return content; | ||||
} | ||||
//Also adapted from the node/lib/module.js source: | ||||
function intercept(module, filename) { | ||||
var content = stripBOM(fs.readFileSync(filename, 'utf8')); | ||||
if (!amdefineRegExp.test(module.id)) { | ||||
content = inserted + content; | ||||
} | ||||
module._compile(content, filename); | ||||
} | ||||
intercept._id = 'amdefine/intercept'; | ||||
if (!existingExtFn._id || existingExtFn._id !== intercept._id) { | ||||
Module._extensions['.js'] = intercept; | ||||
} | ||||