forked from novemberborn/ksuid
-
Notifications
You must be signed in to change notification settings - Fork 1
/
base62.js
23 lines (20 loc) · 764 Bytes
/
base62.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'use strict'
const baseConvertIntArray = require('base-convert-int-array')
const CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
function encode (buffer, fixedLength) {
return baseConvertIntArray(buffer, { from: 256, to: 62, fixedLength })
.map(value => CHARS[value])
.join('')
}
exports.encode = encode
function decode (string, fixedLength) {
// Optimization from https://github.com/andrew/base62.js/pull/31.
const input = Array.from(string, char => {
const charCode = char.charCodeAt(0)
if (charCode < 58) return charCode - 48
if (charCode < 91) return charCode - 55
return charCode - 61
})
return Buffer.from(baseConvertIntArray(input, { from: 62, to: 256, fixedLength }))
}
exports.decode = decode