@studiohyperdrive/shortener
Light-weight JavaScript utility to create an url shortener with.
Last updated 2 years ago by e2o .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @studiohyperdrive/shortener 
SYNC missed versions from official npm registry.

Shortener


Light-weight JavaScript utility to create an url shortener with
Only ~3.5kb, no external dependencies, supports NodeJS 6+ and ES2015+


  • 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:

Key Description Default
targetrequired A 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=SP4C3
none
length Length of the shortened id. 5
alphabet Alphabet 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:

Name Value
alphanumeric abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
alphabetic abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
numeric 0123456789
base58 abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789
base56 abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789
base32 ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
base16 ABCDEF0123456789

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.

Current Tags

  • 1.0.2                                ...           latest (2 years ago)

3 Versions

  • 1.0.2                                ...           2 years ago
  • 1.0.1                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (0)
None
Dev Dependencies (11)
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |