A web framework designed for things to come.
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
test
.gitignore
.jshintrc
.npmignore
.travis.yml
LICENSE
README.md
ROADMAP.md
express.js
index.js
package.json
respond.js

README.md

Quinn

A web framework designed for things to come.[1]

import { createServer } from 'http';
import { createApp, respond } from 'quinn';

const app = createApp(req => respond({ body: 'Hello World!' }));

createServer(app).listen(3000);

Concepts

Request handler

A potentially async function that takes a request and returns a response.

function handler(request) {
  return result;
}

Request

An http.IncomingMessage. There are no additional properties or magical extension methods.

DispatchResult

Either a VirtualResponse[2] or undefined. If it's undefined, the handler was unable to handle the given request. E.g. the handler implements routing logic and no route matched the given url.

VirtualResponse

A pass-through stream describing the response that should be returned. While it might have additional utility functions, only the following properties and methods should be relied on:

The behavior of each should match ServerResponse. All headers and the status code should be forwarded when the response is piped to a target. The statusCode by setting the property, the headers by calls to setHeader on the target, one header at a time.

Quinn itself only cares that it has a pipe method which is used to forward the data to a ServerResponse.

Combining Quinn

With Express

import express from 'express';
import { createApp as quinn, respond } from 'quinn/express';

const app = express();
app.get('/quinn-route', quinn(req => respond({ body: 'Hello World!' })));

References

Similar Libraries

Most of these are based on JSGI. Which would make sense if node wouldn't include an http server.


[1] In other words: an experimental mess.

[2] Because buzz word.