npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

query-string-hash

v1.0.6

Published

Hash querystring params

Readme

query-string-hash

Encrypt and Decrypt query string

query-string-hash hides the query string params by encrypting them it into two way hash.

How it works?

  • Hides query params from URL by hashing them.
  • Encrypt the query params with a strong key.
  • Decrypt and get JSON by using the same key.

Install

$ npm install query-string-hash 
OR
$ yarn add query-string-hash

This module uses simple-encryptor. to encrypt and decrypt the string and query-string to parse the string.

Usage

At encryption side
const { encryptQueryParams } = require('query-string-hash')
const key = "real secret keys should be long and random"; //Encryption key (optional) should be atleast 16 characters long.

const queryParams = 'name=John&&age=22&&number=9876543210'; //query string params which you want to encrypt
const hash = encryptQueryParams(queryParams, key) // returns the encryptd hash which can be used as a single query string while routing
Or
const hash = encryptQueryParams(queryParams) // key is optional.

// Output 
hash = 0561267fc5adccb1a3898b2d24af78b1eb69b980b5a1180d60494f9d64afccbd081b27110880da8fadbe10ffa3fa4420uO8Ub4lj652Veq5u4DraQ2YH9j96/VjfFMQfJaYE7W05io6I4WQgV8QbZAA+Wc4R
At decryption side
const { decryptQueryParams } = require('query-string-hash')
const key = "real secret keys should be long and random";

const queryParams = decryptQueryParams(hash, key) //returns the decrypted query params which can be used for further processing in JSON format.
Or
const queryParams = decryptQueryParams(hash) //key is optional

// Output 
queryParams = {
  age: '22',
  name: 'John',
  number: '9876543210'
}

Usage with ES6

import { encryptQueryParams, decryptQueryParams } from "query-string-hash";

Options

  1. hash: { type: string, required: true }
  2. key: { type: string, required: false }

Example

Usage with Vue URL https://example.com?name=John&&age=22&&number=9876543210 can be encrypred as below

  import { encryptQueryParams } from 'query-string-hash'
  export default {
      // other options
      methods: {
          exampleFunc() {
				const key = "real secret keys should be long and random";
            	const queryParams = 'name=John&&age=22&&number=9876543210'; 
				const hash = encryptQueryParams(queryParams, key)
                Or
                const hash = encryptQueryParams(queryParams) // key is optional.
            	this.$router.push(`https://example.com?hash=${hash}`)
          }
      }
  }

Above URL becomes https://example.com?hash=0561267fc5adccb1a3898b2d24af78b1eb69b980b5a1180d60494f9d64afccbd081b27110880da8fadbe10ffa3fa4420uO8Ub4lj652Veq5u4DraQ2YH9j96/VjfFMQfJaYE7W05io6I4WQgV8QbZAA+Wc4R

At decryption side Extract query string from https://example.com?hash=0561267fc5adccb1a3898b2d24af78b1eb69b980b5a1180d60494f9d64afccbd081b27110880da8fadbe10ffa3fa4420uO8Ub4lj652Veq5u4DraQ2YH9j96/VjfFMQfJaYE7W05io6I4WQgV8QbZAA+Wc4R

import { decryptQueryParams } from 'query-string-hash'
  export default {
      // other options
      methods: {
          exampleFunc() {
				const key = "real secret keys should be long and random";
                const queryParams = decryptQueryParams(this.$route.query.hash, key)
                Or
                const queryParams = decryptQueryParams(this.$route.query.hash) //key is optional
                
                //play with decrypted params ie; queryParams
          }
      }
  }

Gives us { age: '22', name: 'John', number: '9876543210' }