Logo
\ `hek-yĆ¼-ap \ v0.8.1

# createRenderer

import { createRenderer } from 'kequapp';
key description default
contentType * Content type
action * Action

Renderers are responsible for finalizing the response to the client. When an action returns a value, a renderer is invoked to send the response. You can create custom renderers for different content types.

The createRenderer function must specify a contentType ('application/json', 'text/html', etc.) and an action to manipulate the information into a response.

The first parameter of an renderer is the value payload that was returned. Here is a simple example of an HTML renderer:

createRenderer({
    contentType: 'text/html',
    action: (payload, { req, res }) => {
        const html = myMarkupRenderer(payload);

        res.setHeader('Content-Length', Buffer.byteLength(html));

        // finalize response
        if (req.method === 'HEAD') {
            res.end();
        } else {
            res.end(html);
        }
    },
});

For good examples of how to write a renderer see this repo's /src/built-in directory.

Kequapp comes with a renderer for 'application/json' and 'text/*', however these can be overriden by writting your own renderers with those content types.