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.
		
		
		
		
			
				
					37 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					37 lines
				
				1.0 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								/*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;
							 | 
						||
| 
								 | 
							
								}
							 |