/*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; }