You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							36 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							36 lines
						
					
					
						
							1.0 KiB
						
					
					
				/*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; | 
						|
}
 | 
						|
 |