Skip to content

Commit

Permalink
Merge pull request #141 from 3imed-jaberi/improve-koa-with-cabin
Browse files Browse the repository at this point in the history
Improve koa with cabin
  • Loading branch information
niftylettuce authored Sep 30, 2020
2 parents 89d4246 + 19c2b4d commit da9a7dd
Show file tree
Hide file tree
Showing 5 changed files with 576 additions and 575 deletions.
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ See either the [Node](#node) or [Browser](#browser) instructions below for furth
1. Install required and recommended dependencies:
```sh
npm install koa cabin signale pino request-received response-time koa-connect express-request-id
npm install koa cabin signale pino request-received koa-better-response-time koa-better-request-id
```
2. Implement the example code below ([also found here](examples/koa.js)):
Expand All @@ -406,10 +406,9 @@ See either the [Node](#node) or [Browser](#browser) instructions below for furth
const Koa = require('koa');
const Cabin = require('cabin');
const Router = require('koa-router');
const koaConnect = require('koa-connect');
const requestReceived = require('request-received');
const responseTime = require('response-time');
const requestId = require('express-request-id');
const responseTime = require('koa-better-response-time');
const requestId = require('koa-better-request-id');
const { Signale } = require('signale');
const pino = require('pino')({
customLevels: {
Expand Down Expand Up @@ -445,10 +444,10 @@ See either the [Node](#node) or [Browser](#browser) instructions below for furth
app.use(requestReceived);
// adds `X-Response-Time` header to responses
app.use(koaConnect(responseTime()));
app.use(responseTime());
// adds or re-uses `X-Request-Id` header
app.use(koaConnect(requestId()));
app.use(requestId());
// use the cabin middleware (adds request-based logging and helpers)
app.use(cabin.middleware);
Expand Down Expand Up @@ -652,7 +651,7 @@ cabin.info('viewed docs');
#### Server
For server-side logging of requests, the Cabin middleware `cabin.middleware` will automatically log requests for you upon completion. Just make sure you are using `express-request-id` middleware like in the examples above in order for the `X-Request-Id` header to be set (and re-used if already exists, e.g. generated from client side as in below). If you're using Koa make sure to wrap with `koaConnect` as shown in the examples above.
For server-side logging of requests, the Cabin middleware `cabin.middleware` will automatically log requests for you upon completion. Just make sure you are using `express-request-id` middleware like in the examples above in order for the `X-Request-Id` header to be set (and re-used if already exists, e.g. generated from client side as in below). If you're using Koa make sure to use `koa-better-request-id` as shown in the examples above.
#### Browser
Expand Down
9 changes: 4 additions & 5 deletions examples/koa.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
const Koa = require('koa');
const Router = require('koa-router');
const koaConnect = require('koa-connect');
const requestReceived = require('request-received');
const responseTime = require('response-time');
const requestId = require('express-request-id');
const responseTime = require('koa-better-response-time');
const requestId = require('koa-better-request-id');
const { Signale } = require('signale');
const pino = require('pino')({
customLevels: {
Expand Down Expand Up @@ -40,10 +39,10 @@ const cabin = new Cabin({
app.use(requestReceived);

// adds `X-Response-Time` header to responses
app.use(koaConnect(responseTime()));
app.use(responseTime());

// adds or re-uses `X-Request-Id` header
app.use(koaConnect(requestId()));
app.use(requestId());

// use the cabin middleware (adds request-based logging and helpers)
app.use(cabin.middleware);
Expand Down
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@
"husky": "^4.2.5",
"jsdom": "15.x",
"koa": "^2.13.0",
"koa-connect": "^2.1.0",
"koa-router": "^9.4.0",
"koa-better-request-id": "^1.0.0",
"koa-better-response-time": "^1.0.0",
"koa-router": "^9.1.0",
"lint-staged": "^10.2.11",
"lodash": "^4.17.20",
"nyc": "^15.1.0",
Expand Down Expand Up @@ -158,7 +159,7 @@
"url": "https://github.com/cabinjs/cabin"
},
"scripts": {
"ava": "cross-env NODE_ENV=test ava",
"ava": "cross-env NODE_ENV=test ava --timeout=20s",
"browserify": "browserify src/index.js -o dist/cabin.js -s Cabin -g [ babelify --configFile ./.dist.babelrc ]",
"build": "npm run build:clean && npm run build:lib && npm run build:dist",
"build:clean": "rimraf lib dist",
Expand Down
9 changes: 4 additions & 5 deletions test/koa.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,18 @@ const test = require('ava');
const _ = require('lodash');
const Koa = require('koa');
const supertest = require('supertest');
const koaConnect = require('koa-connect');
const requestReceived = require('request-received');
const responseTime = require('response-time');
const requestId = require('express-request-id');
const responseTime = require('koa-better-response-time');
const requestId = require('koa-better-request-id');

const Cabin = require('..');

test.beforeEach.cb((t) => {
const app = new Koa();
const cabin = new Cabin();
app.use(requestReceived);
app.use(koaConnect(responseTime()));
app.use(koaConnect(requestId()));
app.use(responseTime());
app.use(requestId());
app.use(cabin.middleware);
t.context.app = app;
t.context.server = app.listen(() => {
Expand Down
Loading

0 comments on commit da9a7dd

Please sign in to comment.