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.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
const { inherits, format } = require('util')
 | 
						|
 | 
						|
function createError (code, message, statusCode = 500, Base = Error) {
 | 
						|
  if (!code) throw new Error('Fastify error code must not be empty')
 | 
						|
  if (!message) throw new Error('Fastify error message must not be empty')
 | 
						|
 | 
						|
  code = code.toUpperCase()
 | 
						|
 | 
						|
  function FastifyError (a, b, c) {
 | 
						|
    if (!new.target) {
 | 
						|
      return new FastifyError(...arguments)
 | 
						|
    }
 | 
						|
    Error.captureStackTrace(this, FastifyError)
 | 
						|
    this.name = 'FastifyError'
 | 
						|
    this.code = code
 | 
						|
 | 
						|
    // more performant than spread (...) operator
 | 
						|
    switch (arguments.length) {
 | 
						|
      case 3:
 | 
						|
        this.message = format(message, a, b, c)
 | 
						|
        break
 | 
						|
      case 2:
 | 
						|
        this.message = format(message, a, b)
 | 
						|
        break
 | 
						|
      case 1:
 | 
						|
        this.message = format(message, a)
 | 
						|
        break
 | 
						|
      case 0:
 | 
						|
        this.message = message
 | 
						|
        break
 | 
						|
      default:
 | 
						|
        this.message = format(message, ...arguments)
 | 
						|
    }
 | 
						|
 | 
						|
    this.statusCode = statusCode || undefined
 | 
						|
  }
 | 
						|
  FastifyError.prototype[Symbol.toStringTag] = 'Error'
 | 
						|
 | 
						|
  FastifyError.prototype.toString = function () {
 | 
						|
    return `${this.name} [${this.code}]: ${this.message}`
 | 
						|
  }
 | 
						|
 | 
						|
  inherits(FastifyError, Base)
 | 
						|
 | 
						|
  return FastifyError
 | 
						|
}
 | 
						|
 | 
						|
module.exports = createError
 | 
						|
module.exports.default = createError
 | 
						|
module.exports.createError = createError
 |