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