1.0.2 • Published 6 years ago

@studiohyperdrive/shortener v1.0.2

Weekly downloads
6
License
MIT
Repository
github
Last release
6 years ago
  • Lightweight: ~3.5kb in size, vanilla JavaScript and no external dependencies 🐜
  • Fast: generates 100 shortened urls in less than 5ms 🚤
  • Configurable: lends ultimate control over the output format of the shortened urls 🛠️
  • Tested: 100% code coverage 🎉
  • MIT Licensed: free for personal and commercial use ❤️

How to install

Install with:

  • NPM: npm install @studiohyperdrive/shortener
  • Yarn: yarn add @studiohyperdrive/shortener

How to use

CommonJS (Node 6+)

const Shortener = require("@studiohyperdrive/shortener")

ESModule (ES2015+)

import Shortener from "@studiohyperdrive/shortener"

Configuration

An instance of the shortener can be created by calling the constructor with a configuration.

const shortener = new Shortener(configuration)

The following parameters are accepted in the configuration:

KeyDescriptionDefault
targetrequiredA valid url to append the shortened id to, by default the id is added at the end of the url. Optionally, you can pass a placeholder {id} to reposition the id anywhere in the url. Example: https://short.er?id={0}https://shorter?id=SP4C3none
lengthLength of the shortened id.5
alphabetAlphabet with allowed characters for generating the shortened id, you can also choose one the included presets.base58

Example:

const shortener = new Shortener({
  target: "https://short.er"
  length: 6,
  alphabet: "0123456789abcdefABCDEF"
})

Presets

The alphabet parameter accepts multiple presets:

NameValue
alphanumericabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
alphabeticabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
numeric0123456789
base58abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789
base56abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789
base32ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
base16ABCDEF0123456789

Example:

const shortener = new Shortener({
  target: "https://short.er"
  alphabet: "alphanumeric"
})

.shorten(url)

Shortens a given url.

Example:

const result = shortener.shorten("https://www.google.com");

result output:

{
  id: "6VYN9",
  original: "https://www.google.com",
  target: "https://short.er/6VYN9"
}

.getInfo()

Gets information about the current configuration

Example:

const info = shortener.getInfo();

info output:

{
  config: {
    target: 'https://short.er',
    length: 5,
    alphabet: 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789'
  },
  collisionInfo: {
    // The amount of unique shortened id's that can be generated
    // with the current configuration of length & alphabet
    possibilities: 656356768,

    //The probability of generating a non-unique shortened id
    probability: 1.5235616493254474e-9
  }
}

Examples

A minimal usage example for Express + Mongoose can be found here

Contributing

Feel free to provide feedback, open issues or create pull-requests to this repository.

License

Shortener is MIT licensed by Studio Hyperdrive.

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago