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.
		
		
		
		
		
			
		
			
				
					48 lines
				
				835 B
			
		
		
			
		
	
	
					48 lines
				
				835 B
			| 
											3 years ago
										 | '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.statusCode | ||
|  |   _res.headers = res.getHeaders ? res.getHeaders() : res._headers | ||
|  |   _res.raw = res | ||
|  |   return _res | ||
|  | } | ||
|  | 
 | ||
|  | function mapHttpResponse (res) { | ||
|  |   return { | ||
|  |     res: resSerializer(res) | ||
|  |   } | ||
|  | } |