🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

fast-compressor

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fast-compressor

Fast Easy Compressing Plugin for REST API

1.5.2
latest
Source
npm
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

Fast Compressor

Plugin for Fastify.js

Build Status

A quick and easy solution for REST APIs that serve primarily JSON type. Call the plugin easy simplicity and have compression within your API.

Implemented compression algorithms at the moment: Brotli and Gzip. With preference being Brotli and then Gzip.

API

fastify.fastRESTcomp(clientEncoding_Header: req.headers['accept-encoding'] , JSON_Stringified_OBJ: String)

Example:

fastify.fastRESTcomp(req.headers['accept-encoding'], JSON.stringify({hello: "world"}, null, 4))

Installation

npm i fast-compressor

// Example
...asuming you have Fastify.js server ready and some basic knowledge

// To register the plugin
// Keep in mind to register this plugin on your main (root) Fastify Instance (main Fastify app).
// For more info see https://www.fastify.io/docs/latest/Reference/Encapsulation/
app.register(require('fast-compressor'))

// A example usage on a structured route
module.exports = async function (app,opts,done){
    app.get('/graphql*',{
        schema: { querystring: app.getSchema('/query-validator') },
        attachValidation: true,
    } ,async (req,res) => {
        if (req.validationError) {
            res.code(403).compress({err:"Missing querystring 'query'", info: "Querystring 'query' should be a GraphQl query."})
        }

        const query = req.query.query
        let performTask = await app.graphql(query)

        res.header('Content-Type','application/json')
  
        let { data, encoding, success} = await app.fastRESTcomp( 
            req.headers['accept-encoding'], 
            JSON.stringify(performTask, null, 4)
        )
   
        if(encoding !== null){
            res.header('Content-Encoding', encoding)
        }

        if(success !== null){
            return res.send(
                data
            )
        }
        return res.send(
            {hey: "nothing is compressed..."} 
        )
        

    })
    done()
}
As soon as the client does not have Accept-Encoding present header with 'br' or 'gzip' then nothing is compressed.

Features

  • Brotli Compression
  • Gzip Compression
  • Ideal plugin for JSON REST APIs
  • Backbone compability with clients that doesn't support Brotli or Gzip

This plugin is meant for REST APIs. Me (Z3NTL3), had issues with the '@fastify/compress' plugin even tho it was registered very above and as first on the root fastify context instance on my route it didn't compress my JSON responds to the client. Even when the treshold for compression was the same. Maybe some kind of bug but I got it fixed by writing this Plugin. So I use '@fastify/compress' module for SSR compresssion together with my own module for RAW data compression.

License

Keywords

fastify

FAQs

Package last updated on 29 Nov 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts