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
			| 
								 
											3 years ago
										 
									 | 
							
								'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;
							 | 
						||
| 
								 | 
							
								};
							 |