48 lines
		
	
	
		
			860 B
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			860 B
		
	
	
	
		
			JavaScript
		
	
	
	
'use strict'
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  mapHttpResponse,
 | 
						|
  resSerializer
 | 
						|
}
 | 
						|
 | 
						|
const rawSymbol = Symbol('pino-raw-res-ref')
 | 
						|
const pinoResProto = Object.create({}, {
 | 
						|
  statusCode: {
 | 
						|
    enumerable: true,
 | 
						|
    writable: true,
 | 
						|
    value: 0
 | 
						|
  },
 | 
						|
  headers: {
 | 
						|
    enumerable: true,
 | 
						|
    writable: true,
 | 
						|
    value: ''
 | 
						|
  },
 | 
						|
  raw: {
 | 
						|
    enumerable: false,
 | 
						|
    get: function () {
 | 
						|
      return this[rawSymbol]
 | 
						|
    },
 | 
						|
    set: function (val) {
 | 
						|
      this[rawSymbol] = val
 | 
						|
    }
 | 
						|
  }
 | 
						|
})
 | 
						|
Object.defineProperty(pinoResProto, rawSymbol, {
 | 
						|
  writable: true,
 | 
						|
  value: {}
 | 
						|
})
 | 
						|
 | 
						|
function resSerializer (res) {
 | 
						|
  const _res = Object.create(pinoResProto)
 | 
						|
  _res.statusCode = res.headersSent ? res.statusCode : null
 | 
						|
  _res.headers = res.getHeaders ? res.getHeaders() : res._headers
 | 
						|
  _res.raw = res
 | 
						|
  return _res
 | 
						|
}
 | 
						|
 | 
						|
function mapHttpResponse (res) {
 | 
						|
  return {
 | 
						|
    res: resSerializer(res)
 | 
						|
  }
 | 
						|
}
 |