From 6987e0168fe71c80a06d0b164ebd72a3afe5cc21 Mon Sep 17 00:00:00 2001 From: Tim Neutkens Date: Sat, 11 May 2019 15:46:13 +0200 Subject: [PATCH] Add new programmatic usage --- README.md | 12 +++++++----- lib/index.js | 3 +-- test/development.js | 3 ++- test/index.js | 7 ++++++- test/production.js | 3 ++- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8c8af409..876ecd77 100644 --- a/README.md +++ b/README.md @@ -244,13 +244,14 @@ module.exports = async (req, res) => { You can use Micro programmatically by requiring Micro directly: ```js +const http = require('http') const micro = require('micro') const sleep = require('then-sleep') -const server = micro(async (req, res) => { +const server = new http.Server(micro(async (req, res) => { await sleep(500) return 'Hello world' -}) +})) server.listen(3000) ``` @@ -259,7 +260,7 @@ server.listen(3000) - This function is exposed as the `default` export. - Use `require('micro')`. -- Returns a [`http.Server`](https://nodejs.org/dist/latest-v6.x/docs/api/http.html#http_class_http_server) that uses the provided `function` as the request handler. +- Returns a function with the `(req, res) => void` signature. That uses the provided `function` as the request handler. - The supplied function is run with `await`. So it can be `async` ##### sendError(req, res, error) @@ -353,17 +354,18 @@ Micro makes tests compact and a pleasure to read and write. We recommend [ava](https://github.com/sindresorhus/ava), a highly parallel Micro test framework with built-in support for async tests: ```js +const http = require('http') const micro = require('micro') const test = require('ava') const listen = require('test-listen') const request = require('request-promise') test('my endpoint', async t => { - const service = micro(async (req, res) => { + const service = new http.Server(micro(async (req, res) => { micro.send(res, 200, { test: 'woot' }) - }) + })) const url = await listen(service) const body = await request(url) diff --git a/lib/index.js b/lib/index.js index fbe7c9fc..e2750a29 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,4 @@ // Native -const server = require('http').Server; const {Stream} = require('stream'); // Packages @@ -23,7 +22,7 @@ function readable(stream) { const {NODE_ENV} = process.env; const DEV = NODE_ENV === 'development'; -const serve = fn => server((req, res) => exports.run(req, res, fn)); +const serve = fn => (req, res) => exports.run(req, res, fn); module.exports = serve; exports = serve; diff --git a/test/development.js b/test/development.js index 8483c630..4b162ff6 100644 --- a/test/development.js +++ b/test/development.js @@ -2,12 +2,13 @@ const test = require('ava'); const request = require('request-promise'); const listen = require('test-listen'); +const http = require('http'); process.env.NODE_ENV = 'development'; const micro = require('../'); const getUrl = fn => { - const srv = micro(fn); + const srv = new http.Server(micro(fn)); return listen(srv); }; diff --git a/test/index.js b/test/index.js index 10a2e748..05cf2b84 100644 --- a/test/index.js +++ b/test/index.js @@ -1,4 +1,5 @@ // Packages +const http = require('http'); const test = require('ava'); const request = require('request-promise'); const sleep = require('then-sleep'); @@ -8,7 +9,11 @@ const micro = require('../'); const {send, sendError, buffer, json} = micro; -const getUrl = fn => listen(micro(fn)); +const getUrl = fn => { + const srv = new http.Server(micro(fn)); + + return listen(srv); +}; test('send(200, )', async t => { const fn = async (req, res) => { diff --git a/test/production.js b/test/production.js index c03b089b..ce64ffe2 100644 --- a/test/production.js +++ b/test/production.js @@ -1,4 +1,5 @@ // Packages +const http = require('http'); const test = require('ava'); const request = require('request-promise'); const listen = require('test-listen'); @@ -7,7 +8,7 @@ process.env.NODE_ENV = 'production'; const micro = require('../'); const getUrl = fn => { - const srv = micro(fn); + const srv = new http.Server(micro(fn)); return listen(srv); };