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