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)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |