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.
		
		
		
		
		
			
		
			
				
					93 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					93 lines
				
				1.8 KiB
			| 
											3 years ago
										 | 'use strict' | ||
|  | 
 | ||
|  | module.exports = { | ||
|  |   mapHttpRequest, | ||
|  |   reqSerializer | ||
|  | } | ||
|  | 
 | ||
|  | const rawSymbol = Symbol('pino-raw-req-ref') | ||
|  | const pinoReqProto = Object.create({}, { | ||
|  |   id: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: '' | ||
|  |   }, | ||
|  |   method: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: '' | ||
|  |   }, | ||
|  |   url: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: '' | ||
|  |   }, | ||
|  |   query: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: '' | ||
|  |   }, | ||
|  |   params: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: '' | ||
|  |   }, | ||
|  |   headers: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: {} | ||
|  |   }, | ||
|  |   remoteAddress: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: '' | ||
|  |   }, | ||
|  |   remotePort: { | ||
|  |     enumerable: true, | ||
|  |     writable: true, | ||
|  |     value: '' | ||
|  |   }, | ||
|  |   raw: { | ||
|  |     enumerable: false, | ||
|  |     get: function () { | ||
|  |       return this[rawSymbol] | ||
|  |     }, | ||
|  |     set: function (val) { | ||
|  |       this[rawSymbol] = val | ||
|  |     } | ||
|  |   } | ||
|  | }) | ||
|  | Object.defineProperty(pinoReqProto, rawSymbol, { | ||
|  |   writable: true, | ||
|  |   value: {} | ||
|  | }) | ||
|  | 
 | ||
|  | function reqSerializer (req) { | ||
|  |   // req.info is for hapi compat.
 | ||
|  |   const connection = req.info || req.socket | ||
|  |   const _req = Object.create(pinoReqProto) | ||
|  |   _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined))) | ||
|  |   _req.method = req.method | ||
|  |   // req.originalUrl is for expressjs compat.
 | ||
|  |   if (req.originalUrl) { | ||
|  |     _req.url = req.originalUrl | ||
|  |     _req.query = req.query | ||
|  |     _req.params = req.params | ||
|  |   } else { | ||
|  |     // req.url.path is  for hapi compat.
 | ||
|  |     _req.url = req.path || (req.url ? (req.url.path || req.url) : undefined) | ||
|  |   } | ||
|  |   _req.headers = req.headers | ||
|  |   _req.remoteAddress = connection && connection.remoteAddress | ||
|  |   _req.remotePort = connection && connection.remotePort | ||
|  |   // req.raw is  for hapi compat/equivalence
 | ||
|  |   _req.raw = req.raw || req | ||
|  |   return _req | ||
|  | } | ||
|  | 
 | ||
|  | function mapHttpRequest (req) { | ||
|  |   return { | ||
|  |     req: reqSerializer(req) | ||
|  |   } | ||
|  | } |