Socket
Socket
Sign inDemoInstall

koa-connect

Package Overview
Dependencies
Maintainers
2
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa-connect - npm Package Compare versions

Comparing version 1.0.0 to 2.0.0

test/index.js

21

examples/auth.js

@@ -1,14 +0,13 @@

var koa = require('koa');
var connect = require('connect');
var c2k = require('..');
var app = koa();
const Koa = require('koa')
const connect = require('connect')
const c2k = require('..')
const app = new Koa()
app.use(c2k(connect.logger('dev')))
app.use(c2k(connect.basicAuth('username', 'password')))
app.use(c2k(connect.logger('dev')));
app.use(c2k(connect.basicAuth('username', 'password')));
app.use((ctx) => {
ctx.body = 'Hello'
})
app.use(function * () {
this.body = 'Hello';
});
app.listen(3000);
app.listen(3000)

@@ -1,17 +0,15 @@

var koa = require('koa');
var connect = require('connect');
var c2k = require('..');
var app = koa();
const Koa = require('koa')
const connect = require('connect')
const c2k = require('..')
const app = new Koa()
app.use(c2k(connect.logger('dev')))
app.use(c2k(connect.directory(__dirname)))
app.use(c2k(connect.static(__dirname)))
app.use(c2k(connect.logger('dev')));
app.use(c2k(connect.directory(__dirname)));
app.use(c2k(connect.static(__dirname)));
app.use((ctx, next) => {
ctx.body = 'koa'
next()
})
app.use(function * () {
this.body = 'koa'
yield next
});
app.listen(3000);
app.listen(3000)

@@ -1,13 +0,12 @@

var koa = require('koa');
var connect = require('connect');
var c2k = require('..');
var app = koa();
const Koa = require('koa')
const connect = require('connect')
const c2k = require('..')
const app = new Koa()
app.use(c2k(connect.logger('dev')))
app.use(c2k(connect.logger('dev')));
app.use((ctx) => {
ctx.body = 'koa'
})
app.use(function * () {
this.body = 'koa';
});
app.listen(3000);
app.listen(3000)

@@ -1,16 +0,15 @@

var koa = require('koa');
var connect = require('connect');
var c2k = require('..');
var app = koa();
const Koa = require('koa')
const connect = require('connect')
const c2k = require('..')
const app = new Koa()
app.use(c2k(connect.logger('dev')))
app.use(c2k(connect.cookieParser()))
app.use(c2k(connect.cookieSession({ secret: 'keyboard cat'})))
app.use(c2k(connect.logger('dev')));
app.use(c2k(connect.cookieParser()));
app.use(c2k(connect.cookieSession({ secret: 'keyboard cat'})));
app.use(function * () {
var name = this.req.session.name = this.query.name || this.req.session.name;
this.body = name || 'Please, enter your name';
app.use((ctx) {
const name = ctx.req.session.name = ctx.query.name || ctx.req.session.name
ctx.body = name || 'Please, enter your name'
})
app.listen(3000);
app.listen(3000)

@@ -1,16 +0,16 @@

var koa = require('koa');
var c2k = require('..');
var app = koa();
const Koa = require('koa')
const c2k = require('..')
function middleware (req, res, next) {
console.log('connect');
next();
console.log('connect')
next()
}
app.use(c2k(middleware));
const app = new Koa()
app.use(c2k(middleware))
app.use(function * () {
this.body = 'koa';
});
app.use((ctx) {
ctx.body = 'koa'
})
app.listen(3000);
app.listen(3000)

@@ -1,13 +0,38 @@

var connect = require('connect');
/**
* If the middleware function does declare receiving the `next` callback
* assume that it's synchronous and invoke `next` ourselves
*/
function noCallbackHandler(ctx, connectMiddleware, next) {
connectMiddleware(ctx.req, ctx.res)
return next()
}
function c2k (middleware) {
middleware = connect().use(middleware);
/**
* The middleware function does include the `next` callback so only resolve
* the Promise when it's called. If it's never called, the middleware stack
* completion will stall
*/
function withCallbackHandler(ctx, connectMiddleware, next) {
return new Promise((resolve, reject) => {
connectMiddleware(ctx.req, ctx.res, err => {
if (err) reject(err)
else resolve(next())
})
})
}
return function * (next) {
yield middleware.bind(null, this.req, this.res);
yield next;
/**
* Returns a Koa middleware function that varies its async logic based on if the
* given middleware function declares at least 3 parameters, i.e. includes
* the `next` callback function
*/
function koaConnect(connectMiddleware) {
const handler = connectMiddleware.length < 3
? noCallbackHandler
: withCallbackHandler
return function koaConnect(ctx, next) {
return handler(ctx, connectMiddleware, next)
}
}
module.exports = c2k;
module.exports = koaConnect
{
"name": "koa-connect",
"version": "1.0.0",
"description": "Use connect and express middleware in koa",
"version": "2.0.0",
"description": "Use Connect/Express middleware in Koa",
"repository": "vkurchatkin/koa-connect",
"main": "index.js",
"author": "Vladimir Kurchatkin <vladimir.kurchatkin@gmail.com>",
"respository": "vkurchatkin/koa-connect",
"contributors": [
"Louis DeScioli <louis.descioli@gmail.com>"
],
"license": "MIT",
"scripts": {
"test": "mocha tests.js",
"test:watch": "npm run test -- --watch --reporter nyan"
},
"devDependencies": {
"koa": "^0.10.0"
"koa": "^2.0.0",
"mocha": "^2.3.4",
"supertest": "^1.1.0"
},
"dependencies": {
"connect": "^2.25.7"
}
"keywords": [
"koa",
"connect",
"express",
"middleware"
]
}
# koa-connect
Use connect and express middleware in koa
Use [Express](https://github.com/strongloop/express)/[Connect](https://github.com/senchalabs/connect) middleware with Koa.
# Install
## Warning
It is **highly** recommended to use a Koa-specific middleware instead of trying to convert an Express version when they're available. There is a non-trivial difference in the Koa and Express designs and you will inevitably run into some issues. This module is a workaround for the specific cases where the differences can be ignored. Additionally, it also enables library authors to write 1 version of their HTTP middleware.
```bash
npm install koa-connect
### Always use `next`
Express middlewares need to declare and invoke the `next` callback appropriately for the koa-connect integration to work correctly.
### For library authors
If you're attempting to write a framework-agnostic middleware library, be sure to use only core HTTP methods and not any Express-dependent APIs like `res.send`.
## Installation
```sh
npm install koa-connect@next
```
# Usage:
## Usage
See `examples/` for more real-world examples.
```javascript
var koa = require('koa');
var c2k = require('koa-connect');
var app = koa();
const Koa = require('koa')
const c2k = require('koa-connect')
function middleware (req, res, next) {
console.log('connect');
next();
// A generic Express-style middleware function
function connectMiddlware (req, res, next) {
res.writeHead(200, {'Content-Type': 'text/plain'})
res.end('From the Connect middleware')
next()
}
app.use(c2k(middleware));
// A generic Koa v2 middlware, without async/await
function koaMiddlware(ctx, next) {
next()
.then(() => {
// The control flow will bubble back to here, like usual
})
.catch((err) => {
// Error handling from downstream middleware, like usual
})
}
app.use(function * () {
this.body = 'koa';
});
// A generic Koa v2 middlware with async/await
async function koaMiddleware(ctx, next) {
try {
await next();
} catch (e) {
// Normal error handling
}
// Normal control flow
}
app.listen(3000);
const app = new Koa()
app.use(koaMiddlware)
app.use(c2k(connectMiddlware))
app.use((ctx, next) => {
console.log('It will continue on to here')
})
app.listen(3000)
```
## Testing
Tests are in `tests.js` and are made with the [Mocha](https://mochajs.org) framework. You can run them with `npm test` or `npm run test:watch`
# License
MIT
## License
MIT

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc