25 lines
		
	
	
		
			725 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			725 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| 'use strict'
 | |
| module.exports = Base => class extends Base {
 | |
|   warn (code, message, data = {}) {
 | |
|     if (this.file) {
 | |
|       data.file = this.file
 | |
|     }
 | |
|     if (this.cwd) {
 | |
|       data.cwd = this.cwd
 | |
|     }
 | |
|     data.code = message instanceof Error && message.code || code
 | |
|     data.tarCode = code
 | |
|     if (!this.strict && data.recoverable !== false) {
 | |
|       if (message instanceof Error) {
 | |
|         data = Object.assign(message, data)
 | |
|         message = message.message
 | |
|       }
 | |
|       this.emit('warn', data.tarCode, message, data)
 | |
|     } else if (message instanceof Error) {
 | |
|       this.emit('error', Object.assign(message, data))
 | |
|     } else {
 | |
|       this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))
 | |
|     }
 | |
|   }
 | |
| }
 |