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.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							866 B
						
					
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							866 B
						
					
					
				'use strict';
 | 
						|
 | 
						|
var Module = require('module');
 | 
						|
var path = require('path');
 | 
						|
 | 
						|
module.exports = function requireFromString(code, filename, opts) {
 | 
						|
	if (typeof filename === 'object') {
 | 
						|
		opts = filename;
 | 
						|
		filename = undefined;
 | 
						|
	}
 | 
						|
 | 
						|
	opts = opts || {};
 | 
						|
	filename = filename || '';
 | 
						|
 | 
						|
	opts.appendPaths = opts.appendPaths || [];
 | 
						|
	opts.prependPaths = opts.prependPaths || [];
 | 
						|
 | 
						|
	if (typeof code !== 'string') {
 | 
						|
		throw new Error('code must be a string, not ' + typeof code);
 | 
						|
	}
 | 
						|
 | 
						|
	var paths = Module._nodeModulePaths(path.dirname(filename));
 | 
						|
 | 
						|
	var parent = module.parent;
 | 
						|
	var m = new Module(filename, parent);
 | 
						|
	m.filename = filename;
 | 
						|
	m.paths = [].concat(opts.prependPaths).concat(paths).concat(opts.appendPaths);
 | 
						|
	m._compile(code, filename);
 | 
						|
 | 
						|
	var exports = m.exports;
 | 
						|
	parent && parent.children && parent.children.splice(parent.children.indexOf(m), 1);
 | 
						|
 | 
						|
	return exports;
 | 
						|
};
 |