https://github.com/neilvallon/shortening.js
Fat free URLs
https://github.com/neilvallon/shortening.js
base32 base64 base64url bijective encoder javascript js url-shortener
Last synced: 8 months ago
JSON representation
Fat free URLs
- Host: GitHub
- URL: https://github.com/neilvallon/shortening.js
- Owner: neilvallon
- License: mit
- Created: 2019-05-01T01:02:20.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-05-07T19:27:29.000Z (about 7 years ago)
- Last Synced: 2025-10-10T15:49:27.428Z (8 months ago)
- Topics: base32, base64, base64url, bijective, encoder, javascript, js, url-shortener
- Language: JavaScript
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Shortening.js
[](https://travis-ci.com/neilvallon/shortening.js) [](https://www.npmjs.com/package/shortening) 
A bijective base encoder for creating short URLs and identifiers.
## Usage
#### shortening.New()
```
// Input: {string} charSet: [length = 32|64]
// Output: {coder} Encoder/Decoder object or throw
const base32hex = shortening.New("0123456789ABCDEFGHIJKLMNOPQRSTUV")
base32hex.Encode(1024); // "V0"
base32hex.Decode("SHORT") // 31025053
```
#### coder.Encode()
```
// Input: {number} uint32[0, 4294967295]
// Output: {string|undefined} undefined for out of range input
shortening.Std32.Encode(1024); // "7A"
shortening.Std64.Encode(1024); // "PA"
shortening.Std64.Encode(-1); // undefined
shortening.Std64.Encode(4294967296); // undefined
```
#### coder.Decode()
```
// Input: {string}
// Output: {number} uint32[0, 4294967295] | negative sentinel
shortening.Std32.Decode("SHORT"); // 20201043
shortening.Std64.Decode("SHORT"); // 320926867
shortening.Std64.Decode(""); // -1
```
## Performance
* Node v12.1.0
* Intel Xeon X5675 - 3.06 GHz
```
Exhaustive Encode+Decode test:
Std32
11m13.84s / 2^32 = 156.9ns
Std64
10m11.24s / 2^32 = 142.3ns
$ npm run bench
Std32.Encode 119ns ± 1%
Std32.Decode 49.6ns ± 1%
Std64.Encode 98.4ns ± 1%
Std64.Decode 45.2ns ± 0%
```