@rss/common-nodejs
Advanced tools
| const uuid = require('uuid/v4'); | ||
| const log = require('./logger'); | ||
| const middleware = (req, res, next) => { | ||
| if (req.url.match(/healthz/) || process.env.NODE_ENV === 'test') { | ||
| return next(); | ||
| } | ||
| const requestId = req.headers['x-request-id'] || uuid(); | ||
| req.headers['x-request-id'] = requestId; | ||
| req.log = log.child({ req_id: requestId }, true); | ||
| res.on('finish', () => log.info({ req_id: requestId, req, res })); | ||
| res.on('close', () => log.info({ req_id: requestId, req, res })); | ||
| return next(); | ||
| }; | ||
| module.exports = middleware; |
| const bunyan = require('bunyan'); | ||
| const log = bunyan.createLogger({ | ||
| name: 'express', | ||
| serializers: { | ||
| req: (req) => { | ||
| if (!req || !req.connection) { | ||
| return req; | ||
| } | ||
| let user = null; | ||
| if (req.user) { | ||
| const { userId, firstName, lastName, email } = req.user; | ||
| user = { | ||
| userId, | ||
| firstName, | ||
| lastName, | ||
| email, | ||
| }; | ||
| } | ||
| return { | ||
| method: req.method, | ||
| url: req.url, | ||
| headers: { | ||
| referer: req.headers.referer, | ||
| 'user-agent': req.headers['user-agent'], | ||
| 'x-request-id': req.headers['x-request-id'], | ||
| }, | ||
| remoteAddress: req.connection.remoteAddress, | ||
| user, | ||
| body: req.body, | ||
| }; | ||
| }, | ||
| res: (res) => { | ||
| if (!res || !res.statusCode) return res; | ||
| return { | ||
| statusCode: res.statusCode, | ||
| }; | ||
| }, | ||
| err: bunyan.stdSerializers.err, | ||
| }, | ||
| }); | ||
| module.exports = log; |
+2
-2
@@ -1,2 +0,2 @@ | ||
| // constant - core | ||
| exports.buyanMiddleware = require('./src/buyan-middleware'); | ||
| exports.bunyanMiddleware = require('./src/bunyan-middleware'); | ||
| exports.log = require('./src/logger'); |
+4
-6
| { | ||
| "name": "@rss/common-nodejs", | ||
| "version": "0.0.2", | ||
| "version": "0.0.3", | ||
| "description": "common nodejs library", | ||
@@ -10,13 +10,11 @@ "author": "Risk & Safety Solution", | ||
| "scripts": { | ||
| "preversion": "npm run build", | ||
| "spec": "NODE_ENV=test jest --testMatch='**/*.spec.js'", | ||
| "spec:watch": "NODE_ENV=test jest --watch --testMatch='**/*.spec.js" | ||
| "preversion": "npm run build" | ||
| }, | ||
| "dependencies": { | ||
| "bunyan": "1.8.12", | ||
| "uuid": "^3.3.2" | ||
| "uuid": "3.3.2" | ||
| }, | ||
| "devDependencies": { | ||
| "jest": "22.4.2" | ||
| "jest": "23.6.0" | ||
| } | ||
| } |
-41
| const express = require('express'); | ||
| const buyanMiddleware = require('./src/buyan-middleware'); | ||
| const log = require('./src/logger'); | ||
| // express server | ||
| const app = express(); | ||
| app.use(buyanMiddleware({ name: 'graph' })); | ||
| app.use('/health', (req, res) => { | ||
| req.log.info('hello world'); | ||
| res.send(); | ||
| }); | ||
| app.use('/healthz', (req, res) => { | ||
| res.send(); | ||
| }); | ||
| // catch 404 and forward to error handler | ||
| app.use((req, res, next) => { | ||
| const err = new Error('Not Found'); | ||
| err.status = 404; | ||
| next(err); | ||
| }); | ||
| // error handler: only print stack on development enviroment | ||
| /* eslint-disable */ | ||
| app.use((err, req, res, next) => { | ||
| log.error(err); | ||
| res.status(err.status || 500); | ||
| res.send({ | ||
| message: err.message, | ||
| error: process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'prod' ? err.stack : {}, | ||
| }); | ||
| }); | ||
| app.listen(3000); | ||
| log.info(`Express server listening on port 3000 in ${app.get('env')} mode`); | ||
| module.exports = app; |
| const bunyan = require('bunyan'); | ||
| const uuid = require('uuid/v4'); | ||
| const middleware = (opt) => { | ||
| const log = bunyan.createLogger({ | ||
| name: opt.name || 'express', | ||
| serializers: { | ||
| req: (req) => { | ||
| if (!req || !req.connection) { | ||
| return req; | ||
| } | ||
| let user = null; | ||
| if (req.user) { | ||
| const { userId, firstName, lastName, email } = req.user; | ||
| user = { | ||
| userId, | ||
| firstName, | ||
| lastName, | ||
| email, | ||
| }; | ||
| } | ||
| return { | ||
| method: req.method, | ||
| url: req.url, | ||
| headers: { | ||
| referer: req.headers.referer, | ||
| 'user-agent': req.headers['user-agent'], | ||
| 'x-request-id': req.headers['x-request-id'], | ||
| }, | ||
| remoteAddress: req.connection.remoteAddress, | ||
| user, | ||
| body: req.body, | ||
| }; | ||
| }, | ||
| res: (res) => { | ||
| if (!res || !res.statusCode) return res; | ||
| return { | ||
| statusCode: res.statusCode, | ||
| }; | ||
| }, | ||
| err: bunyan.stdSerializers.err, | ||
| }, | ||
| }); | ||
| return (req, res, next) => { | ||
| if (req.url.match(/healthz/) || process.env.NODE_ENV === 'test') { | ||
| return next(); | ||
| } | ||
| const requestId = req.headers['x-request-id'] || uuid(); | ||
| req.headers['x-request-id'] = requestId; | ||
| req.log = log.child({ req_id: requestId }, true); | ||
| res.on('finish', () => log.info({ req_id: requestId, req, res })); | ||
| res.on('close', () => log.info({ req_id: requestId, req, res })); | ||
| return next(); | ||
| }; | ||
| }; | ||
| module.exports = middleware; |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
2
-50%2020
-36.04%57
-35.96%+ Added
- Removed
Updated