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.
		
		
		
		
		
			
		
			
				
					23 lines
				
				605 B
			
		
		
			
		
	
	
					23 lines
				
				605 B
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const fpStackTracePattern = /at\s{1}(?:.*\.)?plugin\s{1}.*\n\s*(.*)/
							 | 
						||
| 
								 | 
							
								const fileNamePattern = /(\w*(\.\w*)*)\..*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = function getPluginName (fn) {
							 | 
						||
| 
								 | 
							
								  if (fn.name.length > 0) return fn.name
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    throw new Error('anonymous function')
							 | 
						||
| 
								 | 
							
								  } catch (e) {
							 | 
						||
| 
								 | 
							
								    return extractPluginName(e.stack)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function extractPluginName (stack) {
							 | 
						||
| 
								 | 
							
								  const m = stack.match(fpStackTracePattern)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // get last section of path and match for filename
							 | 
						||
| 
								 | 
							
								  return m ? m[1].split(/[/\\]/).slice(-1)[0].match(fileNamePattern)[1] : 'anonymous'
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								module.exports.extractPluginName = extractPluginName
							 |