fastify-prettier
A simple and lightweight beautifier plugin for Fastify.
fastify-prettier
has support of beautifying payloads via query parameter to make responses more readable for developers/humans. Decoratorprettier
can also be used anywhere in the fastify server as the content beautifier. The plugin itself uses prettier under the hood and is capable of parsing/formatting anything that prettier can.
fastify-prettier
uses onSend
fastify hook to beautify the response payload before it gets sent.
Note: streams
and buffers
are excluded in beautification process.
Note: fastify v3
compatibility shipped with v1.1.5
Options
Name | Type | Default | Description |
---|---|---|---|
alwaysOn | boolean | false | To make all the payloads beautified in anyway |
fallbackOnError | boolean | true | If something bad happens, send the original payload. If its false , an error will be thrown |
overrideContentLength | boolean | true | Re-calculate content-length header for the beautified response |
query | object | { name: 'pretty', value: 'true' } |
The query parameter that triggers the plugin to beautify the outgoing payload |
enableOnSendHook | boolean | true | Allow the plugin to get injected into fastify onSend hook to beautify outgoing responses. The prettier decorator can still be used even if that option is disabled |
prettierOpts | object | { tabWidth: 2, parser: 'json-stringify' } |
Please take a look prettier official documentation for more information |
Decorator
Feel free to use prettier
decorator which beautifies the given content through the provided options whenever you need.
// example of using prettier decoratorconst response = fastify
Examples
// get required modulesconst fastify = const fastifyPrettier = // register fastify-prettier pluginfastify // test fastify server routefastify // initialize the fastify serverfastify // ------------------------------- // http://localhost:3000 -> will print out below result/*{"blackLivesMatter":true,"favSinger":"Ahmet Kaya"}*/ // http://localhost:3000?pretty=true -> will print out below result/*{ "blackLivesMatter": true, "favSinger": "Ahmet Kaya"}*/
You are allowed to change the query parameter option.
// register fastify-prettier pluginfastify // ------------------------------- // http://localhost:3000 -> will print out below result/*{"blackLivesMatter":true,"favSinger":"Ahmet Kaya"}*/ // http://localhost:3000?beautify=yes -> will print out below result/*{ "blackLivesMatter": true, "favSinger": "Ahmet Kaya"}*/
You can enable beautification for all outgoing payloads regardless the query parameter.
// register fastify-prettier pluginfastify // ------------------------------- // http://localhost:3000 -> will print out below result/*{ "blackLivesMatter": true, "favSinger": "Ahmet Kaya"}*/
Installation
npm install fastify-prettier
Contribution
Contributions and pull requests are kindly welcomed!
License
This project is licensed under the terms of the MIT license.